정보시스템감리사_데이터베이스

정보시스템 감리사 2023년 63번 문제

슬픈달 2023. 6. 2. 14:02
반응형

 

CREATE TABLE STUDENT (
  Sno int(4) NOT NULL,
  Sname varchar(50) NOT NULL,
  SYear int(4) NOT NULL,
  Dept varchar(50) NOT NULL,
  PRIMARY KEY (Sno)
) ENGINE=InnoDB DEFAULT CHARSET=euckr COMMENT='2023년 63번'
//

INSERT INTO STUDENT (Sno,Sname,SYear,Dept)
VALUES 
(1, 'Tom',      2, 'Computer'),
(2, 'Alice',    3, 'electronics'),
(3, 'Bob',      4, 'Chemistry'),
(4, 'Sam',      2, 'Computer'),
(5, 'Kim',      3, 'electronics'),
(6, 'Park',     4, 'Chemistry'),
(7, 'Cho',      2, 'Computer'),
(8, 'Hong',     3, 'electronics');

 

CREATE TABLE ENROLL (
  Sno int(4) NOT NULL,
  Cno varchar(50) NOT NULL,
  Grade int(4) NOT NULL,
  PRIMARY KEY (Sno,Cno)
) ENGINE=InnoDB DEFAULT CHARSET=euckr COMMENT='2023년 63번'
//

INSERT INTO ENROLL (Sno,Cno,Grade)
VALUES 
(1, 'C411',      95),
(1, 'C412',    32),
(3, 'C413',      55),
(4, 'C412',      77),
(5, 'C412',      69),
(5, 'C413',     99),
(7, 'C411',      75),
(8, 'C413',     88);

 

① SELECT Sname, Dept, Grade
FROM STUDENT JOIN ENROLL WITH(Sno)
WHERE ENROLL.Cno = 'C413';

 

=> join 시 WITH(Sno) 를 사용하면 문법적 에러 발생

    WITH(Sno) 를 제거해도 원하는 쿼리 결과가 아님 


② SELECT Sname, Dept, Grade
FROM STUDENT NATURAL JOIN ENROLL USING(Sno)
WHERE ENROLL.Cno = 'C413';

 

=>  NATURAL JOIN 시  USING(Sno) 를 사용하면 문법적 에러 발생


③ SELECT Sname, Dept, Grade
FROM STUDENT NATURAL JOIN ENROLL ON
(STUDENT.Sno = ENROLL.Sno)
WHERE ENROLL.Cno = 'C413‘;

 

=>  NATURAL JOIN 시 ON (STUDENT.Sno = ENROLL.Sno) 를 사용하면 문법적 에러 발생


④ SELECT Sname, Dept, Grade
FROM STUDENT JOIN ENROLL ON (STUDENT.Sno =
ENROLL.Sno)
WHERE ENROLL.Cno = 'C413';

------------------------------------------------------------------------------

NATURAL JOIN 과  JOIN 의 차이 

------------------------------------------------------------------------------

반응형