SQL 오답노트
조회: 183
댓글: 0개
2023.09.25 19:10 월요일
20년 3회
9번 다음 <성적> 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수'를 검색하고자 한다. <처리 조건>을 참고하여 적합한 SQL문을 작성하시오.
<성적>
학번 과목번호 과목이름 학점 점수 123 101 컴퓨터구조 6 95 124 101 컴퓨터구조 6 84 125 302 데이터베이스 5 89 126 201 인공지능 5 92 127 302 데이터베이스 5 100 128 302 데이터베이스 5 88 129 201 인공지능 5 93 <결과>
과목이름 최소점수 최대점수 데이터베이스 88 100 인공지능 92 93 <처리조건>
WHERE문을 사용하지않는다 GROUP BY와 HAVING을 이용한다 집계함수를 사용하여 명령문을 구성한다 최소점수, 최대점수는 별칭을 위한 AS문을 이용한다 명령문 마지막의 세미콜론은 생략이 가능하다 인용 부호가 필요한 경우 작은 따옴표를 사용한다 접기
SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적 GROUP BY 과목이름 HAVING AVG(점수) >=90;
- DDL
- CREATE
CREATE TABLE 테이블명 (열 정의1, ...);
열 정의 - 열이름 자료형 [기본값] [NULL / NOT NULL] - ALTER
ALTER TABLE 테이블명 변경명령;
ALTER TABLE sample62 ADD newcol NUMBER;
ALTER TABLE sample62 MODIFY newcol VARCHAR(20);
ALTER TABLE sample62 RENAME COLUMN newcol TO c;
ALTER TABLE sample62 DROP COLUMN c; - DROP
DROP TABLE sample62; key
ALTER TABLE 테이블이름
ADD [CONSTRAINT 제약조건이름]
FOREIGN KEY (필드이름)
REFERENCES 테이블이름 (필드이름)
- CREATE
- count(*) as 'asdf' <- ' 를 뺴도 됨
- 차수 = Degree = Attribute의 수 = 속성의 수(관계 DB의 열)
기수 = Cardinality = Tuple의 수 = 대응수(관계 DB의 행) 21년 2회
6번 다음 <사원> 테이블과 <동아리> 테이블을 조인한 <결과>를 확인하여 <SQL문>의 괄호(1, 2)에 들어갈 알맞은 답을 쓰시오.
<사원>
코드 이름 부서 1 김 인사 2 나 경영지원 3 박 개발 4 이 <동아리>
코드 동아리명 1 테니스 3 탁구 4 볼링 <결과>
코드 이름 동아리명 1 김 테니스 2 나 3 박 탁구 4 이 볼링 <SQL문>
SELECT a.코드, 이름,동아리명 FROM 사원 a LEFT JOIN 동아리 b( 1 ) a. 코드=b.( 2 ) ; 접기
(1) ON
(2) 코드
21년 3회
10번 <A> 테이블과 < B>테이블을 참고하여 <SQL문>의 실행결과를 쓰시오
<A>
NAME smith allen scott <B>
RULE s% %t% <SQL문>
SELECT COUNT(*) CNT FROM A CROSS JOIN B WHERE A.NAME LIKE B.RULE; 접기
4
- where score > ALL <- ALL
- 관계 연산자
- select
σ(조건)R - project
π (속성리스트)R - join
R▷◁<속성=속성>S - division
R1(속성%속성)R2
- select
- INSERT INTO 테이블 이름 (열1, 열2, ...)
VALUE (값1, 값2 , ….)
열1열2 생략 가능 23년 2회
17번 뷰를 삭제할 때 참조된 뷰를 연쇄적으로 모두 삭제되도록 빈칸을 작성하시오.
DROP VIEW 뷰이름 (가); 접기
(가 ) cascade
RESTRICT : 뷰를 다른 곳에서 참조하고 있으면 삭제가 취소된다.
CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제된다.