백엔드/MySQL

MySQL JOIN(1)

짱뚱짱 2024. 8. 30. 16:37

 

이중에서 가장 많이 쓰이는 건 left join과 inner join이다.

일반적으로 join 이라고 하면 inner join을 말한다. 기본값.

 

--school db에서 활용
--1. at_year을 2024로 업데이트

update attend set at_year='2024';
mysql> select * from attend;
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+
| at_num | at_std_num | at_co_code | at_year | at_term | at_mid | at_final | at_attend | at_hw | at_repitition | at_score |
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+
|      1 | 2020160001 | 2020msc001 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|      2 | 2020160002 | 2020msc001 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|      3 | 2023160002 | 2021deg001 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|      4 | 2023160002 | 2021deg002 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|      5 | 2019160123 | 2020msc002 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|      6 | 2019456001 | 2020msc002 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|      7 | 2020123001 | 2020ipc001 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|      8 | 2020123020 | 2020ipc001 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|      9 | 2020123020 | 2022che001 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     10 | 2020123001 | 2022che001 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     11 | 2019456001 | 2020ipc002 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     12 | 2019160123 | 2020ipc002 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     13 | 2022123001 | 2020msc002 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     14 | 2020160002 | 2020msc002 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     15 | 2019160123 | 2020msc001 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     16 | 2019456001 | 2020msc001 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     17 | 2023160002 | 2022che001 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     18 | 2022123001 | 2022che001 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     19 | 2023160001 | 2020msc002 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     20 | 2022123002 | 2021deg001 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     21 | 2022123002 | 2021deg002 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
|     22 | 2023160002 | 2020msc002 |    2024 |    NULL |      0 |        0 |         0 |     0 | n             | NULL     |
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+

--2. at_term 학기 11명은(1~11) => 1 	/   12~22 => 2로
--업데이트 (if문 / case when then 활용)
update attend set at_term =
if(at_num <12, 1, 2);

update attend set at_term = 
case
when at_num>= 1 and at_num <=11 then 1
when at_num>=12 and at_num<=22 then 2
end;
mysql> select * from attend;
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+
| at_num | at_std_num | at_co_code | at_year | at_term | at_mid | at_final | at_attend | at_hw | at_repitition | at_score |
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+
|      1 | 2020160001 | 2020msc001 |    2024 |       1 |      0 |        0 |         0 |     0 | n             | NULL     |
|      2 | 2020160002 | 2020msc001 |    2024 |       1 |      0 |        0 |         0 |     0 | n             | NULL     |
|      3 | 2023160002 | 2021deg001 |    2024 |       1 |      0 |        0 |         0 |     0 | n             | NULL     |
|      4 | 2023160002 | 2021deg002 |    2024 |       1 |      0 |        0 |         0 |     0 | n             | NULL     |
|      5 | 2019160123 | 2020msc002 |    2024 |       1 |      0 |        0 |         0 |     0 | n             | NULL     |
|      6 | 2019456001 | 2020msc002 |    2024 |       1 |      0 |        0 |         0 |     0 | n             | NULL     |
|      7 | 2020123001 | 2020ipc001 |    2024 |       1 |      0 |        0 |         0 |     0 | n             | NULL     |
|      8 | 2020123020 | 2020ipc001 |    2024 |       1 |      0 |        0 |         0 |     0 | n             | NULL     |
|      9 | 2020123020 | 2022che001 |    2024 |       1 |      0 |        0 |         0 |     0 | n             | NULL     |
|     10 | 2020123001 | 2022che001 |    2024 |       1 |      0 |        0 |         0 |     0 | n             | NULL     |
|     11 | 2019456001 | 2020ipc002 |    2024 |       1 |      0 |        0 |         0 |     0 | n             | NULL     |
|     12 | 2019160123 | 2020ipc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     13 | 2022123001 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     14 | 2020160002 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     15 | 2019160123 | 2020msc001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     16 | 2019456001 | 2020msc001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     17 | 2023160002 | 2022che001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     18 | 2022123001 | 2022che001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     19 | 2023160001 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     20 | 2022123002 | 2021deg001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     21 | 2022123002 | 2021deg002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     22 | 2023160002 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+

