Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

데이터 분석

DDL (Data Definition Language) 본문

SQL/추가 학습

DDL (Data Definition Language)

시니조 2023. 2. 27. 21:26
  • 스키마, 도메인, 테이블, 뷰, 인덱스정의/변경/제거 할 때 사용한다
  • AUTO COMMIT된다 > DROP, TRUNCATE 사용 시 원상복구 불가

 

CREATE TABLE

CREATE TABLE 테이블명 ( 칼럼명   칼럼유형   CONSTRAINT , ... );

 

이외에도 CREATE VIEW, CREATE INDEX 등 존재함.

 

 

칼럼유형 (데이터타입)

  • CHAR : 고정문자열 ex) "AA" = "AA "
  • VARCHAR2 : 가변 길이 문자열 ex) "AA" ≠"AA "
  • NUMBER : 숫자 ex) NUMBER(8,2) 정수 6자리 소수 2자리
  • DATE : 날짜

 

제약조건 (CONSTRAINT)

데이터 무결성을 유지하기 위해

  • PRIMARY KEY : 기본키, 한 테이블에 하나만 (중복 불가  NULL불가)
  • UNIQUE : 고유하게 식별하기 위한 고유 키  (중복 불가  NULL가능)
  • NOT NULL : NULL 불가
  • CHECK : 테이블의 특정 컬럼에 설정하는 제약
  • FOREIGN KEY : 외래키, 여러 개 가능

 

참조동작

INSERT ACTION  

  • AUTOMATIC : Child에 삽입 시 Parent 테이블에 PK가 없으면 PK 생성 후 Child에 삽입
  • SET NULL : PK 없으면 Child 외부키를 NULL값으로 셋팅
  • SET DEFAULT : PK 없으면 Child 외부키를 지정값으로 셋팅
  • DEPENDENT : Child 삽입 시 Parent 테이블에 PK 존재 할 떄만 삽입 허용
  • NO ACTION : 참조 무결성 위반되면 액션 취하지 않음

DELETE / MODIFY ACTION 

  • CASCADE : Parent 삭제 시 Child 같이 삭제
  • SET NULL : Parent 삭제 시 Child의 해당 필드는 NULL로 셋팅
  • SET DEFAULT : Parent 삭제 시 Child의 해당 필드는 지정값으로 셋팅
  • RESTRICT : Parent 삭제 시 Child에 PK가 없는 경우만 Parent 삭제 허용
  • NO ACTION : 참조 무결성에 위반되면 엑션 취하지 않음

요약하면 

Parent 테이블에서 삽입은 마음대로 가능하지만 삭제는 참조

Child 테이블에서 삭제는 마음대로 가능하지만 삽입은 참조

 

 

ALTER TABLE 

ALTER TABLE을 이용한 컬럼 변경 시 주의할 점은 이미 입력된 값에 영향을 주는 변경은 허용되지 않는다는 점이다.

 

컬럼 추가

ALTER TABLE 테이블명 ADD (컬럼명  컬럼유형  제약조건) ;

 

컬럼삭제

ALTER TABLE 테이블명 DROP COLUMN 컬럼명 ;

 

컬럼 속성 변경

# ORACLE
ALTER TABLE 테이블명 MODIFY(컬럼명  컬럼유형  제약조건) ;

# SQL SERVER
ALTER TABLE 테이블명 ALTER COLUMN 컬럼명 컬럼유형

컬럼의 유형, 길이(크기), DEFAULT값(NULL값이 입력 될 때 대체 될 값), NOT NULL제약조건 등 변경가능하다.

단, 이미 입력된 값에 영향을 미치는 변경은 허용되지 않는다.

 

컬럼명 변경

ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 새로운컬럼명 ;

 

테이블명 변경

#ORACLE
RENAME 기존테이블명 TO 새로운테이블명 ;

#SQL SERVER
SP_NAME '기존테이블명' , '새로운테이블명'

 

제약조건 추가

ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건(컬럼명) ;

CONSTRAINT는 수정 개념이 없으므로 수정하려면 삭제 후 새로 만들어야한다.

 

제약조건 삭제

ALTER TABLE 테이블명 DROP CONSTRAINT  제약조건명 제약조건 (컬럼명) ;

 

 

DROP TABLE

테이블 제거

DROP TABLE 테이블명 ;

# 참조 제약에 걸린 모든것을 연쇄적으로 제거 (ORACLE)
DROP TABLE 테이블명 CASCADE CONSTRAINT ;

 

테이블의 모든 행 제거

TRUNCATE TAVLE 테이블명 DROP COLUMN 삭제할 컬럼명 ;

해당 테이블의 모든 행만 제거 후 저정공간을 재사용하도록 해체해줌 즉, 테이블은 삭제되지 않음.

 

 

 

※ 추가적으로 SQL SERVER의 경우 괄호를 사용하지 않고 여러 컬럼을 동시에 수정하는 기능은 없다고 보면 된다.

 

 

'SQL > 추가 학습' 카테고리의 다른 글

DCL (DATA CONTROL LANGUAGE)  (0) 2023.03.14
데이터 모델  (0) 2023.03.05
TCL  (0) 2023.03.02
DML (DATA MANIPULATION LANGUAGE)  (0) 2023.03.01
oracle 설치  (0) 2023.02.27