STUDY/자격증

DB SQL 정의어 DDL (정보처리 기사 / 산업기사 실기)

NightOwl 2018. 9. 30. 14:38
728x90




 SQL (Structured Query Language) 는 관계 데이터베이스에서 사용하는 대표적인 언어이다. 관계 대수 및 관계 해석을 기초로 하는 효율적인 고급데이터베이스 언어로 대화식이고 기타 다른 언어로 작성된 프로그램에 삽입되어서 처리 될 수 있다. DDL (Data definition language)  데이터 정의어, DML (Data manipulation language) 데이터 조작어, DCL (Data control language) 데이터 제어어 등이 있다.

 DDL은 테이블, 스키마, 인덱스, 뷰, 도메인을 생성하거나 수정 또는 제거하기 위해 사용되는 언어다. CREATE, ALTER, DROP문이 있다.


*SQL문의 특징

 1. 대소 문자 구분 하지 않는다.

 2. 문장 마지막에 세미콜론(;) 입력 (필답형 시험에서 ; 없으면 틀림) 

 3. 필답형 시험에서 sql 명령어는 영어 스펠링을 틀려서도 안되기 때문에 단어와 뜻을 정확히 외우며 개념을 이해하면 좋다. 

 4. { } : 반복

 5. [ ] : 생략가능

 6. | : 선택


CREATE 문

 

 CREATE 명령어는 테이블, 스키마, 인덱스, 뷰, 도메인을 정의한다. (생성)


CREATE TABLE 테이블_이름

 ({속성_이름 데이터_타입 [NOT NULL],}

 [PRIMARY KEY(속성_이름),]

 [UNIQUE(속성_이름),]

 [FOREIGN KEY(속성_이름) REFERENCES 참조테이블(속성_이름)]

     [ON DELETE 옵션]

     [ON UPDATE 옵션]

[CONSTRAINT 제약조건_이름][CHECK(조건식)]

 


* 속성(항목) 정의서 : 데이터 타입, 제약조건에 사용되는 테이블 명 등을 요약한 정의서.


 CREATE TABLE 테이블_이름

 - 테이블_이름으로 테이블 생성

 - 답안 작성 시 테이블이름의 대 소문자 정확히 표기

 {속성_이름 데이터_타입}

 - 테이블 구성하는 속성 수 만큼 속성 이름과 데이터 타입 입력

 - NOT NULL : 속성값이 NULL이 없도록 지정할때만 입력

 PRIMARY KEY(속성_이름)

 - 기본키 속성 지정시 사용

 - 개체무결성 제약조건 표현

 UNIQUE(속성_이름) 

 - 대체키 속성 지정시 사용

 - 속성의 모든값을 고유한 값 가지게 지정시 사용

 FOREIGN KEY(속성_이름) REFERENCES 참조테이블 (속성_이름)

 - 외래키 지정시 사용

 - 참조테이블의 속성이름은 해당 테이블의 기본키

 - 참조무결성 제약조건 표현 

 CONSTRAINT 제약조건_이름 CHECK(속성_이름=범위값) 

 - 테이블 생성시 특정 속성에 대해 속성값의 범위 즉, 도메인 지정시 사용

 - 도메인무결성 제약조건 표현



외래키 지정시 옵션

1. ON DELETE 

 : 참조테이블 튜플이 삭제 상황일때, 현재 기본테이블 즉 외래키로 지정되어있는 속성 값을 어떻게 대처할지?


2. ON UPDATE

 : 참조테이블의 튜플이 갱신 상황일때, 현재 기본테이블 즉 외래키로 지정되어있는 속성 값을 어떻게 바뀔지? 


3. CASCADE

 - 참조테이블이 삭제되면 기본테이블도 같이 삭제

 - 참조테이블이 갱신되면 기본테이블도 같이 갱신


4. SET NULL

 - 참조테이블이 삭제 또는 갱신되면 기본테이블 외래키값을 NULL값으로 변경


5. SET DEFAULT

 - 참조테이블 튜플에 변화가 있는경우 기본테이블의 속석값을 기본값으로 변경


6. NO ACTION

 - 참조테이블 튜플에 변화가 있어도 기본테이블은 아무런 변화가 없음


EX) FOREIGN KEY(학과) REFERENCES 수강(학과)

