λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Data Base/MySQL

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

by μ½”λ”©ν•˜λŠ” λΆ•μ–΄ 2021. 2. 9.
λ°˜μ‘ν˜•

예제 18-6) λ·° ν…Œμ΄λΈ”(V_AGES)μ—μ„œ μž¬ν•™μƒ 쀑 21μ„Έ 이상이고, 2018λ…„~2020년에 μž…ν•™ν•œ 학생을 κ΅¬ν•˜μ—¬λΌ.

A)

mysql> select * from V_AGES

-> where age > 20

-> and ibhak_year between '2018' and '2020';

​

​

예제 18-7) λ·° ν…Œμ΄λΈ”(V_AGES)λ₯Ό μ‚­μ œν•˜λΌ.

A)

​

 

​

β–Ά 뷰의 μ—΄ 이름

​

예제 18-8) μ§‘μ£Όμ†Œκ°€ μ„œμšΈνŠΉλ³„μ‹œμΈ ν•™μƒμ˜ ν•™λ²ˆ, 이름, 우편번호, ν˜„μ£Όμ†Œλ‘œ κ΅¬μ„±λœ λ·° ν…Œμ΄λΈ”(V_ADDRESS)λ₯Ό μƒμ„±ν•˜λΌ.

A)

​

​

예제 18-9) λ“±λ‘κΈˆ μ΄μ•‘λ³„λ‘œ 학생 인원 수 ν˜„ν™©μ„ μƒμ„±ν•˜λŠ” λ·° ν…Œμ΄λΈ” V_FEETOTALλ₯Ό μƒμ„±ν•˜λΌ.

A)

​

 

예제 18-10) λ“±λ‘κΈˆ μ΄μ•‘λ³„λ‘œ 학생 인원 수 ν˜„ν™©μ„ μƒμ„±ν•œ λ·° ν…Œμ΄λΈ” V_FEETOTAL의 λ‚΄μš©μ„ 좜λ ₯ν•˜λΌ.​

A)

mysql> select fee_total, row_total, 'λͺ…'

-> from v_feetotal;

​

​​

​

β–Ά 뷰의 λ³€κ²½

λ·° ν…Œμ΄λΈ”μ˜ λ³€κ²½ν•  행은 κΈ°λ³Έ ν…Œμ΄λΈ”μ— 기초λ₯Ό 두고 λ³€κ²½ν•œλ‹€. κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  뷰의 변경은 μ˜ˆμƒμΉ˜ μ•Šμ€ κ²°κ³Όλ₯Ό κ°€μ Έμ˜¬ 수 μžˆλ‹€. λ˜λ„λ‘μ΄λ©΄ μ‚¬μš© μ•ˆν•˜λŠ”κ²Œ μ’‹μŒ

​

예제 18-11) ν•™μ ν…Œμ΄λΈ”μ—μ„œ 2000λ…„ 이전에 μΆœμƒν•œ λͺ¨λ“  학생에 λŒ€ν•œ λ·° ν…Œμ΄λΈ”(V_OLD)λ₯Ό μƒμ„±ν•˜λΌ.

A)

​

​

예제 18-12) λ·° ν…Œμ΄λΈ”(V_OLD)μ—μ„œ ν•™λ²ˆκ³Ό 이름, μΆœμƒλ…„λ„λ₯Ό 좜λ ₯ν•˜λΌ.

A)

mysql> select stu_no, stu_name, birthday

-> from v_old;

​

​

예제 18-13) V_OLD ν…Œμ΄λΈ”μ—μ„œ ν•™λ²ˆμ΄ 20181004인 생년월일을 "20001207"둜 λ³€κ²½ν•˜λΌ.

A)

​

​

예제 18-14) λ·° ν…Œμ΄λΈ”(V_OLD)의 μ‹€ν–‰κ²°κ³Όλ₯Ό ν™•μΈν•˜λΌ.

A)

mysql> select stu_no, stu_name, birthday

-> from v_old;

​

​

예제 18-15) STUDENT ν…Œμ΄λΈ”μ—μ„œ ν•™λ²ˆμ΄ 20181004인 ν•™μƒμ˜ ν•™λ²ˆκ³Ό 이름, μΆœμƒλ…„λ„λ₯Ό 좜λ ₯ν•˜λΌ.

A)

mysql> select stu_no, stu_name, birthday

