*내림차순 조회
SELECT "Column 이름" FROM "테이블 명" ORDER BY "정렬할 기준" DESC
DESC = 내림차순
정렬할 기준이 여러개라면 다음처럼한다.
SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME DESC, DATETIME
NAME에만 DESC가 적용되고, DATETIME은 디폴트인 오름차순이다.
*조건 조회 (WHERE)
SELECT "Clumn 이름" FROM "테이블 명" WHERE "조건" ORDER BY "정렬 기준" ;
ex )
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION='Sick' ORDER BY ANIMAL_ID ;
WHERE에는 AND OR NOT 연산도 가능하다.
*특정 개수의 row 조회 (LIMIT)
SELECT * FROM [TABLE NAME] LIMIT 5;
*맨 위의 5개의 row만 가져온다.
SELECT * FROM [TABLE NAME] LIMIT 2, 10;
*3번째 row부터 11번째 row 까지 조회하기. (첫번째 줄은 0이다)
*최대값, 최소값 ( MAX , MIN )
SELECT MAX(컬럼) FROM 테이블;
SELECT MIN(컬럼) FROM 테이블;
문자형 데이터에도 사용 가능합니다.
*데이터 개수 , 카운트 (COUNT)
SELECT COUNT(*) FROM 테이블;
SELECT COUNT(컬럼) FROM 테이블;
SELECT COUNT(컬럼) AS 개수 FROM 테이블;
위에서 부터 각각, 전체 개수 , 특정 Column의 개수, 그리고 마지막줄은 가져온 데이터갯수의 Column을 명시
*중복 제거 (DISTINCT) , (GROUP BY)
중복 제거 + 카운팅을 할때는 DISTINCT를 이용한다.
SELECT COUNT(DISTINCT NAME) AS NAME_COUNT FROM ANIMAL_INS WHERE NAME IS NOT NULL
중복제거한 목록을 조회할때는 GROUP BY를 이용한다. 이름대로 데이터를 원하는 그룹으로 나누는 명령이다.
DISTINCT는 중복제거와 같이 특정 컬럼을 가져올때 주로 사용하고, GROUP BY는 그룹핑이 필요한 결과를 가져올때 사용한다.
*조건 비교 HAVING
WHERE와 비슷한 역할이지만, WHERE에서는 집계함수를 사용 할 수없지만 HAVING에서는 사용 가능하다.
SELECT NAME, COUNT(NAME) AS COUNTING FROM ANIMAL_INS GROUP BY NAME HAVING COUNTING >= 2;
* NAME을 카운트하여, 2개 이상의 중복이름이 있을시에 가져온다. (HAVING COUNTING >=2)
*날짜 , 시간 조회 (YEAR, MONTH, DAY, HOUR, TIME, DATETIME )
날짜 및 시간 데이터
형식
time
hh:mm:ss[.nnnnnnn]
date
YYYY-MM-DD
smalldatetime
YYYY-MM-DD hh:mm:ss
위와 같은 형식의 데이터가 컬럼에 존재한다면, 각각 날짜, 시간, 연도 등만을 따로 조회 가능하다.
SELECT YEAR("DATETIME이 있는 컬럼") FROM "테이블 명" -> '연도' 조회
SELECT MONTH("DATETIME이 있는 컬럼") FROM "테이블 명" -> '월' 조회
SELECT DAY("DATETIME이 있는 컬럼") FROM "테이블 명" -> '일' 조회
SELECT TIME("DATETIME이 있는 컬럼") FROM "테이블 명" -> '시간' 조회
DATE_FORMAT 함수 : 여러가지 형태로 시간을 반환한다.
SELECT DATE_FORMAT("date컬럼", "%Y-%m-%d") FROM "테이블명"
%y %Y 대문자 소문자에 따라 출력결과가 다르다.
기호
출력결과
기호
출력결과
%Y
4자리 ex) 1993
%d
일 ex) 17
%y
2자리 ex) 93
%l
시간(12시간) ex) 9
%M
월의 영문명 ex) March
%H
시간(24시간) ex)23
%m
월의 숫자 ex) 3
*NULL값 처리 (IFNULL)
해당 필드값이 NULL이라면 다른 값을 반환하도록 해주는 함수이다. (조건문)
SELECT IFNULL("컬럼명","대체할 값") FORM "테이블명";
ex )
SELECT ANIMAL_TYPE, IFNULL(NAME, "No name") , SEX_UPON_INTAKE AS NAME
FROM ANIMAL_INS ORDER BY ANIMAL_ID
*특정 문자열을 포함하는지 검색 (LIKE)
예 ) user id 중, 특정 문자 "star"을 포함하는 필드가 있는지 검색하는 경우
다만, 검색할 특정 문자가 앞에오는지, 또는 뒤에오는지, 포함된 모든값인지 설정 가능합니다. (WHERE절 뒤에 옵니다.)
예1)
SELECT ANIMAL_ID , NAME FROM ANIMAL_INS
WHERE ANIMAL_TYPE = "Dog" AND(NAME LIKE "%el%" or NAME LIKE "%EL%")
ORDER BY NAME
예2)
SELECT USER_ID FROM USER_INFO WHERE USER_ID LIKE "star%"
----------------> star123 , starWars , starKING / 시작부분이 star인경우
SELECT USER_ID FROM USER_INFO WHERE USER_ID LIKE "%star"
----------------> iAmstar, iniestar, 13star, wwstar / 끝부분이 star인 경우
SELECT USER_ID FROM USER_INFO WHERE USER_ID LIKE "%star%"
----------------> ,star123 , starWars , kpopstar1, awstar12, 48stareln /
star가 들어있는 모든값
*조건문 (IF , CASE)
IF ( 조건 , 참일때의 값, 거짓일때의 값)
SELECT ANIMAL_ID, NAME , IF(SEX_UPON_INTAKE LIKE "%Spayed%", "O", "X") AS 중성화
FROM ANIMAL_INS
ORDER BY ANIMAL_ID