ON DELETE SET NULL

ON UPDATE CASCADE

→ 기본테이블 학과를 외래키로 수강테이블의 학과를 참조한다. 수강테이블의 학과 튜플이 삭제되면 기본테이블의 관련값은 SET NULL로 인해 NULL값으로 변한다. 수강테이블의 학과 튜플이 변경되는 경우 CASCADE에 의해서 기본테이블의 관련 속성값도 함께 변경된다.



데이터 타입

데이터타입 

표현형식 

정수(INTEGER) 

INT 

실수(FLOAT) 

FLOAT / REL 

고정길이 문자 

CHAR(문자수) 

가변길이 문자 

VARCHAR(문자수) 

시간

TIME 

날짜 

DATE 

EX) CHAR 은 고정으로 최대 10자리의 기억공간을 항상 확보한다. 

VARCHAR 은 지정된 문자 수에서 실제 자료에 따라 유동적으로 기억공간을 차지한다.



2017년 정보처리기사 기출문제

Q. 다음 지시사항에 따라 테이블을 생성하는 SQL문을 완성하시오.

[지시사항]

· 학번, 성명, 학과, 학년, 학점으로 구성된 학생테이블을 만들어라

· 학번과 학년은 숫자형 자료이며, 나머지는 문자형이다.

· 학번을 기본키로 지정한다.

· 성명 속성은 공백이 있을 수 없다.

· 학과 항목을 이용하여 [수강]테이블의 학과를 참조하도록 외래키를 지저앟며, 참조 테이블에서 삭제가 발생하면 NULL값으로 하고, 수정이 발생하면 연쇄적으로 수정하도록한다.

· 학년의 속성값은 4 이하의 값을 갖도록 'hak'이름으로 제약한다.


A. 

CREATE TABLE 학생

(학번 INT,

성명 CHAR(5) NOT NULL,

학과 CHAR(10),

학년 INT,

학점 CHAR(1),

PRIMARY KEY(학번),

FOREIGN KEY(학과) REFERENCES 수강(학과)  //개체 무결성(기본키)

ON DELETE SET NULL

ON UPDATE CASCADE,

CONSTRAINT hak CHECK(학년 <= 4 )  //도메인 무결성

); 


ALTER문

기존에 만들어진 테이블에 새 항목을 추가하거나, 기본 속성을 변경하거나 삭제할 때 사용하는 명령


ALTER TABLE 테이블이름 ADD 속성_이름 데이터타입 [DEFAULT];  //추가

ALTER TABLE 테이블이름 ALTER 속성_이름 [SET DEFAULT];  //속성명변경

ALTER TABLE 테이블이름 DROP 속성_이름 [CASCADE | RESTRICT]; //속성 삭제

EX)
Q. 학생 테이블에서 학년 속성을 제거하시오.
A. ALTER TABLE 학생 DROP 학년 CASCADE;
특별한 언급이 없으면 CASCADE옵션을 적용

DROP 문

DROP 명련문은 기존에 존재하던 테이블, 스키마, 도메인, 인덱스, 뷰, 제약조건을 삭제 할 때 사용하며  ALTER DROP과 다르게 전체 튜플이 삭제된다.

* 삭제시 사용되는 옵션
1. RESTRICT (제한적인)
 : 삭제할 요소가 참조 중이면 삭제 되지 않는다.
2. CASCADE (연쇄적인)
 : 삭제할 요소가 참조 중이더라도 삭제가 가능하며, 삭제될 테이블을 참조 중인 다른 테이블까지 연쇄적으로 함께 삭제된다.
 




728x90