본문 바로가기
  • 실행력이 모든걸 결정한다
반응형

DB42

MySQLSyntaxErrorException: Table doesn't exist 에러 분명히 테이블이 존재하는데 위와 같은 오류가 뜬다면 다음과 같은 경우도 의심해보자. 여러분이 연결할 데이터베이스 테이블명과 소스 코드상의 테이블명이 대소문자까지 일치하는가? 사실, MySQL 8.0 버전부터는 DB 파라미터의 lower_case_table_names 속성의 기본값이 0으로 지정된다. lower_case_table_names 값이 0이라면 테이블명의 대소문자를 구별하고, lower_case_table_names 값이 1이라면 테이블명의 대소문자를 구별하지 않는다. 즉, 여러분들이 lower_case_table_names 속성값을 1로 바꾸거나, 테이블명의 대소문자를 맞춰주면 해결되는 문제다. 2022. 1. 3.
[SQL-SUM,MAX,MIN, 난이도 하] 동물 수 구하기 해설 : "ANIMAL_INS" 테이블의 레코드 수를 조회하면 된다. SELECT COUNT(*) AS count FROM ANIMAL_INS; SELECT : 조회하라 COUNT(*) AS count : 모든 레코드들의 개수를 (조회 시 필드명은 "count"로 표시함) FROM ANIMAL_INS : 테이블 "ANIMAL_INS" 에서 2020. 12. 8.
[SQL-SUM,MAX,MIN, 난이도 중하] 중복 제거하기 해설 : DISTINCT를 활용할 수 있어야 하는 문제이다. 테이블 "ANIMAL_INS" 에서 NAME 값이 NULL인 레코드는 제외하고, NAME이 중복되는 레코드들이 있다면 하나만 남겨두고 추출하면 된다. 최종적으로 추출된 레코드의 개수를 출력하면 된다. SELECT COUNT(DISTINCT NAME) AS count FROM ANIMAL_INS WHERE NAME IS NOT NULL; SELECT : 조회하라 COUNT(DISTINCT NAME) AS count : "NAME" 필드를 가지는 레코드의 개수를 출력하되, 중복되는 레코드들이 있다면 하나만 남기며 (조회 시 필드명은 "count" 로 표시함) FROM ANIMAL_INS : "ANIMAL_INS" 테이블로부터 WHERE NAME I.. 2020. 12. 8.
[SQL-String, Date, 난이도 중하] 루시와 엘라 찾기 해설 : 테이블 "ANIMAL_INS"의 NAME 값이 "Lucy", "Ella", "Pickle", "Rogan", "Sabrina", "Mitty" 중 하나인 레코드들을 추출하여 문제에서 원하는 "ANIMAL_ID", "NAME", "SEX_UPON_INTAKE" 필드를 조회하면 된다. SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME="Lucy" OR NAME="Ella" OR NAME="Pickle" OR NAME="Rogan" OR NAME="Sabrina" OR NAME="Mitty" ORDER BY ANIMAL_ID; SELECT : 조회하라 ANIMAL_ID, NAME, SEX_UPON_INTAKE : "ANIMAL_ID.. 2020. 12. 8.
[SQL-String, Date, 난이도 중하] 이름에 el이 들어가는 동물 찾기 해설 : 테이블 "ANIMAL_INS" 에서 NAME 필드 값에 "EL" 이 포함되면서 ANIMAL_TYPE이 "DOG" 인 레코드들을 NAME을 기준으로 오름차 순으로 정렬하고, 문제에서 요구하는 "ANIMAL_ID", "NAME" 필드를 조회하면 된다. SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NAME LIKE '%EL%' AND ANIMAL_TYPE="DOG" ORDER BY NAME; SELECT : 조회하라 ANIMAL_ID, NAME : "ANIMAL_ID", "NAME" 필드명을 FROM ANIMAL_INS : "ANIMAL_INS" 테이블으로부터 WHERE NAME LIKE '%EL%' AND ANIMAL_TYPE="DOG" : NAME 필드 값에 ".. 2020. 12. 8.
[SQL-String, Date, 난이도 중하] 중성화 여부 파악하기 해설 : 조건문과 LIKE문을 활용할 수 있는가 묻는 문제이다. "ANIMAL_INS" 테이블에서 "ANIMAL_ID", "NAME", "SEX_UPON_INTAKE" 필드를 조회하면 되는데, "SEX_UPON_INTAKE" 필드 같은 경우에는 중성화된 동물은 'O', 그렇지 않은 동물은 'X' 로 표시하면 된다. "SEX_UPON_INTAKE" 필드 값(문자열)이 "Neutered" 또는 "Spayed" 라는 단어로 시작한다면 중성화된 동물이라고 한다. 단어 포함 여부를 판단하기 위해 LIKE문을 쓰는 것이고, 이 여부를 판단하여 주어진 조건 별로 처리 하기 위해 조건문을 쓰는 것이다. 대표적인 조건문으로 IF, CASE가 있는데 이 2가지를 사용하는 방법을 각각 소개할 것이다. 1) 조건문으로 IF를.. 2020. 12. 8.
[SQL-String, Date, 난이도 중하] DATETIME에서 DATE로 형 변환 - 양식 - 해설 : 테이블 "ANIMAL_INS" 에서 문제에서 원하는 "ANIMAL_ID", "NAME", "DATETIME" 필드를 출력 하면 되는데, DATETIME 에서 형식을 조금 바꿔야 한다. "0000-00-00 00:00:00" -> "0000-00-00" 해당 문제는 LEFT 함수를 이용하면 된다. 왼쪽에서부터 10개 만큼의 문자들을 추출해내는 것이다. SELECT ANIMAL_ID, NAME, LEFT(DATETIME,10) FROM ANIMAL_INS; SELECT : 조회하라 ANIMAL_ID, NAME, LEFT(DATETIME, 10) : "ANIMAL_ID", "NAME", "DATETIME" 필드를, 특히 "DATETIME" 필드는 왼쪽으로 부터 10개의 문자만큼 추출하여 .. 2020. 12. 8.
[SQL-String, Date, 난이도 중] 오랜 기간 보호한 동물(2) 테이블 테이블 문제 설명 해설 : 두 테이블 "ANIMAL_INS" 와 "ANIMAL_OUTS" 를 ANIMAL_ID에 대해 JOIN 해주면 ANIMAL_ID 별로 보호소에 들어온 시각과 입양 간 시각을 한 레코드에 조회할 수 있다. 그리고 여기서 보호 기간이 가장 긴 순으로 정렬을 해야 하는데, 보호 기간은 단순히 ANIMAL_OUTS의 DATETIME 값에서 ANIMAL_INTS의 DATATIME 값을 빼면 구할 수 있다. 이를 기준으로 내림차 순으로 정렬했을 때의 상위 2개 레코드를 추출해서 문제에서 원하는 정보인 ANIMAL_ID와 NAME 을 조회하면 된다. SELECT AI.ANIMAL_ID, AI.NAME FROM ANIMAL_INS AI JOIN ANIMAL_OUTS AO ON AI.ANI.. 2020. 12. 8.
[SQL-GROUP BY, 난이도 중하] 고양이와 개는 몇 마리 있을까 해설 : 동물 종류 별 마리 수를 조회하는 문제이다. 그래서 "ANIMAL_TYPE" 필드를 기준으로 그룹핑 해줘야 한다. 테이블을 보면 동물 종류는 개(Dog), 고양이(Cat) 밖에 없어서 WHERE 문은 쓰지 않아도 된다. "Cat"이 "Dog"보다 먼저 조회 되게 "ANIMAL_TYPE" 필드를 기준으로 오름차순 하여, 최종적으로 문제에서 원하는 "ANIMAL_TYPE" 필드와 ANIMAL_TYPE 별로 그룹핑된 컬럼 수를 조회하면 된다. SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) count FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE; SELECT : 조회하라 ANIMAL_TYPE, COUNT(ANIMAL_TY.. 2020. 12. 8.