Meme's IT

[SQLD] DDL(Data Definition Language) 본문

공부/SQLD

[SQLD] DDL(Data Definition Language)

Memez 2023. 10. 30. 01:25

# 데이터 유형

  • CHAR(s): 고정 길이 문자열 정보, 할당 된 변수 값의 길이가 더 길다면, 공백으로 채워짐('AA' = 'AA     ')
  • VARCHAR2(s): 가변 길이 문자열 정보, 할당된 변수의 값의 바이트만 적용('AA' ≠ 'AA     ')
  • NUMBER(L,D): 정수, 실수 등의 숫자 정보
  • DATE: 날짜와 시각 정보, 크기 지정이 필요하지 않음

 

# 규칙

  • 테이블명은 다른 테이블의 이름과 중복되면 안된다
  • 테이블 내의 칼럼명은 중복이 불가능
  • 각 칼럼들은  , 로 구분되고  ; 로 끝난다
  • 칼럼에는 꼭 데이터 유형을 지정해줘야 한다
  • 테이블명과 칼럼명은 반드시 문자로 시작
  • 대소문자 구분하지 않음, (알파벳, 숫자, _, $, #) 사용

# CREATE TABLE

= 테이블 생성

CREATE TABLE 테이블명 (칼럼명 데이터타입 제약조건 등등)

 

여기서, 테이블명은 단수형이 권고된다

// 테이블 생성의 예
CREATE TABLE PLAYER (
PLAYER_ID CHAR(7) NOT NULL.
PLAYER_NAME VARCHAR2(20) NOT NULL);

 

 

제약 조건

: 데이터 무결성 유지가 목적, 복제 테이블에는 기존 테이블 제약조건 중 NOT NULL만 적용

  • PRIMARY KEY
    테이블 당 한개의 기본키만 가능
    기본키 생성시 DBMS가 자동으로 인덱스를 설정함
    NULL 불가
  • FOREIGN KEY
    다른 테이블의 기본키를 외래키로 지정
    참조 무결성 제약조건

ALTER TABLE 테이블명 ADD CONSTRAINT 칼럼명 FOREIGN KEY (칼럼명) REFERENCES 테이블명;
  • UNIQUE KEY
    행 데이터를 식별하기 위해 생성
    NULL 가능
  • DEFAULT: 'DEFAULT 값'으로 기본값 설정
  • NULL: 아직 정의되지 않은 값, 현재 데이터를 입력하지 못하는 값(제약조건으로는 NOT NULL이 들어간다)
  • CHECK: 입력값의 종류 및  범위 제한

 

테이블의 구조를 확인하고 싶다면? → DESCRIBE

DESCRIBE 테이블명

# ALTER TABLE

= 테이블의 칼럼 변경

 

  • 칼럼 추가: 마지막 칼럼으로 추가됨 (위치 지정 불가능)
ALTER TABLE 테이블명 ADD (칼럼명 데이터타입);

 

 

  • 칼럼 삭제: 삭제 후 복구 불가능
ALTER TABLE 테이블명 DROP COLUMN 칼럼명;

 

  • 칼럼 설정 변경: NULL만 있거나, 행이 없는 경우에만 축소 가능
ALTER TABLE 테이블명 MODIFY (칼럼명 데이터타입 제약조건);

 

  • 칼럼명 변경
ALTER TABLE 테이블명 RENAME COLUMN 칼럼명;

 

ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건;
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건;

# RENAME TABLE

RENAME 테이블명 TO 테이블명;
ALTER TABLE 테이블명 RENAME TO 테이블명;

 

# DROP TABLE

테이블의 데이터와 구조 삭제, 복구 불가

CASCADE CONSTRAINT 옵션: 관련 테이블의 참조 제약 조건도 삭제하여 무결성 준수 가능

DROP TABLE 테이블명;

 

# TRUNCATE TABLE

테이블의 전체 데이터 삭제, DROP은 테이블 자체를 삭제, TRUNCATE는 데이터만 삭제

로그를 기록하지 않음  → ROLLBACK 불가능

TRUNCATE TABLE 테이블명;

'공부 > SQLD' 카테고리의 다른 글

[SQLD] TCL(Transaction Control Language)  (0) 2023.10.30
[SQLD] DML(Data Manipulation Language)  (0) 2023.10.30
[SQLD] 관계형 DB  (0) 2023.10.30
[SQLD] 분산 DB 데이터에 따른 성능  (0) 2023.10.26
[SQLD] DB의 구조와 성능  (0) 2023.10.23