티스토리 뷰

SQL

[DB] 3. DDL

개발자 뭄뭄 2022. 11. 4. 21:20
반응형

1. 복습!


  • DDL 이란? → Data Defition Language 즉, 관계형 DB를 정의하기 위한 언어 → 명령어로는 대표적으로 CREATE, DROP, ALTER가 있다.

2. CREATE


CREATE TABLE contacts(
    name TEXT NOT NULL,
    age INTEGER NOT NULL,
    email TEXT NOT NULL UNIQUE
);
  • contacts( table 이름)
  • field의 이름/ DATATYPE/ 제약조건 을 적어준다.
  1. DATA TYPE
    • SQLITE DATA TYPE
      • NULL (python 의 None과 같음)
      • INTEGER (정수)
      • REAL(실수)
      • TEXT(문자) string이 아닌 text!
      • BLOB(거대 데이터 덩어리, 이미지데이터 같은 멀티미디어 파일)
      • cf) Boolean type이나 Datetime type은 없다
    • SQLITE의 특징
      • 동적 타입 시스템을 사용한다. → DATA TYPE을 지정해주지 않아도, 입력받는 레코드(data)에 따라서 알아서 TYPE을 저장한다. → 즉 DB 생성시에 굳이 DATATYPE을 지정하지 않아도 된다.
      • 하지만, 다른 DB와의 호환성을 위해서 지정하는 것을 권장한다.
    • 타입선호도
      • 다른 DB 엔진간의 호환성을 최대화 하기 위해 존재한다.
      • 위에 언급된 5가지 Data type이 아닌 다른 데이터 타입을 선언한다면, 내부적으로 지정된 선호도에 따라

        → INTEGER, TEXT, BLOB, REAL, NUMERIC 으로 인식된다. (특히 불린, datetime 같은 것은 numeric 으로 인식되는 것을 기억하자)

    1. constraints (제약조건)
    • 데이터의 무결성(정확성, 일관성)을 위해서 사용.
    • 제약에 맞지 않다면 입력이 거부된다.
    • Constraints의 종류
      • NOT NULL
        • NULL값을 허용하지 않는다.
      • UNIQUE
        • 컬럼의 값이 고유해야 한다.
      • PRIMARY KEY
        • 테이블에서 행의 고유성을 식별하는 데 사용되는 컬럼
        • 암시적으로 NOT NULL 제약조건이 포함되어 있다
        • INTEGER 타입에만 사용가능하다.
      • AUTOINCREMENT
        • 사용되지 않은 값이나 이전에 삭제된 행의 값을 재사용 하는 것을 금지한다.
        • Django에서 테이블 생성시 id 컬럼에 기본 사용.
      • rowid
        • 테이블을 생성할 때 암시적으로 생성된다.
        • 만약 INTEGER PRIMARY KEY 키워드를 사용해서 직접 만들면 → rowid의 별칭으로써 접근 가능하다.

3. ALTER


  1. RENAME table
    1. ALTER TABLE table_name RENAME TO new_table_name;
  1. RENAME column
    1. ALTER TABLE talbe_name RENAME column_name TO new_column_name;

  1. ADD a new column
    1. ALTER TABLE table_name ADD COLUMN column_definition;
    1. 만약 기존 테이블에 Data가 있을 경우, Not Null 제약조건이 붙은 Column이 추가되면 에러가 발생한다. → Default 제약조건을 추가한다.
  1. Delete a column
    1. ALTER TABLe table_name DROP COLUMN column_name;
    1. column을 삭제하지 못하는 경우가 있다.
      1. 컬럼이 다른 부분에서(FOREIGN KEY) 참조되는 경우
      1. primary key인 경우
      1. unique 제약조건이 있는 경우

4. DROP


  • DROP TABLE table_name;
    • table은 한번에 하나만 지울 수 있다.
    • 없는 table 지우려고 하면 오류가 난다.
    • DROP TABLE 문은 실행하면 취소하거나 복구 할 수 없다.


Uploaded by N2T

반응형

'SQL' 카테고리의 다른 글

[DB] 4. DML  (0) 2022.11.04
[DB] 2. SQL  (0) 2022.11.04
[DB] 1. DataBase  (0) 2022.11.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
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
글 보관함