πŸ“˜ Programming/DB

[MySQL] SELECT (λ ˆμ½”λ“œ 선택, 쀑볡 κ°’ 제거, μ˜€λ¦„μ°¨μˆœ, λ‚΄λ¦Όμ°¨μˆœ, 별칭, CONTACT ν•¨μˆ˜, λ¬Έμžμ—΄ κ²°ν•©)

ν•œμ½”λ”© 2020. 8. 1. 23:38
728x90
728x90

SELECT

MySQLμ—μ„œλŠ” SELECT 문을 μ‚¬μš©ν•˜μ—¬ ν…Œμ΄λΈ”μ˜ λ ˆμ½”λ“œλ₯Ό 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

SELECT ν•„λ“œμ΄λ¦„
FROM ν…Œμ΄λΈ”이름
[WHERE μ‘°κ±΄]

FROM μ ˆμ€ λ ˆμ½”λ“œλ₯Ό 선택할 ν…Œμ΄λΈ”μ˜ 이름을 λͺ…μ‹œν•©λ‹ˆλ‹€.

ν•΄λ‹Ή ν…Œμ΄λΈ”μ—μ„œ μ„ νƒν•˜κ³  μ‹Άμ€ ν•„λ“œμ˜ 이름을 SELECT ν‚€μ›Œλ“œ λ°”λ‘œ 뒀에 λͺ…μ‹œν•˜λ©΄ λ©λ‹ˆλ‹€.

μ΄λ•Œ WHERE μ ˆμ„ μ‚¬μš©ν•˜λ©΄, 선택할 λ ˆμ½”λ“œμ˜ 쑰건을 μ’€ 더 μƒμ„Ένžˆ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


ν…Œμ΄λΈ”μ˜ λͺ¨λ“  ν•„λ“œ 선택

SELECT λ¬Έκ³Ό ν•¨κ»˜ λ³„ν‘œ(*) κΈ°ν˜Έλ₯Ό μ‚¬μš©ν•˜λ©΄, ν•΄λ‹Ή ν…Œμ΄λΈ”μ˜ λͺ¨λ“  ν•„λ“œλ₯Ό 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

SELECT *
FROM ν…Œμ΄λΈ”이름

이 방식은 ν•΄λ‹Ή ν…Œμ΄λΈ”μ˜ 'λͺ¨λ“  ν•„λ“œ'λ₯Ό 선택해야 ν•  κ²½μš°μ— μœ μš©ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

λ‹€μŒ μ˜ˆμ œλŠ” Reservation ν…Œμ΄λΈ”μ˜ λͺ¨λ“  ν•„λ“œλ₯Ό μ„ νƒν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

SELECT *
FROM Reservation;

μ‹€ν–‰ κ²°κ³Ό


νŠΉμ • 쑰건의 λ ˆμ½”λ“œ 선택

SELECT λ¬Έκ³Ό ν•¨κ»˜ WHERE μ ˆμ„ μ‚¬μš©ν•˜λ©΄, κ²€μƒ‰ν•  λ ˆμ½”λ“œμ˜ 쑰건을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ WHERE μ ˆμ€ ν…Œμ΄λΈ”μ˜ 크기가 맀우 ν¬κ±°λ‚˜, νŠΉμ • 쑰건에 λ§žλŠ” λ ˆμ½”λ“œλ§Œμ„ μ„ νƒν•˜κ³  싢을 λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

 

λ‹€μŒ μ˜ˆμ œλŠ” Name ν•„λ“œμ˜ 값이 '홍길동'인 λ ˆμ½”λ“œλ§Œμ„ μ„ νƒν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

SELECT *
FROM Reservation
WHERE Name = '홍길동';

μ‹€ν–‰ κ²°κ³Ό

 

μ΄λŸ¬ν•œ WHERE μ ˆμ—λŠ” μ—¬λŸ¬ 개의 μ‘°κ±΄μ„ 같이 λͺ…μ‹œν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

μ΄λ•Œ μ—¬λŸ¬ 개의 쑰건은 ANDλ‚˜ OR μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜μ—¬ μ—°κ²°ν•©λ‹ˆλ‹€.

 