-> from student

-> where stu_no = '20181004';

​

​

예제 18-16) ν•™μƒμ‹ μƒν…Œμ΄λΈ”μ—μ„œ 2000λ…„ 이전에 μΆœμƒν•œ 학생에 λŒ€ν•œ λ·° ν…Œμ΄λΈ”(V_OLD1)λ₯Ό μƒμ„±ν•˜λΌ.

A)

​​

​

​

β–Ά λ·° ν…Œμ΄λΈ”μ˜ 정보

​

예제 18-18) VIEWS ν…Œμ΄λΈ”μ—μ„œ λ·° ν…Œμ΄λΈ”(V_OLD1)의 정보λ₯Ό 좜λ ₯ν•˜λΌ.

A)

λ¨Όμ € λ°μ΄ν„°λ² μ΄μŠ€ λ°”κΏ”μ£ΌκΈ°

​

mysql> select table_name, table_catalog

-> from views

-> where table_name = 'v_old1';

​

​

​

​​

β–Ά λ·° ν…Œμ΄λΈ” ν†΅κ³„ν•¨μˆ˜ μ‚¬μš©

​​

1. WHEREμ ˆμ— ν†΅κ³„ν•¨μˆ˜ μ‚¬μš©

​

예제 18-19) 등둝 ν…Œμ΄λΈ”λ‘œλΆ€ν„° ν•™λ²ˆκ³Ό 학생별 λ“±λ‘κΈˆ λ‚©μž…μ΄μ•‘μ˜ ν•©κ³„λ‘œ κ΅¬μ„±ν•˜λŠ” λ·° ν…Œμ΄λΈ”(TOTALS)을 μƒμ„±ν•˜λΌ.

A)

​

​​

​

2. SELECTμ ˆμ— ν†΅κ³„ν•¨μˆ˜ μ‚¬μš©

 

예제 18-20) λ·° ν…Œμ΄λΈ”(TOTALS)λ‘œλΆ€ν„° 학생별 λ“±λ‘κΈˆ λ‚©μž…μ΄μ•‘μ˜ μ΅œλŒ€κ°’μ„ κ΅¬ν•˜μ—¬λΌ.

A)

mysql> select max(fee_total)

-> from totals;

​

​

예제 18-21) λ·° ν…Œμ΄λΈ”(TOTALS)κ³Ό ν•™μ ν…Œμ΄λΈ”μ„ μ΄μš©ν•˜μ—¬ ν•™λ²ˆ, 이름, λ‚©μž… 총앑을 좜λ ₯ν•˜λΌ.

A)

mysql> select s.stu_no, stu_name, fee_total

-> from student s inner join totals t

-> on s.stu_no = t.stu_no;

​​

​

​

3. WHEREμ ˆμ— λ‹€λ₯Έ ν…Œμ΄λΈ”μ„ λΆ€μ†μ§ˆμ˜μ–΄λ‘œ μ‚¬μš©ν•˜λŠ” 경우

​

예제 18-22) μˆ˜κ°• μ‹ μ²­ν•œ 학생 쀑에 λ·° ν…Œμ΄λΈ”(TOTALS)에 μ‘΄μž¬ν•˜λŠ” ν•™μƒμ˜ ν•™λ²ˆ, λ‚©μž…μ΄μ•‘μ„ 좜λ ₯ν•˜λΌ.

A)

mysql> select * from totals

-> where stu_no in

-> (select stu_no from attend);

​

​

​

4. ORDER BYμ ˆμ„ μ‚¬μš©ν•˜λŠ” 경우

​

예제 18-23) λ·° ν…Œμ΄λΈ”(TOTALS)에 μ‘΄μž¬ν•˜λŠ” ν•™μƒμ˜ ν•™λ²ˆ, λ‚©μž…μ΄μ•‘μ„ 좜λ ₯ν•˜λΌ. 단, 좜λ ₯ μˆœμ„œλŠ” λ‚©μž…μ΄μ•‘ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€β€‹.

A)

mysql> select * from totals

-> order by fee_total desc;

​

​

​

5. 집합 μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λŠ” 경우

​

