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
(부분집합)
- 첫 번째 테이블을 기준으로, 두 번째 테이블을 조합하는
JOIN
ON
절의 조건을 만족하지 않는 경우에는 첫 번째 테이블의 필드 값은 그대로 가져오고, 해당 레코드의 두 번째 필드 값은 모두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]