안녕하세요. 하루인생입니다.
어제 쓰다가 양이 너무 많아 오늘 이어서 쓰게 되었습니다.
바로 시작해볼까요? ㅎㅎ
데이터베이스 3일 차
오늘은 DDL을 공부해볼 건데요.
DDL은 암기하기에 복잡하고 난이도가 있다 보니 기출에서는 빈칸을 채우는 문제로
자주 출제되는데요. 그래도 혹시나 모르니 꼼꼼히 공부하시길 바랍니다!

SQL 정의어에 대해 알아보도록 하겠습니다.
SQL 언어는 DDL, DML, DCL 이렇게 세 가지로 나뉘는데요.
중간에 D, M, L의 차이가 보이시죠?
DDL의 D는 Define(정의)이고 DML의 M은 Manipulation(조작)이고 DCL의 C는 Control(제어)의 약자입니다.
그럼 이제 DDL에는 어떤 명령어가 있는지 알아보도록 하겠습니다.
DDL은 ① CREATE ② ALTER ③ DROP 이렇게 세 가지가 있는데 저는 CAD(캐드)로 암기하였습니다.
물론 DML에도 D(Delete)가 있어 헷갈릴 수 있지만 DDL은 정의하는 것이므로 더 심오한(?) 느낌을 가지고 있는 D(DROP)이라고 생각하시면 될 것 같습니다.
자 CREATE의 사용 방법을 알아볼까요?
① CREATE : 테이블, 스키마, 도메인, 인덱스, 뷰 등을 정의하기 위해 사용하는 명령어입니다.
(1) 테이블 정의
// {} : 여러 개인 경우 반복
// [] : 생략 가능
// | : 선택
CREATE TABLE 테이블이름(
{속성이름 데이터타입 [NOT NULL] [DEFAULT 값,}
[PRIMARY KEY (속성이름),]
[UNIQUE(속성이름),]
[FOREIGN KEY(속성이름) REFERENCES 참조테이블(속성이름)]
[ON DELETE CASCADE | SET NULL |SET DEFAULT | NOT ACTION]
[ON UPDATE CASCADE | SET NULL |SET DEFAULT | NOT ACTION,]
[CONSTRAINT 제약조건이름 CHECK(속성이름=범위값)]
}
);
조건 ①
- ON DELETE : 참조 테이블의 튜플이 삭제되면
- ON UPDATE : 참조 테이블의 튜플이 변경되면
조건 ②
- CASECADE : 기본 테이블도 같이 변화
- SET NULL : 기본 테이블의 관련된 속성을 NULL로!
- SET DEFAULT : 기본 테이블의 관련된 속성을 기본값으로!
- NOT ACTION : 기본 테이블은 아무론 변화 X
VARCHAR(문자수) : 가변 길이 문자를 저장하는 데이터 타입
쉬운 이해를 위해 예를 들어 코드로 올려드릴게요.
CRETE TABLE 학생
(
학번 INT,
성명 CHAR(5) NOT NULL,
학과 CHAR(10),
학년 INT,
학점 CHAR(1),
PRIMARY KEY(학번), // 기본키는 '학번' 속성
FOREIGN KEY(학과) REFERENCES 수강(학과) //외래키는 학과, 수강테이블의 학과를 참조함
ON DELETE SET NULL // 삭제시 NULL로
ON UPDATE CASCADE, // 변경시 참조테이블도 같이 변함
CONSTRAINT HAC CHECK(학년 <= 4) // HAC라는 제약조건 이름으로
// 학년의 속성값은 4이하의 값을 갖도록 한다.
);

(2) 스키마 정의 : 일반 사용자에게 스키마에 대한 권한을 주기 위해 사용
CREATE SCHEMA JUNGBO AUTHORIZATION 이영진;
// 사용자 이영진에게 스키마를 정의하고 사용할 수 있도록
// 'JUNGBO'라는 이름으로 스키마를 만듦
(2) 도메인 정의 : 속성의 범위를 지정하기 위해 사용
CREATE DOMAIN 도메인이름 데이터타입
DEFAULT 기본값
CONSTRAINT 제약조건이름 CHECK(VALUE IN(범위값));
예를 들어보면
CREATE DOMAIN success char(1) // 한 글자의 자료형을 가진 success 도메인
DEFAULT 'T' // 기본 값은 T
CONSTRAINT v-success CHECK(VALUE IN('T','F')); // 제약조건 이름은 v-success이고 범위는 T 또는 F
(3) 인덱스 정의 : 효율적인 검색을 위해 사용
CREATE [UNIQUE] INDEX 인덱스이름
ON 테이블이름 (속성이름 [ASC | DESC]) // 저장된 테이블의 속성으로 인덱스를 만듦
[CLUSTER]; // 인접된 튜플들을 물리적인 그룹으로 묶어 저장
UNIQUEE : 중복을 허용하지 않도록 인덱스 생성
ASC : 오름차순
DESC : 내림차순
지금까지 CREATE를 알아봤고요.
두 번째 정의어인 ALTER을 알아보도록 하겠습니다.
② ALTER : 기존의 테이블에 속성을 추가, 삭제, 변경 시 사용
ALTER TABLE 테이블이름 ADD 속성이름 데이터타입; // 속성을 추가
ALTER TABLE 테이블이름 ALTER 속성이름 [SET DEFAULT]; // 속성에 대한 사항을 변경할 때
ALTER TABLE 테이블이름 DROP 속성이름 [CASCADE | RESTRICT]; // 속성을 추가
③ DROP : 기존의 테이블, 스키마, 도메인, 뷰, 제약조건 등을 제거할 때 사용
DROP TABLE 테이블이름 [CASCADE | RESTRICT];
DROP SCHEMA 스키마이름 [CASCADE | RESTRICT];
DROP DOMAIN 도메인이름 [CASCADE | RESTRICT];
DROP VIEW 뷰이름 [CASCADE | RESTRICT];
DROP INDEX 인덱스이름;
DROP CONSTRAINT 제약조건이름;
// RESTRICT : 삭제할 요소가 참조 중이면 삭제가 이루어지지 않음
인덱스와 제약조건은 참조하는 관계가 아니므로 [CASCADE | RESTRICT]를 해 줄 필요가 없습니다.
'정보처리기사 실기 > 데이터베이스' 카테고리의 다른 글
| [정보처리기사 실기] 데이터베이스 4일 차 (0) | 2019.06.12 |
|---|