Data Base/MySQL

MySQL 14λ²ˆμ§Έμˆ˜μ—…

μ½”λ”©ν•˜λŠ” λΆ•μ–΄ 2021. 2. 8. 23:57
λ°˜μ‘ν˜•

β–Ά μ‚¬μš©μž μ •μ˜ λ³€μˆ˜

​

방법 1) SELECT 문을 μ‚¬μš©ν•˜μ—¬ λ³€μˆ˜λ₯Ό μ„€μ •

mysql> select @t3=5;

​

 

방법 2) @variable:=expr 문을 μ‚¬μš©ν•˜μ—¬ μ„€μ •

mysql> select @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;

​

​

​

β–Ά μ‹œμŠ€ν…œ λ³€μˆ˜

μ‹œμŠ€ν…œ λ³€μˆ˜λŠ” thread-specific λ³€μˆ˜μ™€ global λ³€μˆ˜κ°€ μžˆλ‹€.

global λ³€μˆ˜λŠ” set global λͺ…λ ΉμœΌλ‘œ, session λ³€μˆ˜λŠ” set session λͺ…λ ΉμœΌλ‘œ λ³€κ²½ν•  수 μžˆλ‹€.

​

​​

6-1) ν•™μ ν…Œμ΄λΈ”μ—μ„œ ν•™λ²ˆκ³Ό 이름, μ˜λ¬Έμ΄λ¦„μ„ 좜λ ₯ν•˜λΌ. 단, μ˜λ¬Έμ΄λ¦„μ˜ 첫 κΈ€μžλŠ” λŒ€λ¬Έμžλ‘œ λ‚˜λ¨Έμ§€λŠ” μ†Œλ¬Έμžλ‘œ 좜λ ₯ν•˜λΌ.

mysql> select stu_no, stu_name, concat(upper(left(stu_ename,1)), lower(substring(stu_ename,2))) stu_ename

-> from student;

​

​

6-2) μ˜λ¬Έμ΄λ¦„μ˜ 길이가 μ •ν™•νžˆ 11자인 ν•™μƒμ˜ ν•™λ²ˆκ³Ό μ˜λ¬Έμ΄λ¦„μ„ 좜λ ₯ν•˜λΌ.

mysql> select stu_no, stu_ename

from student

→ where length​(rtrim(stu_ename)) = 11;

​

​

6-3) λ“±λ‘μΌμžκ°€ 2019λ…„ 2μ›” 18일인 ν•™μƒμ˜ ν•™λ²ˆκ³Ό 등둝년도, ν•™κΈ°, λ“±λ‘μΌμžλ₯Ό 좜λ ₯ν•˜λΌ.

mysql> select stu_no, fee_year, fee_term, fee_date

→ from fee

→ where fee_date = "2019-02-18";

​

​

심화) ν…Œμ΄λΈ” κ²°ν•©

ν•™λ²ˆ, 이름, 등둝년도, ν•™κΈ°, λ“±λ‘μΌμžλ₯Ό 좜λ ₯ν•˜λΌ.

mysql> select s.stu_no, stu_name, fee_year, fee_term, fee_date

-> from student s inner join fee f on s.stu_no = f.stu_no

-> where fee_date = '2019-02-18';

​

​

6-4) ν•™μ ν…Œμ΄λΈ”μ—μ„œ ν•™λ²ˆκ³Ό 이름, μ£Όλ―Όλ“±λ‘λ²ˆν˜Έλ₯Ό 좜λ ₯ν•˜λΌ. 단, 여학생은 μ œμ™Έμ‹œν‚€κ³  좜λ ₯ μˆœμ„œλŠ” 학과별 μ˜€λ¦„μ°¨μˆœ, 학년별 λ‚΄λ¦Όμ°¨μˆœ, ν•™λ²ˆ μ˜€λ¦„μ°¨μˆœ μˆœμ„œμ΄λ‹€.