예제 18-24) λ·° ν…Œμ΄λΈ”(TOTALS)에 μ‘΄μž¬ν•˜λŠ” ν•™μƒμ˜ ν•™λ²ˆκ³Ό 동아리 ν…Œμ΄λΈ”μ— μ‘΄μž¬ν•˜λŠ” ν•™μƒμ˜ ν•™λ²ˆμ„ ν•™λ²ˆ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ 좜λ ₯ν•˜λΌ.

A)

mysql> select stu_no from totals

-> union

-> select stu_no from circle

-> order by stu_no;

​

​

​

6. HAVINGμ ˆμ„ μ‚¬μš©ν•˜λŠ” 경우

​

예제 18-25) μˆ˜κ°•μ‹ μ²­ ν…Œμ΄λΈ”μ—μ„œ 학생별, μˆ˜κ°•λ…„λ„λ³„, ν•™κΈ°λ³„λ‘œ 그룹을 λ§Œλ“€κ³  이 그룹의 μˆ˜κ°•μ‹ μ²­ν•™μ μ΄ 5학점 이상인 ν•™μƒμ˜ ν•™λ²ˆ, 연도, ν•™κΈ°, μˆ˜κ°•ν•™μ  계λ₯Ό λ·° ν…Œμ΄λΈ” "V_SUGA"λ₯Ό μƒμ„±ν•˜λΌ.

A)

​

​

​

7. λ·° ν…Œμ΄λΈ”μ˜ μ œμ•½ 사항

VIEWν…Œμ΄λΈ”μ²˜λŸΌ 가상 ν…Œμ΄λΈ”μ€ κ·Έ 값을 λ³€κ²½ν•  수 μ—†λ‹€.

​​

​

​

<μ—°μŠ΅λ¬Έμ œ>

​

18-1) μž¬ν•™μƒμ˜ ν•™λ²ˆκ³Ό 등둝을 ν•œ ν•™μƒμ˜ 등둝 횟수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” V_DUNGCNTλΌλŠ” λ·° ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜λΌ.

A)

​

​

18-2) 적어도 ν•œ 번 μž…ν•™μž₯ν•™κΈˆμ„ λ°›κ³  ν•œλ²ˆ 이상 λ“±λ‘ν•œ 각 ν•™μƒμ˜ ν•™λ²ˆκ³Ό 이름을 κ°€μ§€λŠ” V_JANGμ΄λΌλŠ” λ·° ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜λΌ.

A)

​

​

18-3) 적어도 ν•œ 번 1,000,000원 이상 μž₯ν•™κΈˆμ„ 받은 각 ν•™μƒμ˜ ν•™λ²ˆκ³Ό 등둝년도, ν•™κΈ°, μž₯ν•™κΈˆμ˜ 총앑을 기둝할 V_TOTALSλΌλŠ” λ·° ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜λΌ.

A)

​

​​

​

β–Ά transactionκ³Ό lock

transaction은 μž‘μ—… 처리 전체λ₯Ό ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ λ¬Άμ–΄μ„œ μ²˜λ¦¬ν•  수 있게 ν•΄μ£ΌλŠ” 것

ex) 은행 거래 도쀑 μ‹œμŠ€ν…œμ μΈ λ¬Έμ œκ°€ λ°œμƒν•  λ•Œ κ·Έ 거래 자체λ₯Ό μ—†λ˜ κ²ƒμœΌλ‘œ 되돌릴 λ•Œ μ‚¬μš©.

​

​

*transaction μ‚¬μš©ν•˜κΈ°

transaction을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μžλ™μœΌλ‘œ commitλ˜λŠ” 것을 λ§‰μ•„μ€˜μ•Όν•¨.

μžλ™μœΌλ‘œ commitλ˜λŠ” 것을 λ§‰μŒ.

 

-μˆ˜μ •λœ λ‚΄μš©μœΌλ‘œ λ³€κ²½ν•΄μ„œ μ €μž₯ν•˜λ €λ©΄ commit; λ₯Ό μž…λ ₯.

λ°˜μ‘ν˜•

'Data Base > MySQL' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[MySQL] DB μ •κ·œν™”  (0) 2021.02.09
MySQL 문제  (0) 2021.02.09
MySQL 24λ²ˆμ§Έμˆ˜μ—…  (0) 2021.02.09
MySQL 23λ²ˆμ§Έμˆ˜μ—…  (0) 2021.02.09
MySQL 22λ²ˆμ§Έμˆ˜μ—…  (0) 2021.02.09

λŒ“κΈ€