--3. at_mid:40 / at_final:40 / at_hw:10 / at_attend:10
--1학기 점수만 채우기 (3명은 잘하게, 3명은 못하게, 나머지는 골고루) => 11번까지만 채우면 됨.
update attend set at_mid = 30, at_final=38, at_hw=9,at_attend=8 where at_num = 1;
update attend set at_mid = 40, at_final=40, at_hw=10,at_attend=10 where at_num = 2;
update attend set at_mid = 39, at_final=39, at_hw=8,at_attend=9 where at_num = 3;
update attend set at_mid = 37, at_final=20, at_hw=1,at_attend=9 where at_num = 4;
update attend set at_mid = 22, at_final=11, at_hw=2,at_attend=1 where at_num = 5;
update attend set at_mid = 10, at_final=15, at_hw=3,at_attend=2 where at_num = 6;
update attend set at_mid = 25, at_final=8, at_hw=9,at_attend=5 where at_num = 7;
update attend set at_mid = 21, at_final=35, at_hw=5,at_attend=4 where at_num = 8;
update attend set at_mid = 23, at_final=26, at_hw=6,at_attend=6 where at_num = 9;
update attend set at_mid = 31, at_final=24, at_hw=7,at_attend=7 where at_num = 10;
update attend set at_mid = 26, at_final=18, at_hw=7,at_attend=8 where at_num = 11;
mysql> select * from attend;
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+
| at_num | at_std_num | at_co_code | at_year | at_term | at_mid | at_final | at_attend | at_hw | at_repitition | at_score |
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+
|      1 | 2020160001 | 2020msc001 |    2024 |       1 |     30 |       38 |         8 |     9 | n             | NULL     |
|      2 | 2020160002 | 2020msc001 |    2024 |       1 |     40 |       40 |        10 |    10 | n             | NULL     |
|      3 | 2023160002 | 2021deg001 |    2024 |       1 |     39 |       39 |         9 |     8 | n             | NULL     |
|      4 | 2023160002 | 2021deg002 |    2024 |       1 |     37 |       20 |         9 |     1 | n             | NULL     |
|      5 | 2019160123 | 2020msc002 |    2024 |       1 |     22 |       11 |         1 |     2 | n             | NULL     |
|      6 | 2019456001 | 2020msc002 |    2024 |       1 |     10 |       15 |         2 |     3 | n             | NULL     |
|      7 | 2020123001 | 2020ipc001 |    2024 |       1 |     25 |        8 |         5 |     9 | n             | NULL     |
|      8 | 2020123020 | 2020ipc001 |    2024 |       1 |     21 |       35 |         4 |     5 | n             | NULL     |
|      9 | 2020123020 | 2022che001 |    2024 |       1 |     23 |       26 |         6 |     6 | n             | NULL     |
|     10 | 2020123001 | 2022che001 |    2024 |       1 |     31 |       24 |         7 |     7 | n             | NULL     |
|     11 | 2019456001 | 2020ipc002 |    2024 |       1 |     26 |       18 |         8 |     7 | n             | NULL     |
|     12 | 2019160123 | 2020ipc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     13 | 2022123001 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     14 | 2020160002 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     15 | 2019160123 | 2020msc001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     16 | 2019456001 | 2020msc001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     17 | 2023160002 | 2022che001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     18 | 2022123001 | 2022che001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     19 | 2023160001 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     20 | 2022123002 | 2021deg001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     21 | 2022123002 | 2021deg002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     22 | 2023160002 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+

/*
4. at_score(학점) 1학기만 채우기
at_mid + at_final + at_hw + at_attend >= 90 A
at_mid + at_final + at_hw + at_attend >= 80 B
at_mid + at_final + at_hw + at_attend >= 70 C
at_mid + at_final + at_hw + at_attend >= 60 D
나머지는 F
*/