λ‹€μŒ μ˜ˆμ œλŠ” ID κ°’이 3 μ΄ν•˜μ΄λ©΄μ„œ ReserveDate ν•„λ“œμ˜ 값이 2016λ…„ 2μ›” 1일 이후인 λ ˆμ½”λ“œλ§Œμ„ μ„ νƒν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

SELECT *
FROM Reservation
WHERE ID <= 3 AND ReserveDate > '2016-02-01';

μ‹€ν–‰ κ²°κ³Ό

 


νŠΉμ • ν•„λ“œλ§Œμ„ 선택

SELECT ν‚€μ›Œλ“œ λ‹€μŒμ— ν•„λ“œ 이름을 λͺ…μ‹œν•˜λ©΄, ν•΄λ‹Ή ν…Œμ΄λΈ”μ˜ νŠΉμ • ν•„λ“œλ§Œμ„ 뢈러올 수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λ•Œ μ‰Όν‘œ(,)λ₯Ό μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ 개의 ν•„λ“œ 이름을 ν•œ λ²ˆμ— λͺ…μ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

λ‹€μŒ μ˜ˆμ œλŠ” Reservation ν…Œμ΄λΈ”μ—μ„œ Name ν•„λ“œμ™€ RoomNum ν•„λ“œλ§Œμ„ μ„ νƒν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

SELECT Name, RoomNum
FROM Reservation;

μ‹€ν–‰ κ²°κ³Ό

 

μ΄λ•Œμ—λ„ WHERE λ¬Έμ„ μ‚¬μš©ν•˜μ—¬ νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜λŠ” λ ˆμ½”λ“œλ§Œμ„ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

λ‹€μŒ μ˜ˆμ œλŠ” ID κ°’이 3 μ΄ν•˜μ΄λ©΄μ„œ ReserveDate ν•„λ“œμ˜ 값이 2016λ…„ 2μ›” 1일 이후인 λ ˆμ½”λ“œμ˜ Name ν•„λ“œμ™€ ReserveDate ν•„λ“œλ§Œμ„ μ„ νƒν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

SELECT Name, ReserveDate 
FROM Reservation
WHERE ID <= 3 AND ReserveDate > '2016-02-01';

μ‹€ν–‰ κ²°κ³Ό


μ€‘λ³΅λ˜λŠ” κ°’ 제거

λ§Œμ•½ 같은 ν•„λ“œμ— μ€‘λ³΅λ˜λŠ” 값을 κ°€μ§€λŠ” λ ˆμ½”λ“œκ°€ μžˆλ‹€λ©΄, DISTINCT ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ κ·Έ 값이 ν•œ 번만 μ„ νƒλ˜λ„λ‘ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

λ‹€μŒ μ˜ˆμ œλŠ” Reservation ν…Œμ΄λΈ”μ—μ„œ Name ν•„λ“œλ₯Ό μ„ νƒν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

μ΄λ•Œ DISTINCT ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν–ˆκΈ° λ•Œλ¬Έμ— μ€‘λ³΅λœ 값은 단 ν•œ 번만 μ„ νƒλ©λ‹ˆλ‹€.

SELECT DISTINCT Name
FROM Reservation;

μ‹€ν–‰ κ²°κ³Ό


μ„ νƒν•œ 결과의 μ •λ ¬

SELECT 문으둜 μ„ νƒν•œ κ²°κ³Όλ₯Ό ORDER BY μ ˆμ„ μ‚¬μš©ν•˜μ—¬ μ •λ ¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ORDER BY 절의 κΈ°λ³Έ 섀정은 μ˜€λ¦„μ°¨μˆœμ΄λ©°, ASC ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 직접 μ˜€λ¦„μ°¨μˆœμ„ λͺ…μ‹œν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

 

λ‹€μŒ μ˜ˆμ œλŠ” Reservation ν…Œμ΄λΈ”μ˜ λͺ¨λ“  λ ˆμ½”λ“œλ₯Ό ReserveDate ν•„λ“œμ˜ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ μ„ νƒν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

SELECT * 
FROM Reservation
ORDER BY ReserveDate;

μ‹€ν–‰ κ²°κ³Ό

 

