📌 USE문
사용할 데이터베이스를 지정
한 번만 실행하면 이후 SQL문은 USE로 지정한 데이터베이스 사용
USE 데이터베이스_이름;
📌 SELECT문의 기본 형식
대괄호로 묶인 부분은 생략 가능 (조건에 따라 추가하는 것)
생략 가능하지만 순서는 지켜야함
SELECT > FROM > WHERE > GROUP BY > HAVING > ORDER BY > LIMIT
SELECT select_expr
[FROM table_references]
[WHERE where_condision]
[GROUP BY {col_name | expr | position}]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
📌 SELECT ~ FROM
SELECT : 테이블에서 데이터를 가져올 때 사용하는 예약어
열_이름 : 데이터를 가져올 열의 이름을 명시
FROM : 데이터를 가져올 테이블 지정
SELECT 열_이름 FROM 테이블_이름
📌 테이블에서 모든 열의 내용 가져오기
SELECT * FROM 테이블_이름;
📌 여러 개의 열 가져오기
SELECT 열_이름1, 열_이름2, 열_이름3... FROM 테이블_이름;
📌 테이블 열 이름 지정하기
열_이름 뒤에 공백문자 다음 별칭 지정
별칭에 '' 생략 가능
이름을 지정하지 않는 열도 함께 작성 가능
SELECT 열_이름1 별칭1, 열_이름2 '별칭2', 열_이름3 FROM 테이블_이름;
📌 WHERE 절
SELECT 열_이름 FROM 테이블_이름 WHERE 조건식;
📌 전체 데이터 중 특정 데이터만 가져오려면?
SELECT * FROM 테이블_이름 WHERE 열_이름 = '특정데이터';
📌 관계 연산자, 논리 연산자
WHERE절에서는 관계, 논리 연산자를 활용해 원하는 데이터를 가져옴
관계 연산자 : >, <, >=, <=, =
논리 연산자 : AND, OR
📌 평균 키가 162 이하인 회원을 검색하려면?
SELECT mem_id, mem_name FROM member WHERE height <= 162;
📌 평균 키(height)가 165 이상이면서 인원(mem_number)가 6명 초과인 회원은?
SELECT mem_name, height, mem_number
FROM member
WHERE height >= 165 AND mem_number > 6;
📌 BETWEEN ~ AND
숫자의 범위를 조건식에서 사용할 때 편리
평균 키(height)가 163이상 165이하인 회원을 검색할 경우
#일반 조건식
SELECT *
FROM member
WHERE height >= 163 AND height > 165;
#BETWEEN ~ AND 사용
SELECT *
FROM member
WHERE height BETWEEN height 163 AND 165;
📌 IN()
문자로 표현되는 조건식을 조합할 때 편리
주소가 경기/전남/경남 인 회원을 검색
#일반 조건식
SELECT mem_name, addr
FROM member
WHERE addr = '경기' OR addr = '전남' OR addr ='경남';
#IN() 사용
SELECT mem_name, addr
FROM member
WHERE IN('경기', '전남', '경남');
📌 LIKE()
문자열의 일부 글자를 검색할 때 사용
% : 무엇이든 허용
_ : 한 글자 매치
#이름(mem_name)이 ‘우’ 로 시작하는 회원 검색
SELECT * FROM member WHERE mem_name LIKE '우%';
#이름이 ‘XX핑크’ 인 회원 검색
SELECT * FROM member WHERE mem_name LIKE '__핑크';
📌 서브쿼리
SELECT 안에 또 다른 SELECT
이름(mem_name)이 ‘에이핑크’인 회원의 평균 키(height) 보다 큰 모든 회원을 검색
# 서브쿼리를 사용하지 않은 방법
#에이핑크의 평균 키(height) 알아오기
SELECT height FROM member WHERE mem_name = '에이핑크';
#평균 키(height)가 164보다 큰 회원 검색
SELECT mem_name, height FROM member WHERE height > 164;
# 서브쿼리 사용
SELECT mem_name, height FROM member
WHERE height > (SELECT height FROM member WHERE mem_name = '에이핑크');
📌 ORDER BY
결과의 값이나 개수에 대해서는 영향을 미치지 않지만, 결과가 출력되는 순서를 조절
default가 ASC(오름차순)
#데뷔일자가 빠른 순서대로 출력
SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date;
#데뷔일자가 늦은 순서로 출력
SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date DESC;
📌 여러 개의 열 순서 지정
#평균 키가 큰 순으로 정렬
#평균 키가 같을 때는 데뷔일자가 빠른 순서로 정렬
SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC, debut_date ASC;
📌 LIMIT
출력하는 개수 제한
LIMIT 시작, 개수 또는 LIMIT 개수 OFFSET 시작으로 작성 가능
#출력 개수 3개로 제한
SELECT mem_name, debut_date
FROM member
ORDER BY debut_date
LIMIT 3; #LIMIT 0,3 또는 LIMIT 3 OFFSET 0으로 작성 가능
📌 DISTINCT
SELECT DISTINCT addr FROM member;
📌 GROUP BY
출력 결과를 그룹으로 묶어줌
집계함수와 함께 사용
📌 집계 함수
📌 각 회원이 구매한 금액의 총합 출력하기
SELECT mem_id, SUM(price*amount) FROM buy GROUP BY mem_id;
📌 HAVING 절
집계 함수에 대해서 조건을 제한하는 것
GROUP BY절 다음에 나옴
#총 구매액이 1000 이상인 회원
SELECT mem_id, SUM(price*amount)
FROM buy
GROUP BY mem_id
HAVING SUM(price*amount) > 1000;