update attend set at_score = 
case
when at_mid + at_final + at_hw + at_attend >= 90 then 'A'
when at_mid + at_final + at_hw + at_attend >= 80 then 'B'
when at_mid + at_final + at_hw + at_attend >= 70 then 'C'
when at_mid + at_final + at_hw + at_attend >= 60 then 'D'
else 'F'
end
where at_term=1;

mysql> select * from attend;
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+
| at_num | at_std_num | at_co_code | at_year | at_term | at_mid | at_final | at_attend | at_hw | at_repitition | at_score |
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+
|      1 | 2020160001 | 2020msc001 |    2024 |       1 |     30 |       38 |         8 |     9 | n             | B        |
|      2 | 2020160002 | 2020msc001 |    2024 |       1 |     40 |       40 |        10 |    10 | n             | A        |
|      3 | 2023160002 | 2021deg001 |    2024 |       1 |     39 |       39 |         9 |     8 | n             | A        |
|      4 | 2023160002 | 2021deg002 |    2024 |       1 |     37 |       20 |         9 |     1 | n             | D        |
|      5 | 2019160123 | 2020msc002 |    2024 |       1 |     22 |       11 |         1 |     2 | n             | F        |
|      6 | 2019456001 | 2020msc002 |    2024 |       1 |     10 |       15 |         2 |     3 | n             | F        |
|      7 | 2020123001 | 2020ipc001 |    2024 |       1 |     25 |        8 |         5 |     9 | n             | F        |
|      8 | 2020123020 | 2020ipc001 |    2024 |       1 |     21 |       35 |         4 |     5 | n             | D        |
|      9 | 2020123020 | 2022che001 |    2024 |       1 |     23 |       26 |         6 |     6 | n             | D        |
|     10 | 2020123001 | 2022che001 |    2024 |       1 |     31 |       24 |         7 |     7 | n             | D        |
|     11 | 2019456001 | 2020ipc002 |    2024 |       1 |     26 |       18 |         8 |     7 | n             | F        |
|     12 | 2019160123 | 2020ipc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     13 | 2022123001 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     14 | 2020160002 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     15 | 2019160123 | 2020msc001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     16 | 2019456001 | 2020msc001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     17 | 2023160002 | 2022che001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     18 | 2022123001 | 2022che001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     19 | 2023160001 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     20 | 2022123002 | 2021deg001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     21 | 2022123002 | 2021deg002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     22 | 2023160002 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+

--5. at_repitition(재수강 여부) 1학기만 채우기
--at_score 'F' 또는 at_attend가 3이하면 y

update attend set at_repitition=
case 
when at_score='F' or at_attend<=3 then 'y'
else 'n'
end 
where at_term=1;

mysql> select * from attend;
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+
| at_num | at_std_num | at_co_code | at_year | at_term | at_mid | at_final | at_attend | at_hw | at_repitition | at_score |
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+
|      1 | 2020160001 | 2020msc001 |    2024 |       1 |     30 |       38 |         8 |     9 | n             | B        |
|      2 | 2020160002 | 2020msc001 |    2024 |       1 |     40 |       40 |        10 |    10 | n             | A        |
|      3 | 2023160002 | 2021deg001 |    2024 |       1 |     39 |       39 |         9 |     8 | n             | A        |
|      4 | 2023160002 | 2021deg002 |    2024 |       1 |     37 |       20 |         9 |     1 | n             | D        |
|      5 | 2019160123 | 2020msc002 |    2024 |       1 |     22 |       11 |         1 |     2 | y             | F        |
|      6 | 2019456001 | 2020msc002 |    2024 |       1 |     10 |       15 |         2 |     3 | y             | F        |
|      7 | 2020123001 | 2020ipc001 |    2024 |       1 |     25 |        8 |         5 |     9 | y             | F        |
|      8 | 2020123020 | 2020ipc001 |    2024 |       1 |     21 |       35 |         4 |     5 | n             | D        |
|      9 | 2020123020 | 2022che001 |    2024 |       1 |     23 |       26 |         6 |     6 | n             | D        |
|     10 | 2020123001 | 2022che001 |    2024 |       1 |     31 |       24 |         7 |     7 | n             | D        |
|     11 | 2019456001 | 2020ipc002 |    2024 |       1 |     26 |       18 |         8 |     7 | y             | F        |
|     12 | 2019160123 | 2020ipc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     13 | 2022123001 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     14 | 2020160002 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     15 | 2019160123 | 2020msc001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     16 | 2019456001 | 2020msc001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     17 | 2023160002 | 2022che001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     18 | 2022123001 | 2022che001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     19 | 2023160001 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     20 | 2022123002 | 2021deg001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     21 | 2022123002 | 2021deg002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     22 | 2023160002 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+

 

