★★ DDL
CREATE
CREATE SCHEMA
소유권자가 '홍길동'인 스키마 '대학교'를 정의하시오.
CREATE SCHEMA 스키마명 AUTHORIZATION 사용자id; | CREATE SCHEMA 대학교 AUTHORIZATION 홍길동; |
CREATE DOMAIN
속성 '남' 또는 '여' 중 하나만 저장할 수 있고, 기본 속성값은 '남'인 도메인 SEX를 정의하시오.
CREATE DOMAIN 도메인명 데이터타입 | CREATE DOMAIN SEX CHAR(1) |
DEFAULT 기본값 | DEFAULT '남' |
CONSTRAINT 제약조건명 CHECK (범위값); | CONSTRAINT VALID-SEX CHECK(VALUE IN ('남', '여')); |
CREATE TABLE
'이름', '학번', '전공', '성별', '생년월일'로 구성된 <학생> 테이블을 정의하시오.
- '이름'은 NULL이 올 수 없다.
- '학번'은 기본키이다.
- '전공'은 <학과> 테이블의 '학과코드'를 참조하는 외래키이다.
- <학과> 테이블에서 삭제가 일어나면 관련 튜플들의 전공 값을 NULL로 만든다.
- <학과> 테이블에서 '학과코드'가 변경되면 전공 값도 같은 값으로 변경한다.
- '생년월일'은 1980-01-01 이후의 데이터만 저장할 수 있다.
- 제약 조건의 이름은 '생년월일제약'이다.
- 각 속성의 데이터 타입의 경우 '이름'은 VARCHAR(15),'학번'은 CHAR(8), '전공'은 CHAR(5), '성별'은 'SEX', '생년월일'은 DATE를 사용한다.
CREATE TABLE 테이블명 | CREATE TABLE 학생 |
(속성명 데이터타입 DEFAULT 기본값 NOT NULL | (이름 VARCHAR(15) NOT NULL |
... | , 학번 CHAR(8) |
, 전공 CHAR(5) | |
, 성별 SEX | |
, 생년월일 DATE | |
, PRIMARY KEY(기본키속성명, ...) | , PRIMARY KEY(학번) |
, FOREIGN KEY(외래키속성명, ...) | , FOREIGN KEY(전공) |
REFERENCES 참조테이블(기본키속성명, ...) | REFERENCES 학과(학과코드) |
ON DELETE 옵션 | ON DELETE SET NULL |
ON UPDATE 옵션 | ON UPDATE CASCADE |
, CONSTRAINT 제약조건명 | , CONSTRAINT 생년월일제약 |
CHECK(조건식)); | CHECK(생년월일>='1980-01-01')); |
CREATE VIEW
<고객> 테이블에서 '주소'가 '안산시'인 고객들의 '성명'과 '전화번호'를 '안산고객'이라는 뷰로 정의하시오.
CREATE VIEW 뷰명(속성명, ...) | CREATE VIEW 안산고객(성명, 전화번호) |
AS SELECT문; | AS SELECT 성명, 전화번호 |
FROM 고객 | |
WHERE 주소 = '안산시'; |
★ CREATE INDEX
<고객> 테이블에서 UNIQUE한 특성을 갖는 '고객번호' 속성에 대해 내림차순으로 정렬하여 '고객번호_idx'라는 이름의 클러스터드 인덱스를 정의하시오.
CREATE UNIQUE INDEX 인덱스명 | CREATE UNIQUE INDEX 고객번호_idx |
ON 테이블명(속성명 ASC 또는 DESC, ...) | ON 고객(고객번호 DESC) |
CLUSTER; | CLUSTER; |
ALTER
ALTER TABLE
<학생> 테이블에 최대 3문자로 구성되는 '학년' 속성을 추가하시오. ★
ALTER TABLE 테이블명 ADD 속성명 데이터타입 DEFAULT '기본값'; | ALTER TABLE 학생 ADD 학년 VARCHAR(3); |
<학생> 테이블의 '학번' 속성의 데이터 타입과 크기를 VARCHAR(10)으로 하고 NULL 값이 입력되지 않도록 변경하시오.
ALTER TABLE 테이블명 ALTER 속성명 SET DEFAULT '기본값'; | ALTER TABLE 학생 ALTER 학번 VARCHAR(10) NOT NULL; |
<학생> 테이블의 '학년' 속성을 삭제하고, 이 속성을 참조하는 다른 모든 개체도 함께 삭제하시오.
ALTER TABLE 테이블명 DROP COLUMN 속성명 CASCADE; | ALTER TABLE 학생 DROP COLUMN 학년 CASCADE; |
DROP
DROP SCHEMA 이름;
DROP DOMAIN 이름;
DROP TABLE 이름;
DROP VIEW 이름;
DROP INDEX 이름;
DROP CONSTRAINT 이름;
- CASCADE : 제거할 요소를 참조하는 다른 모든 개체도 함께 제거합니다.
- RESTRICT : 어떤 개체가 제거할 요소를 참조하고 있다면, 제거를 취소합니다.
<학생> 테이블을 삭제하되, 이 테이블을 참조하는 개체가 있을 경우 제거를 취소하시오.
DROP TABLE 이름 CASCADE 또는 RESTRICT; | DROP TABLE 학생 RESTRICT; |