728x90
데이터베이스에 새 테이블을 만들기 위한 CREATE에 대해서 알아보았다. 이번엔 수정과, 삭제를 위한 ALTER, DROP TABLE을 알아보자.
목차
- ALTER TABLE
- DROP TABLE
1. ALTER TABLE
- "Modify the structure of an existing table"
- 기존 테이블의 구조를 수정(변경)
- SQLite의 ALTER TABLE 문을 사용하면 기존 테이블을 아래와 같이 변경 가능
- Rename a table
- Rename a column
- ADD a new column to a table
- 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 삭제 및 결과 확인
- 단, 삭제되지 못하는 경우가 있다.
- 컬럼이 다른 부분에서 참조되는 경우
- FOREIGGN KEY(외래 키) 제약조건에서 사용되는 경우
- PRIMARY KEY인 경우
- 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 |