INSERT
INTO TB_CLASS_TYPE
VALUES
(
'05'
, '논문지도'
);
춘 기술대학교 학생들의 정보가 포함되어 있는 학생일반정보 테이블을 만들고자 한다. 아래 내용을 참고하여 적절한 SQL 문을 작성하시오. (서브쿼리를 이용하시오)
CREATE TABLE TB_학생일반정보(
학번
, 학생이름
, 주소
)
AS
SELECT STUDENT_NO
, STUDENT_NAME
, STUDENT_ADDRESS
FROM TB_STUDENT;
국어국문학과 학생들의 정보만이 포함되어 있는 학과정보 테이블을 만들고자 한다. 아래 내용을 참고하여 적절한 SQL 문을 작성하시오. (힌트 : 방법은 다양함, 소신껏 작성하시오)
CREATE TABLE TB_국어국문학과(
학번
, 학생이름
, 출생년도
, 교수이름
)
AS
SELECT S.STUDENT_NO
, S.STUDENT_NAME
, EXTRACT(YEAR FROM TO_DATE(SUBSTR(STUDENT_SSN, 1, 2), 'RRRR'))
, P.PROFESSOR_NAME
FROM TB_STUDENT S
JOIN TB_PROFESSOR P ON(S.COACH_PROFESSOR_NO = P.PROFESSOR_NO)
WHERE S.DEPARTMENT_NO = '001';
💡참고
년도만 뽑아내는 경우
TO_CHAR(TO_DATE(SUBSTR(SSN, 1, 2), 'RR'), 'YYYY') 과
EXTRACT(YEAR FROM (TO_DATE(SUBSTR(SSN, 1, 2), 'RR'))는 같다.
현 학과들의 정원을 10% 증가시키게 되었다. 이에 사용할 SQL 문을 작성하시오. (단, 반올림을 사용하여 소수점 자릿수는 생기지 않도록 한다)
UPDATE TB_DEPARTMENT
SET CAPACITY = ROUND(CAPACITY * 1.1, 0);
학번 A413042인 박건우 학생의 주소가 "서울시 종로구 숭인동 181-21 "로 변경되었다고 한다. 주소지를 정정하기 위해 사용할 SQL 문을 작성하시오.
UPDATE TB_STUDENT
SET STUDENT_ADDRESS = '서울시 종로구 숭인동 181-21'
WHERE STUDENT_NO = 'A413042';
주민등록번호 보호법에 따라 학생정보 테이블에서 주민번호 뒷자리를 저장하지 않기로 결정하였다. 이 내용을 반영핛 적절한 SQL 문장을 작성하시오.
(예. 830530-2124663 ==> 830530 )
UPDATE TB_STUDENT
SET STUDENT_SSN = SUBSTR(STUDENT_SSN, 1, 6);
의학과 김명훈 학생은 2005년 1학기에 자신이 수강핚 '피부생리학' 점수가 잘못되었다는 것을 발견하고는 정정을 요청하였다. 담당 교수의 확인 받은 결과 해당 과목의 학점을 3.5로 변경키로 결정되었다. 적절한 SQL 문을 작성하시오.
UPDATE TB_GRADE
SET POINT = 3.5
WHERE STUDENT_NO = (SELECT STUDENT_NO
FROM TB_STUDENT
WHERE STUDENT_NAME = '김명훈'
AND DEPARTMENT_NO = '053'
)
AND TERM_NO = '200501'
AND CLASS_NO = (SELECT CLASS_NO FROM TB_CLASS WHERE CLASS_NAME = '피부생리학');
💡참고
동명이인 '김명훈' 이 또 있을 수도 있으니, STUDENT_NO을 검색할 때, 이름 뿐 아니라 학과도 함께 조건에 넣어줘야한다. 그렇지 않으면
"단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다." 이라는 오류가 발생하게 된다.
성적 테이블(TB_GRADE) 에서 휴학생들의 성적항목을 제거하시오.
DELETE
FROM TB_GRADE
WHERE STUDENT_NO IN (SELECT STUDENT_NO FROM TB_STUDENT WHERE ABSENCE_YN = 'Y');
💡참고
여러 행이 반환될 때에는 = 가 아닌 IN으로 사용한다.
또한 STUDENT_NO IN 이라면 뒤에 SELECT항목도 STUDENT_NO로 맞춰주는 것을 주의.