mysql> select stu_no, stu_name,

→ concat(substring(birthday, 3), '-', gender, '******') 주민번호

→ from student

→ where gender%2 = 1

→ order by dept_code, grade desc, stu_no;

​

​

​

​

β–Ά SELECT λͺ…λ Ήλ¬Έμ˜ 절

select μ—΄ from ν…Œμ΄λΈ” where 쑰건 group by μ—΄ having group by 쑰건 order by 열​

​

​

예제 7-1) 등둝 ν…Œμ΄λΈ”("FEE")μ—μ„œ μž₯ν•™κΈˆμ„ μ§€κΈ‰ 받은 ν•™μƒμ˜ ν•™λ²ˆκ³Ό μž₯ν•™κΈˆ 내역을 좜λ ₯ν•˜λΌ.

mysql> select stu_no, jang_total

→ from fee

→ where jang_total > 0;

​

​

예제 7-2) 등둝 ν…Œμ΄λΈ”("FEE")μ—μ„œ ν•™κΈˆμ„ 1,000,000 이상 μ§€κΈ‰ 받은 학생 μ€‘μ—μ„œ 2회 이상 지급받은 ν•™μƒμ˜ ν•™λ²ˆκ³Ό, 지급받은 횟수λ₯Ό ν•™λ²ˆ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ 좜λ ₯ν•˜λΌ.

mysql> select stu_no, count(*)

→ ​from fee

→ where jang_total > 1000000

→ group by stu_no

→ having count(*) > 1

→ order by stu_no desc;

​

​

*FROM 절

이 ν…Œμ΄λΈ”μ—μ„œλ§Œ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€λŠ” 뜻

​

*WHERE절

쑰건

​

*GROUP BY절

κ·Έλ£Ήλ³„λ‘œ 검색을 ν•  λ•Œ μ‚¬μš©

group byμ ˆμ„ μ‚¬μš©ν•  땐 κ·Έλ£Ή ν•¨μˆ˜λ₯Ό 같이 μ‚¬μš©ν•΄μ•Όν•œλ‹€

​

*HAVING절

having절과 whereμ ˆμ„ μ„œλ‘œ 비ꡐ할 수 μžˆλŠ”λ°, κ·Έ 차이점은 whereμ ˆμ€ fromμ ˆμ—μ„œ μƒμ„±λœ 쀑간 ν…Œμ΄λΈ”μ—μ„œ λ™μž‘ν•˜κ³ , havingμ ˆμ€ group byμ ˆμ—μ„œ μƒμ„±λœ 쀑간 ν…Œμ΄λΈ”μ—μ„œ λ™μž‘ν•œλ‹€.

μˆ˜ν–‰λœ 과정은 λ™μΌν•˜λ‹€.

havingμ ˆμ„ ν¬ν•¨μ‹œμΌ°μ„ λ•Œ SQL은 쑰건을 μ°Έμ‘°ν•˜μ—¬ 행을 μ„ νƒν•œλ‹€.

​

*SELECT절

μ΅œμ’… κ²°κ³Ό ν…Œμ΄λΈ”μ— ν‘œν˜„λ  열을 μ§€μ •ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©λœλ‹€.

λ‹€μ‹œ λ§ν•˜λ©΄ selectμ ˆμ€ 열을 μ„ νƒν•˜λŠ” 것.

​

*ORDER BY절

λ§ˆμ§€λ§‰μœΌλ‘œ μˆ˜ν–‰λ˜λŠ” 절둜 쀑간 κ²°κ³Ό ν…Œμ΄λΈ”μ˜ λ‚΄μš©μ— 영ν–₯을 μ£Όμ§€ μ•ŠλŠ”λ‹€.

κ·ΈλŸ¬λ‚˜ λ§ˆμ§€λ§‰κΉŒμ§€ μ„ νƒλœ 행을 μ •λ ¬ν•œλ‹€.

λ°˜μ‘ν˜•