문과생의 데이터 연습

노랭이 실습 (77번 문제) 본문

SQL/SQLD

노랭이 실습 (77번 문제)

의인은 믿음으로 2022. 5. 2. 21:16
728x90

SQLD 노랭이 책에 나오는 문제들 중 일부를 MySQL로 실습을 해보고자 합니다!

1.) Table 생성 

CREATE TABLE student (
	   st_num  INT ,
       st_name VARCHAR(20),
       d_num INT
);
INSERT INTO student (st_num, st_name, d_num)
VALUES (1001, 'yoo', 10),
       (1002, 'kim', 30),
       (1003, 'lee', 20),
       (1004, 'park', 10),
       (1005, 'choi', 20),
       (1006, 'jeong', 10) ;


CREATE TABLE department(
	   dept_num  INT ,
	   dept_name VARCHAR(20)
);
INSERT INTO department (dept_num, dept_name) 
VALUES (10, '컴퓨터공학과'),
       (20, '원자력공학과'),
       (30, '전자계산학과') ;


                                                                 문제를 풀어보죠~

서브쿼리문을 정확히 해석하고 결과를 보기위해서 서브쿼리 문만 한번 쳐봅시다. 

72번 문제처럼 Join하고 and 절이 같이 있지만 where 형태 Join으로 결국 Inner Join 결과로 나올테니 상상력은 생각보다 할만 할겁니다 ㅎ 

 

select * 
from student,
     department 
where department.dept_num = student.d_num ;

and절 없이 시행하면 위 결과가 나옵니다. 여기서 and절을 통해 '전자계산학과'만 뽑으라 했으니 2행만 출력되겠네요.

만약!! Left Join이면서 and절이 었다면(72번 같이)  전자계산학과를 제외한 나머지들도 출력은 되지만 null값으로 나오겠죠! 

 

select * 
from student,
     department 
where department.dept_num = student.d_num 
and  department.dept_name = '전자계산학과' ;

그런데 문제에서 not exists를 사용했기 떄문에 

전자계산학과를 제외한 나머지 개수를 count하면 

총 5개(답)가 나오네요! 

 

다음 글에서도 SQLD 실습 문제 내용을 다뤄보겠습니다.

 

728x90

'SQL > SQLD' 카테고리의 다른 글

[SQLD] 45회 합격 후기!  (0) 2022.06.18
노랭이 실습 (72번 문제)  (0) 2022.05.02
Comments