본문 바로가기
자격증/SQLD

SQLD 정리 / 과목 2 SQL 기본 및 활용 / 제1장 SQL 기본 / 제2절 DDL

by RUCKUS 2021. 5. 26.

제2절 DDL

 

1. 데이터 유형

 

2. CREATE TABLE

 (1) 테이블과 칼럼 정의

  • 테이블에 존재하는 모든 데이터를 고유하게 식별가능한 칼럼이나 칼럼 조합 들 중 하나를 선정하여 기본키 칼럼으로 지정한다.
  • 기본키는 단일 칼럼이 아닌 여러 개의 칼럼으로도 만들어질 수 있다.

 (2) 테이블 생성

 [테이블 생성시 주의해야할 규칙]

  • 객체를 의미할 수 있는 적절한 이름 사용. 가능한 단수형.
  • 테이블명 중복 X
  • 한 테이블 내에서 칼렴명 중복 X
  • 테이블 이름을 지정하고 각 칼럼들을 괄호 () 로 묶어 지정
  • 각 칼럼은 콤마 , 로 구분, 테이블 생성문의 끝은 항상 세미콜론 ; 으로 종료
  • 칼럼은 다른 테이블까지 고려하여 DB자체에서 일관성 있게 사용하는 것이 좋다.
  • 칼럼 뒤에 데이터 유형은 필수다.
  • 테이블명, 칼럼명은 반드시 문자로 시작해야하고, 길이에 대한 한계가 있다.
  • 예약어 사용 불가
  • A-Z, a-z, 0-9, _, $, # 문자만 허용 된다.
  • 대/소문자를 구분하지 않는다. 기본적으로 대문자로 만들어진다.
  • DATETIME 유형에는 별도로 크기를 지정하지 않는다.
  • 문자 데이터 유형은 반드시 최대 길이를 표시해야 한다.
  • 제약조건은 CONSTRAINT를 이용하여 추가 가능하다. (칼럼 LEVEL 정의 방식, 테이블 LEVLE 정의 방식)

 (3) 제약조건

  • 사용자가 원하는 조건의 데이터만 유지하기 위한 즉, 데이터의 무결성 유지를 위한 방법으로 테이블의 특정 칼럼에 설정을 제약하는 것.
  • NULL : 공백이나 숫자0과는 전혀 다른 값, 아직 정의 되지 않은 미지의 값, 현재 데이터를 입력하지 못하는 경우
  • DEFAULT : 데이터 입력시 칼럼의 값이 지정되어 있지 않을 경우 기본값을 사전에 설정할 수 있다.

 (4) 생성된 테이블 구조 확인

  • Oracle : DESCRIBE 테이블명; / DESC 테이블명;
  • SQL Server : sp_help 'dbo.테이블명'

 (5) SELECT 문장을 통한 테이블 생성

  • CTAS : CREATE TABLE ~ AS SELECT ~
  • 다만 CTAS로 생성시 기본키, 고유키, 외래키 등의 제약조건은 없어져서 별도로 설정해야한다.

3. ALTER TABLE

 (1) ADD COLUMN

  - 새롭게 추가된 컬럼은 마지막 컬럼이 되며 위치 지정은 불가하다.

 

 (2) DROP COLUMN

  • 한 번에 하나의 칼럼만 삭제 가능
  • 최소 하나 이상의 칼럼이 테이블에 존재하여야 함
  • 삭제된 컬럼은 복구 불가능

 (3) MODIFY COLUMN

[칼럼 변경시 고려 사항]

  • 칼럼 크기를 늘리는 것은 가능, 줄이는 것은 불가능 (기존 데이터 훼손 우려)
  • 다만, 해당 칼럼이 NULL이거나 아무것도 없으면 줄이기 가능
  • 해당 컬럼에 NULL이 없을 경우만 NOT NULL 제약 조건 추가 가능
  • 해당 칼럼의 DEFAULT 값을 바꾸면 이후 발생하는 행 삽입에만 영향을 미친다.
  • RENAME COLUMN : 칼럼명 변경시 사용, Oracle 등 일부 DBMS만 지원
    [oracle]
    [SQL Server]


 (4) DROP CONSTRAINT : 제약조건 삭제 명령어

 (5) ADD CONSTRAINT : 제약조건 추가

 

4. RENAME TABLE : 테이블 이름 변경

5. DROP TABLE : 테이블 삭제

 - CASCADE CONSTRAINT : 해당 테이블과 관계있던 참조 제약조건도 삭제

 - SQL Server 에서는 CASCADE 옵션이 존재하지 않으며 테이블을 삭제하기 전에 참조하 는 제약 조건 또는 참조하는 테이블을 먼저 삭제해야 한다.

 

6. TRUNCATE TABLE : 테이블 구조는 남겨두고 그 안의 모든 행들이 제거됨

  TRUNCATE TABLE 테이블명;