본문 바로가기
자격증/정보처리기사 실기

정보처리기사 실기 8장 SQL 응용

by 리드민 2021. 9. 11.
반응형

SECTION 118 SQL - DDL

(1) DDL(Data Define Language, 데이터 정의어)

DB를 구축하거나 수정할 목적으로 사용하는 언어

CREATE, ALTER, DROP

(3) CREATE DOMAIN

도메인을 정희하는 명령문

표기 형식

CREATE DOMAIN 도메인명 [AS] 데이터_타입
           [DEFAULT 기본값]
           [CONSTRAINT 제약조건명 CHECK (범위값)];

예제) '성별'을 '남' 또는 '여'와 같이 정해진 1개의 문자로 표현되는 도메인 SEX를 정의하는 SQL문은 다음과 같다.

CREATE DOMAIN SEX CHAR(1)
       DEFAULT '남'
       CONSTRAINT VALID-SEX CHECK(VALUE IN ('남', '여'));

(4) CREATE TABLE

CREATE TABLE은 테이블을 정의하는 명령문이다.

ex) '이름', '학번', '전공', '성별', '생년월일'로 구성된 <학생> 테이블을 정의한느 SQL문을 작성하시오. 단, 제약 조건은 다음과 같다.

'이름'은 NULL이 올 수 없고, '학번'은 기본키이다.

'전공'은 <학과> 테이블의 '학과코드'를 참조하는 외래키로 사용된다.

<학과> 테이블에서 삭제가 일어나면 관련된 튜플들의 전공 값을 NULL로 만든다.

<학과> 테이블에서 '학과코드'가 변경되면 전공 값도 같은 값으로 변경한다.

'생년월일'은 1980-01-01 이후의 데이터만 저장할 수 있다.

제약 조건의 이름은 '생년월일제약'으로 한다.

각 속성의 데이터 타입은 적당하게 지정한다. 단 '성별'은 도메인 'SEX'를 사용한다.

CREATE TABLE 학생
이름 VARCHAR(15) NOT NULL,
학번 CHAR(8),
전공 CHAR(5),
성별 SEX,
생년월일 DATE,
PRIMARY KEY(학번),
FOREIGN KEY(전공) REFERENCES 학과(학과코드)

ON DELETE SET NULL
ON UPDATE CASCADE,
CONSTRAINT 생년월일제약
CHECK(생년월일>='1980-01-01'));

(5) CREATE VIEW

CREATE VIEW는 뷰(VIEW)를 정의하는 명령문이다.

표기 형식

CREATE VIEW 뷰명[(속성명[, 속성명, ...])]
AS SELECT 문;

예제) <고객> 테이블에서 '주소'가 '안산시'인 고객들의 '성명'과 '전화번호'를 '안산고객'이라는 뷰로 정의하시오.

CREATE VIEW 안산고객(성명, 전화번호)
AS SELECT 성명, 전화번호
FROM 고객
WHERE 주소='안산시';

(7) ALTER TABLE

예제1) <학생> 테이블에 최대 3문자로 구성되는 '학년' 속성 추가하시오.

ALTER TABLE 학생 ADD 학년 VARCHAR(3);

예제2) <학생> 테이블의 '학번' 필드의 데이터 타입과 크기를 VARCHAR(10)로 하고 NULL 값이 입력되지 않도록 변경하시오.

ALTER TABLE 학생 ALTER 학번 VARCHAR(10) NOT NULL;

(8) DROP

예제) <학생> 테이블을 제거하되, <학생> 테이블을 참조하는 모든 데이터를 함께 제거하시오.

DROP TABLE 학생 CASCADE;

 

SECTION 119 SQL - DCL

(2) GRANT / REVOKE

예제1) 사용자 ID가 "NABI"인 사람에게 테이터베이스 및 테이블을 생성할 수 있는 권한을 부여하는 SQL 문을 작성하시오.

GRANT RESOURCE TO NABI;

예제2) 사용자 ID가 "STAR"인 사람에게 단순히 데이터베이스에 있는 정보를 검색할 수 있는 권한을 부여하는 SQL문을 작성하시오.

GRANT CONNECT TO STAR;

예제3) 사용자 ID까 "NABI"인 사람에게 부여한 <고객> 테이블에 대한 권한 중 UPDATE 권한을 다른 사람에게 부여할 수 있는 권한만 취소하는 SQL문을 작성하시오.

REVOKE GRANT OPTION FOR UPDATE ON 고객 FROM STAR;

(5) SAVEPOINT

예제1) <사원> 테이블에서 '사원번호'가 40인 사원의 정보를 삭제한 후 COMMIT을 수행하시오.

DELETE FROM 사원 WHERE 사원번호 = 40;
COMMIT;

예제2) '사원번호'가 30인 사원의 정보를 삭제하시오.

DELETE FROM 사원 WHERE 사원번호='30';

 

반응형