-- score별 인원수 집계(단, null은 제외)
select at_score, count(*) from attend
group by at_score
having at_score is not null
order by at_score;
+----------+----------+
| at_score | count(*) |
+----------+----------+
| A        |        2 |
| B        |        1 |
| D        |        4 |
| F        |        4 |
+----------+----------+

-- 재수강 인원 집계
select at_repitition, count(at_repitition) from attend
group by at_repitition
having at_repitition = 'y';
+---------------+----------------------+
| at_repitition | count(at_repitition) |
+---------------+----------------------+
| y             |                    4 |
+---------------+----------------------+


--C학점이 하나도 없으므로 F한명을 C로 변경
update attend set at_mid=30, at_final=30 where at_num=11;

--학점 다시 업데이트
update attend set at_score = 
case
when at_mid + at_final + at_hw + at_attend >= 90 then 'A'
when at_mid + at_final + at_hw + at_attend >= 80 then 'B'
when at_mid + at_final + at_hw + at_attend >= 70 then 'C'
when at_mid + at_final + at_hw + at_attend >= 60 then 'D'
else 'F'
end
where at_term=1;

--재수강 여부 다시 업데이트
update attend set at_repitition=
case 
when at_score='F' or at_attend<=3 then 'y'
else 'n'
end 
where at_term=1;

mysql> select * from attend;
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+
| at_num | at_std_num | at_co_code | at_year | at_term | at_mid | at_final | at_attend | at_hw | at_repitition | at_score |
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+
|      1 | 2020160001 | 2020msc001 |    2024 |       1 |     30 |       38 |         8 |     9 | n             | B        |
|      2 | 2020160002 | 2020msc001 |    2024 |       1 |     40 |       40 |        10 |    10 | n             | A        |
|      3 | 2023160002 | 2021deg001 |    2024 |       1 |     39 |       39 |         9 |     8 | n             | A        |
|      4 | 2023160002 | 2021deg002 |    2024 |       1 |     37 |       20 |         9 |     1 | n             | D        |
|      5 | 2019160123 | 2020msc002 |    2024 |       1 |     22 |       11 |         1 |     2 | y             | F        |
|      6 | 2019456001 | 2020msc002 |    2024 |       1 |     10 |       15 |         2 |     3 | y             | F        |
|      7 | 2020123001 | 2020ipc001 |    2024 |       1 |     25 |        8 |         5 |     9 | y             | F        |
|      8 | 2020123020 | 2020ipc001 |    2024 |       1 |     21 |       35 |         4 |     5 | n             | D        |
|      9 | 2020123020 | 2022che001 |    2024 |       1 |     23 |       26 |         6 |     6 | n             | D        |
|     10 | 2020123001 | 2022che001 |    2024 |       1 |     31 |       24 |         7 |     7 | n             | D        |
|     11 | 2019456001 | 2020ipc002 |    2024 |       1 |     30 |       30 |         8 |     7 | n             | C        |
|     12 | 2019160123 | 2020ipc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     13 | 2022123001 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     14 | 2020160002 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     15 | 2019160123 | 2020msc001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     16 | 2019456001 | 2020msc001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     17 | 2023160002 | 2022che001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     18 | 2022123001 | 2022che001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     19 | 2023160001 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     20 | 2022123002 | 2021deg001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     21 | 2022123002 | 2021deg002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
|     22 | 2023160002 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     |
+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+

--재수강 학생 명단
select s.std_name from 
student s inner join attend a on s.std_num = a.at_std_num
where a.at_repitition = 'y'; 
+----------+
| std_name |
+----------+
| 전봉준   |
| 강길동   |
| 강나래   |
+----------+


