Notice
Recent Comments
Recent Posts
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Total
관리 메뉴

기록 > 기억

[MySQL] SELECT 문 본문

IT국비지원

[MySQL] SELECT 문

BY SON 2021. 10. 10. 18:59

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

 

Comments