๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Data Base/MySQL

MySQL 14๋ฒˆ์งธ์ˆ˜์—…

by ์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 2. 8.
๋ฐ˜์‘ํ˜•

โ–ถ ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜

โ€‹

๋ฐฉ๋ฒ• 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์ ˆ

๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ์ ˆ๋กœ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋งˆ์ง€๋ง‰๊นŒ์ง€ ์„ ํƒ๋œ ํ–‰์„ ์ •๋ ฌํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•

'Data Base > MySQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

MySQL 16๋ฒˆ์งธ์ˆ˜์—…  (0) 2021.02.08
MySQL 15๋ฒˆ์งธ์ˆ˜์—…  (0) 2021.02.08
MySQL 13๋ฒˆ์งธ์ˆ˜์—…  (0) 2021.02.08
MySQL 12๋ฒˆ์งธ์ˆ˜์—…  (0) 2021.02.08
MySQL 11๋ฒˆ์งธ์ˆ˜์—…  (0) 2021.02.08

๋Œ“๊ธ€