λ§Œμ•½ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜κ³ μž ν•  λ•ŒλŠ” 맨 λ§ˆμ§€λ§‰μ— DESC ν‚€μ›Œλ“œλ₯Ό μΆ”κ°€ν•˜λ©΄ λ©λ‹ˆλ‹€.

 

λ‹€μŒ μ˜ˆμ œλŠ” Reservation ν…Œμ΄λΈ”μ˜ λͺ¨λ“  λ ˆμ½”λ“œλ₯Ό ReserveDate ν•„λ“œμ˜ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ μ„ νƒν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

SELECT * 
FROM Reservation
ORDER BY ReserveDate DESC;

μ‹€ν–‰ κ²°κ³Ό

 

PHPμ—μ„œ μ •λ ¬ν•  λ•ŒλŠ” λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ λŒ€μ†Œλ¬ΈμžκΉŒμ§€ κ΅¬λΆ„ν•˜μ—¬ μ •λ ¬ν•˜κ³  싢을 λ•ŒλŠ” ORDER BY BINARY μ ˆμ„ μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€.

 

λ˜ν•œ, μ—¬λŸ¬ ν•„λ“œμ˜ 데이트λ₯Ό μ‰Όν‘œ(,)λ₯Ό μ‚¬μš©ν•˜μ—¬ ν•œ λ²ˆμ— μ •λ ¬ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

 

λ‹€μŒ μ˜ˆμ œλŠ” Reservation ν…Œμ΄λΈ”μ˜ λͺ¨λ“  λ ˆμ½”λ“œλ₯Ό λ¨Όμ € ReserveDate ν•„λ“œμ˜ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œ λ’€μ—, λ˜λ‹€μ‹œ RoomNum ν•„λ“œμ˜ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ μ„ νƒν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

SELECT *
FROM Reservation
ORDER BY ReserveDate DESC, RoomNum ASC;

μ‹€ν–‰ κ²°κ³Ό


별칭(alias)을 μ΄μš©ν•œ 처리

MySQLμ—μ„œλŠ” ν…Œμ΄λΈ”κ³Ό ν•„λ“œμ— μž„μ‹œλ‘œ 별칭(alias)을 λΆ€μ—¬ν•˜κ³ , ν•΄λ‹Ή 별칭을 SELECT λ¬Έμ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 별칭(alias)은 λ³΅μž‘ν•œ ν…Œμ΄λΈ”, ν•„λ“œμ˜ 이름 μ’€ 더 읽기 쉽도둝 λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€.

# ν•„λ“œ μ΄λ¦„μ˜ 별칭
SELECT ν•„λ“œμ΄λ¦„ AS λ³„μΉ­
FROM ν…Œμ΄λΈ”이름;

# ν…Œμ΄λΈ” μ΄λ¦„μ˜ 별칭
SELECT ν•„λ“œμ΄λ¦„
FROM ν…Œμ΄λΈ”이름 AS λ³„μΉ­;

μœ„μ˜ 첫 번째 문법은 ν•΄λ‹Ή ν•„λ“œμ— μƒˆλ‘œμš΄ 별칭을 λΆ€μ—¬ν•˜κ³ , 두 번째 문법은 ν•΄λ‹Ή ν…Œμ΄λΈ”μ— μƒˆλ‘œμš΄ 별칭을 λΆ€μ—¬ν•˜λŠ” λ¬Έλ²•μž…λ‹ˆλ‹€.

 

λ‹€μŒ μ˜ˆμ œλŠ” Reservation ν…Œμ΄λΈ”μ˜ RoomNum ν•„λ“œμ™€ Name ν•„λ“œμ— ν•˜λ‚˜μ˜ μƒˆλ‘œμš΄ 별칭을 λΆ€μ—¬ν•˜λŠ” μ˜ˆμ œμž…λ‹ˆλ‹€.

SELECT ReserveDate, CONCAT(RoomNum, " : ", Name) AS ReserveInfo
FROM Reservation;

μ‹€ν–‰ κ²°κ³Ό

 

CONCAT() ν•¨μˆ˜λŠ” 인수둜 전달받은 λ¬Έμžμ—΄μ„ λͺ¨λ‘ κ²°ν•©ν•˜μ—¬ ν•˜λ‚˜μ˜ λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.

728x90
λ°˜μ‘ν˜•