SELECT column_name FROM table_name;
SELECT
select_list
FROM
table_name;
SELECT DISTINCT
select_list
FROM
table_name;
SELECT
select_list
FROM
table_name
WHERE
search_condition;
-- 테이블 customers에서 City필드 값인 'Prague'인 데이터의 LastName, FirstName, City 조회
SELECT
LastName, FirstName, City
FROM
customers
WHERE
City = 'Prague';
-- 테이블 customers에서 City필드 값인 'Prague'가 아닌 데이터의 LastName, FirstName, City 조회
SELECT
LastName, FirstName, City
FROM
customers
WHERE
City != 'Prague';
-- 테이블 customers에서 Company 필드 값이 NULL이고 Country 필드 값이 'USA'인 데이터의 LastNme, FirstName, Company, Country 조회
SELECT
LastName, FirstName, Company, Country
FROM
customers
WHERE
Company IS NULL -- NULL일 땐 IS 사용. (Company = NULL X)
AND Country = 'USA';
-- 테이블 tracks에서 Bytes 필드 값이 100000 이상 500000 이하인 데이터의 Name, Bytes 조회
SELECT
Name, Bytes
FROM
tracks
WHERE
Bytes BETWEEN 100000 AND 500000;
-- 테이블 tracks에서 Bytes 필드 값이 100000 이상 500000 이하인 데이터의 Name, Bytes를 기준으로 오름차순 조회
SELECT
Name, Bytes
FROM
tracks
WHERE
Bytes BETWEEN 100000 AND 500000
ORDER BY
Bytes;
-- 테이블 customers에서 Country 필드 값이 'Canada' 또는 'Germany' 또는 'France'인 데이터의 LastName, FirstName, Country 조회
SELECT
LastName, FirstName, Country
FROM
customers
WHERE
Country IN ('Canada', 'Germany', 'France');
-- WHERE
-- Country = 'Canada'
-- OR Country = 'Germany'
-- OR Country = 'France';
-- 테이블 customers에서 Country 필드 값이 'Canada' 또는 'Germany' 또는 'France'가 아닌 데이터의 LastName, FirstName, Country 조회
SELECT
LastName, FirstName, Country
FROM
customers
WHERE
Country NOT IN ('Canada', 'Germany', 'France');
-- 테이블 customers에서 LastName 필드 값이 son으로 끝나는 데이터의 LastName, FirstName 조회
SELECT
LastName, FirstName
FROM
customers
WHERE
LastName LIKE '%son';
-- 테이블 customers에서 FirstName 필드 값이 4자리면서 'a'로 끝나는 데이터의 LastName, FirstName 조회
SELECT
LastName, FirstName
FROM
customers
WHERE
FirstName LIKE '___a';
=, ≥, ≤, ≠, IS, LIKE, IN, BETWEEN … AND
AND(&&), OR(||), NOT(!)
-- 테이블 customers에서 LastName 필드 값이 son으로 끝나는 데이터의 LastName, FirstName 조회
SELECT
LastName, FirstName
FROM
customers
WHERE
LastName LIKE '%son';
SELECT
select_list
FROM
table_name
LIMIT [offset,] row_count;
SELECT
..
FROM
..
LIMIT 2, 5;
-- 테이블 tracks에서 TrackId, Name, Bytes 필드 데이터를 Bytes 기준 내림차순으로 7개만 조회
SELECT
TrackId, Name, Bytes
FROM
tracks
ORDER BY
Bytes DESC
LIMIT 7;
-- 테이블 tracks에서 TrackId, Name, Bytes 필드 데이터를 Bytes 기준 내림차순으로 4번째부터 7개만 조회
SELECT
TrackId, Name, Bytes
FROM
tracks
ORDER BY
Bytes DESC
LIMIT 3, 4;
-- LIMIT 4 OFFSET 3;
-- Country 필드를 그룹화
SELECT
Country
FROM
customers
GROUP BY
Country;
-- COUNT 함수를 통해 각 그룹에 대한 집계된 값을 계산
SELECT
Country, COUNT(*)
FROM
customers
GROUP BY
Country;
집계 항목에 대한 조건은 WHERE 절이 아닌 HAVING 절을 사용
-- 에러 발생 (Invalid use of group function)
-- 테이블 tracks에서 Composer 필드를 그룹화하여 각 그룹에 대한 Millieseconds의 평균 값이 10 미만인 데이터 조회
-- 단, Millieseconds 필드는 60000으로 나누어 분 단위 값의 평균으로 계산
SELECT
Composer,
AVG(Milliseconds / 60000) AS avgOfMinute
FROM
tracks
WHERE
avgOfMinute < 10
GROUP BY
Composer;
-- 에러 해결 (HAVING clause 사용)
SELECT
Composer,
AVG(Milliseconds / 60000) AS avgOfMinute
FROM
tracks
GROUP BY
Composer
HAVING
avgOfMinute < 10;
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT