728x90

데이터베이스에 새 테이블을 만들기 위한 CREATE에 대해서 알아보았다. 이번엔 수정과, 삭제를 위한 ALTER, DROP TABLE을 알아보자.

 

 

목차

  1. ALTER TABLE
  2. DROP TABLE

 

 


1. ALTER TABLE

 

  • "Modify the structure of an existing table"
  • 기존 테이블의 구조를 수정(변경)
  • SQLite의 ALTER TABLE 문을 사용하면 기존 테이블을 아래와 같이 변경 가능
    1. Rename a table
    2. Rename a column
    3. ADD a new column to a table
    4. Delete a column
  • https://www.sqlite.org/lang_altertable.html

 

 

ALTER TABLE RENAME

 

  • "Rename a table"
  • 앞서 작성했던 contacts 테이블을 new_contacts로 변경 후 확인해보기

 

ALTER TABLE RENAME COLUMN

 

  • "Rename a column"
  • name column 명을 last_name으로 변경 후 확인

 

ALTER TABLE ADD COLUMN

 

  • Add a new column to a table
  • address column 생성해본 후 결과 확인

  • 현재 과정에서는 안 일어나지만 만약 테이블에 기존 데이터가 있을 경우 에러 발생

  • 이전에 이미 저장된 데이터들은 새롭게 추가되는 칼럼에 값이 없기 때문에 NULL이 작성
  • 그런데 새로 추가되는 컬럼에 NOT NULL 제약조건이 있기 때문에 기본 값 없이는 추가될 수 없다는 에러가 발생한 것
  • 아래와 같이 DEFAULT 제약 조건을 사용하여 해결할 수 있음
  • 이렇게 하면 address 칼럼이 추가되면서 기존에 있던 데이터들의 address 컬럼 값은 'no address'가 됨

 

※ 참고 - DEFAULT 제약조건

  • column 제약조건 중 하나
  • 데이터를 추가할 때 값을 생략할 시에 기본 값을 설정함
  • https://www.sqlite.org/syntax/column-constraint.html

 

 

ALTER TABLE DROP COLUMN

 

  • "Delete a column"
  • address column 삭제 및 결과 확인

 

  • , 삭제되지 못하는 경우가 있다.
    • 컬럼이 다른 부분에서 참조되는 경우
      1. FOREIGGN KEY(외래 키) 제약조건에서 사용되는 경우
      2. PRIMARY KEY인 경우
      3. UNIQUE 제약 조건이 있는 경우


 

2. DROP TABLE

 

  • "Remove a table from the database"
  • 말 그대로 데이터베이스에서 테이블을 제거

  • 존재하지 않는 테이블을 제거하면 SQLite에서 오류가 발생

 

 

특징

 

  • 한 번에 하나의 테이블만 삭제할 수 있음
  • 여러 테이블을 제거하려면 여러 DROP TABLE 문을 실행해야 함
  • DROP TABLE문은 실행 취소하거나 복구할 수 없음
    • 따라서 각별히 주의하여 수행해야 한다.

 

DDL 정리

  • 데이터 정의 언어
  • CREATE TABLE
    • 데이터 타입과 제약조건
  • ALTER TABLE
    • RENAME
    • RENAME COLUMN
    • ADD COLUMN
    • DROP COLUMN
  • DROP TABLE
728x90

'CS > Database with SQLite' 카테고리의 다른 글

[DB] DML2 - Filtering data  (1) 2022.10.05
[DB] DML1 - simple query, Sorting rows  (0) 2022.10.05
[DB] DDL1 - create table  (0) 2022.10.04
[DB] SQL  (1) 2022.10.04
[DB] 데이터 베이스?  (0) 2022.10.04