기록 > 기억
[MySQL] SELECT 문 본문
SELECT 문
● SELECT 문 기본 문법
SELECT col1, col2, ...
FROM tableName;
-- SELECT 와 FROM 은 키워드 → 대소문자 구분하지 않지만 관례상 대문자로 작성!
-- 전체 컬럼 중에 이름, 성, 직책만 조회
SELECT firstName, lastName, jobTitle
FROM employees;
-- 전체 컬럼을 조회
SELECT * FROM employees;
-- FROM 절 없이 SELECT 문 사용가능
SELECT 'hello mysql', 1+1;
hello mysql|1+1|
-----------+---+
hello mysql| 2|
● 컬럼에 별칭(Alias) 주기 → AS
SELECT 'hello mysql' AS 'col1', 1+1 AS 'col2';
col1 |col2|
-----------+----+
hello mysql| 2|
● ORDER BY 절 → 정렬 하기 ( ASC / DESC )
SELECT contactFirstName, contactLastName
FROM customers
ORDER BY contactFirstName; -- Default : ASC
-- SELECT 문을 사용하여 조회한 결과 집합(result set)은 행 순서가 없음
-- 행을 정렬하기 위해 ORDER BY 절을 사용
contactFirstName|contactLastName|
----------------+---------------+
Adrian |Huxley |
Akiko |Shimamura |
Alejandra |Camino |
Alexander |Feuer |
Alexander |Semenov |
Allen |Nelson |
# 이름 기준으로 오름차순 (A, B, C, ... 순)
-- 성을 기준으로 내림차순 정렬, 이름을 기준으로 오름차순 정렬
SELECT contactLastName, contactFirstName
FROM customers
ORDER BY contactLastName DESC, contactFirstName ASC;
contactLastName|contactFirstName|
---------------+----------------+
Young |Dorothy |
Young |Jeff |
Young |Julie |
Young |Mary |
Yoshido |Juri |
Walker |Brydey |
Victorino |Wendy |
Urs |Braun |
Tseng |Jerry |
Tonini |Daniel |
# 성 기준으로 내림차순, 이름 기준으로 오름차순 정렬
-- MySQL 에서는 NULL이 NULL이 아닌 값보다 낮음
SELECT firstName, lastName, reportsTo
FROM employees
ORDER BY reportsTo;
firstName|lastName |reportsTo|
---------+---------+---------+
Diane |Murphy | NULL|
Mary |Patterson| 1002|
Jeff |Firrelli | 1002|
William |Patterson| 1056|
Gerard |Bondur | 1056|
Anthony |Bow | 1056|
Mami |Nishi | 1056|
Andy |Fixter | 1088|
Peter |Marsh | 1088|
Tom |King | 1088|
# NULL 값이 제일 낮아서 맨 앞에 정렬 (DESC 하면 맨 뒤 정렬)
● WHERE 절 → 결과 집합에서 행을 필터링 하기 ( AND / OR / BETWEEN / LIKE / IN / IS NULL)
① AND
SELECT lastName, firstName, jobTitle, officeCode
FROM employees
WHERE jobTitle = 'Sales Rep' AND officeCode = 6;
-- A AND B → A 와 B 모두 true
lastName|firstName|jobTitle |officeCode|
--------+---------+---------+----------+
Fixter |Andy |Sales Rep|6 |
Marsh |Peter |Sales Rep|6 |
King |Tom |Sales Rep|6 |
# 직원 테이블에서 직책이 '영업사원' 이고 사무실 코드가 '6' 인 행만 필터링
② OR
SELECT lastName, firstName, jobTitle, officeCode
FROM employees
WHERE jobTitle = 'Sales Rep' OR officeCode = 6
ORDER BY jobTitle, officeCode;
-- A OR B → A 와 B 중 한개만 true
lastName |firstName|jobTitle |officeCode|
---------+---------+--------------------+----------+
Patterson|William |Sales Manager (APAC)|6 |
Jennings |Leslie |Sales Rep |1 |
Thompson |Leslie |Sales Rep |1 |
Firrelli |Julie |Sales Rep |2 |
Patterson|Steve |Sales Rep |2 |
Tseng |Foon Yue |Sales Rep |3 |
Vanauf |George |Sales Rep |3 |
Bondur |Loui |Sales Rep |4 |
# 직원 테이블에서 직책이 '영업사원' 이거나 사무실 코드가 '6' 인 행만 필터링
③ BETWEEN n1 AND n2
SELECT firstName, lastName, officeCode
FROM employees
WHERE officeCode BETWEEN 2 AND 3
ORDER BY officeCode;
firstName|lastName |officeCode|
---------+---------+----------+
Julie |Firrelli |2 |
Steve |Patterson|2 |
Foon Yue |Tseng |3 |
George |Vanauf |3 |
# 사무실 코드가 2 와 3 사이인 행만 필터링
④ LIKE
SELECT firstName, lastName
FROM employees
WHERE lastName LIKE '%son'
ORDER BY firstName;
-- '%son' → son 으로 끝나는 이름
-- 'son%' → son 으로 시작하는 이름
-- '%son%' → son 을 포함하는 이름
firstName|lastName |
---------+---------+
Leslie |Thompson |
Mary |Patterson|
Steve |Patterson|
William |Patterson|
# son으로 끝나는 성을 가진 행만 필터링
⑤ IN
SELECT firstName, lastName, officeCode
FROM employees
WHERE officeCode IN (2, 3, 7)
ORDER BY officeCode;
firstName|lastName |officeCode|
---------+---------+----------+
Julie |Firrelli |2 |
Steve |Patterson|2 |
Foon Yue |Tseng |3 |
George |Vanauf |3 |
Larry |Bott |7 |
Barry |Jones |7 |
# 직원 테이블에서 사무실 코드가 2 또는 3 또는 7 인 행만 필터링
⑥ IS NULL
SELECT firstName, lastName, reportsTo
FROM employees
WHERE reportsTo IS NULL; -- (⇔ IS NOT NULL)
firstName|lastName|reportsTo|
---------+--------+---------+
Diane |Murphy | NULL|
# reportsTo 컬럼이 Null 인 행만 필터링
● 내장 함수
SELECT now(); -- 현재 날짜 및 시간
-- 결과 : 2021-10-10 17:17:49
SELECT concat('My', ' ', 'SQL'); -- 문자열 결합
-- 결과 : My SQL
'IT국비지원' 카테고리의 다른 글
[MySQL] 서브쿼리 (Subquery) (0) | 2021.10.18 |
---|---|
[MySQL] JOIN 절 예제 ② (0) | 2021.10.11 |
[MySQL] JOIN 절 예제 ① (0) | 2021.10.11 |
[MySQL] Sample Data 다운로드 (0) | 2021.10.08 |
[MySQL] 사용자 등록 / DB 생성 / 권한 부여 (0) | 2021.10.07 |
[SQL Client] DBeaver 설치 및 DB 연결 (0) | 2021.10.06 |
[MySQL] MySQL ZIP Archive 설치 (0) | 2021.10.05 |
Comments