SELECT (조회)SELECT * FROM [테이블명]
- Ex)
SELECT * FROM Person:
Person테이블의 모든 필드를 검색
SELECT [필드명1], [필드명2] FROM [테이블명]
- Ex)
SELECT Age, Name FROM Person:
Person테이블의Age,Name필드를 검색
DISTINCT (중복 없이 검색)SELECT DISTINCT [필드명] FROM [테이블명]
- Ex)
SELECT DISTINCT Job FROM Person:
Person테이블의Job필드에서 중복되어 출력되는 값을 제거해서 조회
→ 고유한 값을 추출하기에 좋은 키워드!
WHERE (조건식 적용해서 검색)SELECT * FROM [테이블명] WHERE [필드명]=0
- Ex)
SELECT * FROM Person WHERE Job='student':
Person테이블에서Job필드 내용이 'student'인 사람 검색
SELECT * FROM [테이블명] WHERE [필드명1]=0 AND [필드명2]=0 OR [필드명3]=0
- Ex)
SELECT * FROM Person WHERE Age>=23 AND Job='student':
Person테이블에서Age필드 값이 23 이상이고Job필드 내용이 'student'인 사람 검색
BETWEEN (~부터 ~까지)# [필드명]의 값이 0부터 100까지인 데이터 조회 WHERE [필드명] BETWEEN 0 AND 100 # [필드명]의 값이 0 이상 100 이하가 아닌 데이터 조회 WHERE [필드명] NOT BETWEEN 0 AND 100
- Ex)
SELECT * FROM Person WHERE Age BETWEEN 10 AND 20:
Person테이블에서Age필드값이 10 이상 20 이하인 사람 검색
In (~이거나)# [필드명]의 값이 0, 10, 100과 일치하는 값 검색 WHERE [필드명] IN (0, 10, 100) # [필드명]의 값이 0, 10, 100과 일치하지 않는 값 검색 WHERE [필드명] NOT IN (0, 10, 100)
- Ex)
SELECT * FROM Person WHERE Hobby IN ('영화 감상'):
Person테이블에서Hobby필드 내용이 '영화 감상'인 데이터 검색
IS NULL (필드값이 비어 있는지, 즉 NULL인지 판단)# [필드명]의 값이 비어 있는 데이터 검색 WHERE [필드명] IS NULL # [필드명]의 값이 비어 있지 않은 데이터 검색 WHERE [필드명] NOT IS NULL
- Ex)
SELECT * FROM Person WHERE Name IS NULL:
Person테이블에서Name필드 내용이 비어 있는 데이터 검색
LIKE (~로 시작, 포함, 끝나는 단어)# [필드명] 데이터 중에서 '특정값'으로 시작하는 데이터 검색 WHERE [필드명] LIKE '[특정값%]' # [필드명] 데이터 중에서 '특정값'을 포함하는 데이터 검색 WHERE [필드명] NOT LIKE '[%특정값%]' # [필드명] 데이터 중에서 '특정값'으로 끝나는 데이터 검색 WHERE [필드명] NOT LIKE '[%특정값]'
- Ex)
SELECT * FROM Person WHERE Job LIKE 'T%':
Job필드 내용이 'T'로 시작하는 사람 조회
ORDER BY (정렬)SELECT [필드명] FROM [테이블명] ORDER BY [필드명]
- Ex)
SELECT * FROM Person ORDER BY Name:
Name필드 내용을 오름차순으로 정렬
SELECT [필드명] FROM [테이블명] ORDER BY [필드명1], [필드명2] DESC, [필드명3] ASC
- Ex)
SELECT * FROM Person ORDER BY Age, Name DESC, Job ASC:
Age,Name을 내림차순으로 정렬한 뒤,Job을 오름차순으로 정렬
JOIN (테이블 조합)
INNER JOIN (내부 조인; 교집합)
ON절과 함께 사용되며,ON절의 조건을 만족하는 데이터만을 가져온다.SELECT * FROM [테이블명1] INNER JOIN [테이블명2] ON [테이블명1].[필드명] = [테이블명2].[필드명];
INNER를 생략하고JOIN만 써도INNER JOIN으로 인식한다.- Ex)
SELECT * FROM Reservation INNER JOIN Customer ON Reservation.Name = Customer.Name;:
Reservation테이블의Name과Customer테이블의Name이 일치하는 데이터를 가져와서 하나의 테이블로 합치기.
alias)를 써서 간략화한 예제SELECT * FROM Reservation AS r, Customer AS c WHERE r.Name = c.Name;
- 결과는 위와 동일하다.
LEFT JOIN (부분집합)
- 첫 번째 테이블을 기준으로, 두 번째 테이블을 조합하는
JOINON절의 조건을 만족하지 않는 경우에는 첫 번째 테이블의 필드 값은 그대로 가져오고, 해당 레코드의 두 번째 필드 값은 모두NULL로 표시된다.ON절에서는WHERE에서 사용할 수 있는 모든 조건을 사용할 수 있다.SELECT * FROM [테이블명1] LEFT JOIN [테이블명2] ON [테이블명1].[필드명] = [테이블명2].[필드명]
- Ex)
SELECT * FROM Reservation LEFT JOIN Customer ON Reservation.Name = Customer.Name WHERE ReservationDate > '2016-02-01';:
Reservtion테이블의Name필드를 기준으로Customer의Name필드와 일치하는 데이터만을LEFT JOIN으로 가져온 후, 그 중에서ReservationDate필드의 값이 2016년 02월 01일 이후인 데이터만을 가져와라.
RIGHT JOIN (부분 집합)
LEFT조인과는 반대로 두 번째 테이블을 기준으로, 첫 번째 테이블을 조합하는JOIN.SELECT * FROM [테이블명1] RIGHT JOIN [테이블명2] ON [테이블명1].[필드명] = [테이블명2].필드명
- Ex)
SELECT * FROM Reservation RIGHT JOIN Customer ON Reservation.Name = Customer.Name;:
Customer테이블의Name필드를 기준으로Reservation테이블의Name필드와 일치하는 레코드만을RIGHT JOIN으로 가져와라.
FULL OUTER JOIN (외부 조인; 합집합)
- A, B 테이블을
JOIN할 경우, 조건에 맞지 않은 데이터도 표시하고 싶을 때OUTER JOIN을 사용한다.MySQL은FULL OUTER JOIN이 없어서,LEFT JOIN과RIGHT JOIN을UNION해서 사용한다.OUTER JOIN은USING,ON조건절을 필수적으로 사용해야 한다.SELECT * FROM [테이블명1] LEFT JOIN [테이블명2] UNION SELECT * FROM [테이블명1] RIGHT JOIN [테이블명2]