<ANIMAL_INS>
NAME | TYPE | NULLABLE |
---|---|---|
ANIMAL_ID | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
INTAKE_CONDITION | VARCHAR(N) | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_INTAKE | VARCHAR(N) | FALSE |
DESC
를 칼럼명 뒤에다 붙이면 내림차순SELECT [칼럼명] FROM [테이블명] ORDER BY [칼럼명1], [칼럼명2]
# name 오름차순, 같으면 animal_id 내림차순으로 정렬
SELECT name, datetime FROM animal_ins ORDER BY name DESC, animal_id
# 숫자만큼의 행 조회
SELECT [칼럼명] FROM [테이블명] LIMIT [숫자]
# (a+1)번째 행부터 b개의 행 조회
SELECT [칼럼명] FROM [테이블명] LIMIT [숫자a], [숫자b]
# 동물 보호소에 가장 먼저 들어온 3 동물의 이름
SELECT name FROM animal_ins ORDER BY datetime LIMIT 3
[칼럼] IS NULL
SELECT [칼럼명] FROM [테이블명] WHERE [칼럼명] IS NULL
IFNULL
SELECT
문에 많이 사용SELECT IFNULL([칼럼명], ["대체할 값"]) FROM [테이블명]
# 이름이 NULL값이면 "No name"으로 표기해서 조회
SELECT animal_type, IFNULL(name, "No name") AS name FROM animal_ins
ORDER BY animal_id
SELECT
에 사용HAVING
에도 사용WHERE
에는 사용X# SELECT절에만 사용
SELECT MAX([칼럼명]) FROM [테이블명]
# GROUP BY와 같이 사용
SELECT COUNT([칼럼명]) FROM [테이블명]
GROUP BY [칼럼명]
HAVING COUNT([칼럼명]) >= 3
# 가장 최근에 들어온 동물은 언제 들어왔는지 조회
SELECT MAX(datetime) FROM animal_ins
SELECT
절에서 사용SELECT DISTINCT [칼럼명] FROM [테이블명]
# 보호소 동물의 이름 개수 카운트, 이름이 없으면 집계X, 중복되는 이름은 하나로 친다
SELECT COUNT(DISTINCT name) AS count FROM animal_ins
WHERE name IS NOT NULL
HAVING
으로 조건 처리SELECT [칼럼명] FROM [테이블명]
GROUP BY [칼럼명]
HAVING [집계함수가 쓰인 조건문]
# 두번 이상 쓰인 이름과 해당 이름이 쓰인 횟수 조회, 이름이 없으면 집계x
SELECT name,COUNT(*) count FROM animal_ins
WHERE name IS NOT NULL
GROUP BY name
HAVING count > 1
ORDER BY name
%
와 _
를 사용해서 위치와 길이 판별 가능SELECT [칼럼명] FROM [테이블명] WHERE [칼럼명] LIKE ["%문자열"]
LIKE "%ab" # ab로 끝나는 문자열
LIKE "ab%" # ab로 시작하는 문자열
LIKE "%ab%" # ab를 포함하는 모든 문자열
LIKE "_a%" # 두번째 자리가 a인 모든 문자열
LIKE "a_%_%" # a로 시작하는 길이가 3인 문자열
# animal_type이 "Dog"가 아니고 name에 "el"이 포함되거나 두번째 글자가 "b"인 것들
SELECT animal_id, name FROM animal_ans
WHERE animal_type!="Dog" AND (name LIKE "%el%" OR name LIKE "_b%")
ORDER BY name
WHERE
사용 가능OR
연산과 동일한 결과를 여러 값 동시에 확인 가능SELECT
절 넣기가 가능NOT
을 붙일 수 있음WHERE [칼럼명] IN (["값"], ["값"])
WHERE [칼럼명] IN ([SELECT절])
# 동물 중 이름이 Lucy, Ella, Pickle인 동물의 아이디와 이름
SELECT animal_id, name FROM animal_ins
WHERE name IN ("Lucy", "Ella", "Pickle")
SELECT
, WHERE
의 조건문에 사용 가능SELECT IF([조건문], ["참일 때 문자열"], ["거짓일 때 문자열"]) FROM [테이블명]
# 만약 sex_upon_intake에 Spayed 문자열이 포함되어 있으면 O, 아니면 X로 결과 생성
SELECT animal_id, name, IF(sex_upon_intake LIKE "%Spayed%", "O", "X") AS 중성화
FROM animal_ins
SELECT
, WHERE
, ORDER BY
사용 가능, 주로 SELECT
문에서 사용WHEN
THEN
은 한 쌍으로 존재하며 여러 개 중복이 가능ELSE
가 존재하면 모든 조건에 해당하지 않는 경우에 반환 값을 설정 가능ELSE
가 없고 조건에 맞지 않으면 NULL을 반환CASE
WHEN [조건]
THEN ["문자열"]
ELSE ["문자열"]
END
# 만약 sex_upon_intake에 "Spayed"나 "Neutered"가 포함되어 있으면 "O", 아니면 "X"
SELECT animal_id, name,
CASE
WHEN sex_upon_intake LIKE "%Spayed%" OR sex_upon_intake LIKE "%Neutered%"
THEN "O"
ELSE "X"
END AS 중성화
FROM animal_ins
BETWEEN
과 AND
사이에 들어가는 값은 ~이상 ~이하SELECT [칼럼명] FROM [테이블명]
WHERE [칼럼명] BETWEEN [값(이상)] AND [값(이하)]
# animal_id가 1이상 100이하인 것
SELECT animal_id, name FROM animal_ins
WHERE animal_id BETWEEN 1 AND 100
DATETIME
형식 데이터 YYYY-MM-DD hh:mm:ss
DATE
, TIME
, HOUR
, DAY
, MONTH
함수로 각각의 정보만 가져오기 가능# 시간만 조회(hh:mm:ss)
SELECT TIME([칼럼명]) FROM [테이블명]
# 날짜만 조회(YYYY-MM-DD)
SELECT TIME([칼럼명]) FROM [테이블명]
DATE_FORMAT
기호 | 출력 | 기호 | 출력 |
---|---|---|---|
%Y | 4자리 년도 (1998) | %d | 일 (01) |
%y | 2자리 년도 (98) | %W | 일주일의 영문 (Sunday) |
%M | 월의 영문 (March) | %H | 24시간 단위 (23) |
%m | 월의 숫자 (03) | %h | 12시간 단위 (11) |
%i | 분 (00~59) | %s | 초 (00~59) |
SELECT DATE_FORMAT([DATETIME 데이터 형식 칼럼명], "%Y-%m-%d") FROM [테이블명]
#ex
SELECT DATE_FORMAT(datetime, "%Y %m %d %h:%i:%s") FROM animal_ins
DATEDIFF
DATEDIFF([DATETIME 데이터 형식 칼럼명], [DATETIME 데이터 형식 칼럼명])
# 입양 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회
SELECT a.animal_id, a.name FROM animal_ins a
INNER JOIN animal_outs b
ON a.animal_id = b.animal_id
ORDER BY DATEDIFF(b.datetime, a.datetime) DESC
LIMIT 2
SELECT [칼럼명] FROM [a테이블명] [별칭a]
INNER JOIN [b테이블명] [별칭b]
ON [a.id] = [b.id]
# 보호소에 들어올 당시에는 중성화되지 않았지만,
# 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회
SELECT a.animal_id, a.animal_type, a.name FROM animal_ins a
INNER JOIN animal_outs b
ON a.animal_id = b.animal_id
WHERE a.sex_upon_intake != b.sex_upon_outcome
ORDER BY a.animal_id