SQL 순서
SELECT 5
FROM 1
WHERE 2
GROUP BY 3
HAVING 4
ORDER BY 6
SQL을 수행할 때는 위 순서대로 입력해야되며, SQL에서 실행되는 순서는 FROM --> WHERE --> GROUP BY --> HAVING --> SELETE --> ORDER BY 이렇게 실행되서 출력된다.
SELETE 문
- 테이블의 모든 칼럼 조회 명령어
SELECT * FROM 테이블;
- 테이블의 컬럼1을 조회 명령어
SELECT 칼럼1 FROM 테이블;
- 중복 데이터 제거하고 조회 명령어
SELECT DISTINCT 컬럼1 FROM 테이블명;
- 중복 데이터 제거한 수 조회 명령어
SELECT COUNT(DISTINCT 컬럼1) FROM 테이블명;
- ALIAS(별칭, 약어)으로 간결하게 헤더 출력하기
SELECT COUNT(DISTINCT 컬럼1) as 출력하고 싶은 컬럼명 FROM 테이블명;
- ALIAS(별칭, 약어)으로 간결하게 헤더 한글로 출력하기: "" 붙이면 됨.
SELECT COUNT(DISTINCT 컬럼1) as "출력하고 싶은 컬럼" FROM 테이블명;
- 조건절로 출력하기
SELECT 컬럼1, 컬럼2 FROM 테이블명 WHERE 컬럼1 = '값1';
- AND 로 조건이 연결되면 TRUE 이고 TRUE 인거만 출력된다.
- OR로 조건이 연결되면 둘중 한개만 TRUE 여도 출력된다.
SELECT * FROM 테이블명 WHERE 컬럼1 = '값1' AND 컬럼2 < 6;
SELECT * FROM 테이블명 WHERE 컬럼1 = '값1' OR 컬럼2 = '값2';
- 원하는 만큼만 출력하기(랜덤으로 3줄까지 나오기)
SELECT * FROM 테이블명 LIMIT 3;
WHERE 문
SELECT * FROM 테이블명 WHERE 컬럼1 = '값1';
- 여러 개 출력하고 싶을때
- IN 사용해서 출력
SELECT * FROM 테이블명 WHERE 컬럼1 IN ('값1', '값2', '값3');
-
- OR 사용해서 출력
SELECT * FROM 테이블명 WHERE 컬럼1 = '값1' OR 컬럼1 = '값2' OR 컬럼1 = '값3';
- AND 와 OR 사용해서 출력시, AND가 OR 보다 우선순위가 높음.
EX)
SELECT * FROM MELON_CHART WHERE SONG = 'I AM' OR SONG = 'SUPER SHY' OR SONG = 'SPICY'
AND SINGER = 'NEWJEANS';
따라서 SONG이 SPICY이고 SINGER가 NEWJEANS는 없으므로, 출력 결과는 'I AM' 과 'SUPER SHY'만 출력함.
- OR 조건이 먼저 출력되기 위해서는 ( )를 치면 됨.
EX)
SELECT * FROM MELON_CHART WHERE (SONG = 'I AM' OR SONG = 'SUPER SHY' OR SONG = 'SPICY')
AND SINGER = 'NEWJEANS';
- 키워드 검색하기
SELECT * FROM MELON_CHART WHERE SONG LIKE '이브%';
이브로 시작하는 노래 제목 ROW가 출력됨
SELECT * FROM MELON_CHART WHERE SONG LIKE '%말해요';
말해요로 끝나는 노래 제목 ROW가 출력됨
SELECT * FROM MELON_CHART WHERE SONG LIKE '%S%';
노래 제목에 S가 들어가는 모든 ROW가 출력됨
SELECT * FROM MELON_CHART WHERE SINGER LIKE '정_';
SINGER가 정으로 시작하고 2글자인 ROW가 출력됨
SELECT * FROM MELON_CHART WHERE SINGER LIKE '__정';
SINGER가 3글자이고 맨 뒤가 정인 ROW가 출력됨
SELECT * FROM MELON_CHART WHERE SONG LIKE '_카%';
SONG열에서 두번째가 카인 노래 제목 ROW출력됨
- %와 _가 포함된 ROW를 찾고 싶을때는 ESCAPE문 이용하기
SELECT * FROM LIKE_TEST WHERE COL LIKE '%#%%' ESCAPE '#';
SELECT * FROM LIKE_TEST WHERE COL LIKE '%$_%' ESCAPE '$';
- BETWEEN 문 이용해서 출력하기
SELECT * FROM 테이블명 WHERE 컬럼1 BETWEEN 100000 AND 150000;
컬럼1 100000에서 150000 사이 출력된다.
ORDER BY 문
SELECT * FROM 테이블명 ORDER BY 컬럼1;
EX)
SELECT * FROM MELON_CHART ORDER BY RANKING;
- 역순으로 정리하고 싶을 때는 DESC를 붙이면 된다.
EX)
SELECT * FROM MELON_CHART ORDER BY RANKING DESC;
- RANKING으로 정리한 다음, SONG열과 SINGER열 출력하기
EX)
SELECT SONG, SINGER FROM MELON_CHART ORDER BY RANKING;
- 정국과 박재정 ROW를 제외한 ROW출력하기 : NOT IN 이용하기
EX)
SELECT * FROM MELON_CHART WHERE SINGER NOT IN ('정국', '박재정') ORDER BY SONG;
- SINGER 열은 오름차순 정렬하고, LIKE_NO는 내림차순 정렬해서 출력하기(왼쪽부터 정렬해서 출력된다.)
EX)
SELECT * FROM MELON_CHART ORDER BY SINGER ASC, LIKE_NO DESC;
- 제한해서 출력하기(LIMIT 이용하기)
EX)
SELECT * FROM MELON_CHART ORDER BY LIKE_NO DESC LIMIT 3;
- 4번째 데이터 부터 5개 ROW출력하기
EX)
SELECT * FROM MELON_CHART ORDER BY LIKE_NO DESC LIMIT 3, 5;
집계함수
- COUNT 함수
- 테이블 전체 건수 출력하기
SELECT * FROM 테이블명;
SELECT COUNT(*) FROM 테이블명;
- SUM 함수
SELECT SUM(COL1), SUM(COL2) FROM 테이블명;
- AVG 함수
(NULL은 아예 없는 취급을 함.)
SELECT AVG(COL1), AVG(COL2) FROM 테이블명;
- MIN 함수
SELECT MIN(COL1), MIN(COL2) FROM 테이블명;
- MAX함수
SELECT MAX(COL1), MAX(COL2) FROM 테이블명;
- WHERE와 집계함수 같이 사용해서 출력
SELECT COUNT(*) FROM 테이블명 WHERE 컬럼명 > 100000;
GROUP BY 함수
- 월별 매출, 회원 연령대별 가입현황에서 많이 쓰임
EX)
SELECT ANIMAL, SUM(AGE), AVG(AGE) FROM 테이블명 GROUP BY ANIMAL;
EX)
SELECT ANIMAL, TYPE, COUNT(*) FROM 테이블명 GROUP BY ANIMAL, TYPE ORDER BY ANIMAL;
HAVING 절
- 두마리보다 많은 종(TYPE) 출력하기
EX)
SELECT ANIMAL, TYPE, COUNT(*) FROM 테이블명 GROUP BY ANIMAL, TYPE HAVING COUNT(*) >2;
SELECT ANIMAL, TYPE, MAX(AGE)
FROM ANIMAL_INFO
GROUP BY ANIMAL, TYPE
HAVING MAX(AGE) > 10;
'SQL' 카테고리의 다른 글
[SQL] SQL함수 모음(String Functions) (0) | 2024.10.12 |
---|---|
[SQL] 데이터 생성과 조회 : 04. 테이블 조회(JOIN, CASE WHEN, 스칼라 서브쿼리, 인라인 뷰, 중첩 서브쿼리, UNION, WITH ROLLUP, 윈도우 함수) (10) | 2024.10.11 |
[SQL] 데이터 생성과 조회 : 02. 테이블 생성 (DML) (2) | 2024.10.10 |
[SQL] 데이터 생성과 조회 : 01. 테이블 생성 (DDL) (0) | 2024.10.10 |
[MySQL] SQL 함수 : 질의문, LIKE, EXISTS, UNION (0) | 2024.05.27 |