select * from student s 
inner join attend a on s.std_num = a.at_std_num
inner join course c on a.at_co_code = c.co_code;
+------------+----------+--------------+----------+-----------+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+------------+----------------+--------------+----------+---------+----------------------+
| std_num    | std_name | std_major    | std_term | std_point | at_num | at_std_num | at_co_code | at_year | at_term | at_mid | at_final | at_attend | at_hw | at_repitition | at_score | co_code    | co_name        | co_professor | co_point | co_time | co_timetable         |
+------------+----------+--------------+----------+-----------+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+------------+----------------+--------------+----------+---------+----------------------+
| 2020123001 | 강나래   | 화학공학     |        1 |        56 |      7 | 2020123001 | 2020ipc001 |    2024 |       1 |     25 |        8 |         5 |     9 | y             | F        | 2020ipc001 | 컴퓨터개론     | 유관순       |        2 |       2 | 화1A,1B,2A,2B        |
| 2020123020 | 박철수   | 화학공학     |        1 |        57 |      8 | 2020123020 | 2020ipc001 |    2024 |       1 |     21 |       35 |         4 |     5 | n             | D        | 2020ipc001 | 컴퓨터개론     | 유관순       |        2 |       2 | 화1A,1B,2A,2B        |
| 2019456001 | 강길동   | 디자인       |        3 |        60 |     11 | 2019456001 | 2020ipc002 |    2024 |       1 |     30 |       30 |         8 |     7 | n             | C        | 2020ipc002 | 기초전기       | 이순신       |        3 |       4 | 월1A,1B,2A목1A,1B,2A |
| 2019160123 | 전봉준   | 컴퓨터공학과 |        2 |        64 |     12 | 2019160123 | 2020ipc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     | 2020ipc002 | 기초전기       | 이순신       |        3 |       4 | 월1A,1B,2A목1A,1B,2A |
| 2020160001 | 강철수   | 컴퓨터공학   |        1 |        40 |      1 | 2020160001 | 2020msc001 |    2024 |       1 |     30 |       38 |         8 |     9 | n             | B        | 2020msc001 | 대학수학기초   | 홍길동       |        3 |       3 | 월1A,1B,2A수1A,1B,2A |
| 2020160002 | 나영희   | 컴퓨터공학   |        1 |        60 |      2 | 2020160002 | 2020msc001 |    2024 |       1 |     40 |       40 |        10 |    10 | n             | A        | 2020msc001 | 대학수학기초   | 홍길동       |        3 |       3 | 월1A,1B,2A수1A,1B,2A |
| 2019160123 | 전봉준   | 컴퓨터공학과 |        2 |        64 |     15 | 2019160123 | 2020msc001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     | 2020msc001 | 대학수학기초   | 홍길동       |        3 |       3 | 월1A,1B,2A수1A,1B,2A |
| 2019456001 | 강길동   | 디자인       |        3 |        60 |     16 | 2019456001 | 2020msc001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     | 2020msc001 | 대학수학기초   | 홍길동       |        3 |       3 | 월1A,1B,2A수1A,1B,2A |
| 2019160123 | 전봉준   | 컴퓨터공학과 |        2 |        64 |      5 | 2019160123 | 2020msc002 |    2024 |       1 |     22 |       11 |         1 |     2 | y             | F        | 2020msc002 | 프로그래밍일반 | 임꺽정       |        3 |       3 | 월1A,1B,2A목1A,1B,2A |
| 2019456001 | 강길동   | 디자인       |        3 |        60 |      6 | 2019456001 | 2020msc002 |    2024 |       1 |     10 |       15 |         2 |     3 | y             | F        | 2020msc002 | 프로그래밍일반 | 임꺽정       |        3 |       3 | 월1A,1B,2A목1A,1B,2A |
| 2022123001 | 강다운   | 화학공학     |        1 |        45 |     13 | 2022123001 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     | 2020msc002 | 프로그래밍일반 | 임꺽정       |        3 |       3 | 월1A,1B,2A목1A,1B,2A |
| 2020160002 | 나영희   | 컴퓨터공학   |        1 |        60 |     14 | 2020160002 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     | 2020msc002 | 프로그래밍일반 | 임꺽정       |        3 |       3 | 월1A,1B,2A목1A,1B,2A |
| 2023160001 | 이영철   | 컴퓨터공학   |        1 |        55 |     19 | 2023160001 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     | 2020msc002 | 프로그래밍일반 | 임꺽정       |        3 |       3 | 월1A,1B,2A목1A,1B,2A |
| 2023160002 | 최수지   | 디자인       |        1 |        65 |     22 | 2023160002 | 2020msc002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     | 2020msc002 | 프로그래밍일반 | 임꺽정       |        3 |       3 | 월1A,1B,2A목1A,1B,2A |
| 2023160002 | 최수지   | 디자인       |        1 |        65 |      3 | 2023160002 | 2021deg001 |    2024 |       1 |     39 |       39 |         9 |     8 | n             | A        | 2021deg001 | 디자인기초     | 황희         |        2 |       3 | 목1A,1B,2A,2B        |
| 2022123002 | 김수진   | 디자인       |        1 |        50 |     20 | 2022123002 | 2021deg001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     | 2021deg001 | 디자인기초     | 황희         |        2 |       3 | 목1A,1B,2A,2B        |
| 2023160002 | 최수지   | 디자인       |        1 |        65 |      4 | 2023160002 | 2021deg002 |    2024 |       1 |     37 |       20 |         9 |     1 | n             | D        | 2021deg002 | 색채이론       | 신사임당     |        3 |       2 | 금1A,1B,2A,2B        |
| 2022123002 | 김수진   | 디자인       |        1 |        50 |     21 | 2022123002 | 2021deg002 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     | 2021deg002 | 색채이론       | 신사임당     |        3 |       2 | 금1A,1B,2A,2B        |
| 2020123020 | 박철수   | 화학공학     |        1 |        57 |      9 | 2020123020 | 2022che001 |    2024 |       1 |     23 |       26 |         6 |     6 | n             | D        | 2022che001 | 화학이론       | 김길동       |        3 |       2 | 월1A,1B,수2A,2B      |
| 2020123001 | 강나래   | 화학공학     |        1 |        56 |     10 | 2020123001 | 2022che001 |    2024 |       1 |     31 |       24 |         7 |     7 | n             | D        | 2022che001 | 화학이론       | 김길동       |        3 |       2 | 월1A,1B,수2A,2B      |
| 2023160002 | 최수지   | 디자인       |        1 |        65 |     17 | 2023160002 | 2022che001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     | 2022che001 | 화학이론       | 김길동       |        3 |       2 | 월1A,1B,수2A,2B      |
| 2022123001 | 강다운   | 화학공학     |        1 |        45 |     18 | 2022123001 | 2022che001 |    2024 |       2 |      0 |        0 |         0 |     0 | n             | NULL     | 2022che001 | 화학이론       | 김길동       |        3 |       2 | 월1A,1B,수2A,2B      |
+------------+----------+--------------+----------+-----------+--------+------------+------------+---------+---------+--------+----------+-----------+-------+---------------+----------+------------+----------------+--------------+----------+---------+----------------------+

-- A 학점 학생들의 명단을 출력
학번, 이름, 학점
select std_num, std_name, at_score from attend a
join student s on s.std_num = a.at_std_num
where a.at_score='A';
+------------+----------+----------+
| std_num    | std_name | at_score |
+------------+----------+----------+
| 2020160002 | 나영희   | A        |
| 2023160002 | 최수지   | A        |
+------------+----------+----------+

'백엔드 > MySQL' 카테고리의 다른 글

ROLL UP 및 RANK  (2) 2024.09.02
MySQL JOIN(2)  (0) 2024.09.02
새로운 DB 생성 및 외래키 지정  (1) 2024.08.30
ERD 그리기 실습  (0) 2024.08.29
MySQL generated columns 및 transaction  (3) 2024.08.29