SQLite 데이터베이스에서 열 삭제
새 열을 추가할 때 기본값이 제공됩니다. 기존 칼럼 삭제 시 유스케이스에 따라 모든 값이 삭제되거나 백업되기도 합니다.
이 기사에서는 몇 가지 관련 예제를 통해 SQLite 데이터베이스 테이블에서 열을 제거하는 방법에 대해 설명합니다.
SQLite 데이터베이스 테이블에서 열 삭제
두 가지 방법으로 SQLite 데이터베이스 테이블에서 열을 삭제할 수 있습니다.
ALTER TABLE
문을 사용하여 열 삭제
SQL은 기존 데이터베이스 테이블에서 기존 열을 추가, 삭제 및 수정하는 데 사용할 수 있는 ALTER TABLE
문을 제공합니다. 다음은 열을 삭제하는 데 사용할 수 있는 두 가지 구문입니다.
통사론:
ALTER TABLE <table_name> DROP COLUMN <column_name>;
ALTER TABLE <table_name> DROP <column_name>;
위의 SQL 문은 기존 테이블 table_name
에서 column_name
열을 삭제합니다. DROP
키워드는 열이 실행 시 삭제됨을 나타냅니다.
데모는 다음 SQL 스크립트를 참조하십시오.
CREATE TABLE students (
id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
age INT NOT NULL,
gender TEXT NOT NULL
);
SELECT "Before Removal";
SELECT "--------------";
SELECT name FROM PRAGMA_TABLE_INFO("students"); -- Display all names columns
ALTER TABLE students DROP COLUMN last_name; -- Removing [last_name] column
SELECT "";
SELECT "After Removal";
SELECT "-------------";
SELECT name FROM PRAGMA_TABLE_INFO("students"); -- Display all names columns
출력:
Before Removal
--------------
id
first_name
last_name
age
gender
After Removal
-------------
id
first_name
age
gender
위의 SQL 스크립트는 선택한 데이터베이스에 students
라는 새 테이블을 생성합니다. 그런 다음 새로 생성된 테이블의 모든 열 이름을 출력한 다음 ALTER TABLE
문을 사용하여 last_Name
열을 제거합니다.
마지막으로 모든 열 이름을 다시 인쇄합니다. 위의 출력에서 last_name
열이 테이블에 더 이상 존재하지 않으며 ALTER TABLE
문이 이를 성공적으로 제거했음을 알 수 있습니다.
새 테이블을 만들어 열 삭제
이 접근 방식은 매우 단순하며 이전 접근 방식보다 더 많은 시간이 걸립니다. 아이디어는 모든 새 열을 사용하여 처음부터 새 테이블을 만드는 것입니다(삭제할 열은 이 테이블의 일부가 아님).
그런 다음 필요에 따라 이전 테이블의 모든 데이터를 이 새 테이블로 복사합니다. 마지막으로 이전 테이블을 삭제하거나 삭제하고 필요에 따라 새 테이블을 사용합니다.
예제는 다음 SQL 스크립트를 참조하십시오.
-- creating the old table
CREATE TABLE students (
id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
age INT NOT NULL
);
-- inserting some data into the old table
INSERT INTO students VALUES (1, "Stefan", "Salvatore", 13);
INSERT INTO students VALUES (2, "Damon", "Salvatore", 14);
INSERT INTO students VALUES (3, "Elena", "Gilbert", 12);
INSERT INTO students VALUES (4, "Caroline", "Forbes", 12);
INSERT INTO students VALUES (5, "Bonnie", "Bennett", 13);
-- printing old table
SELECT "Students";
SELECT "--------";
SELECT * FROM students;
SELECT "";
-- creating new table
CREATE TABLE new_students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INT NOT NULL
);
-- inserting data from an old table into the new table
INSERT INTO new_students SELECT id, first_name, age FROM students;
-- printing new table
SELECT "New Students";
SELECT "--------";
SELECT * FROM new_students;
SELECT "";
-- dropping or deleting the old table
DROP TABLE students;
-- renaming the new table to the old table's name
ALTER TABLE new_students RENAME TO students;
-- printing new table
SELECT "Students";
SELECT "--------";
SELECT * FROM students;
SELECT "";
출력:
Students
--------
1|Stefan|Salvatore|13
2|Damon|Salvatore|14
3|Elena|Gilbert|12
4|Caroline|Forbes|12
5|Bonnie|Bennett|13
New Students
--------
1|Stefan|13
2|Damon|14
3|Elena|12
4|Caroline|12
5|Bonnie|13
Students
--------
1|Stefan|13
2|Damon|14
3|Elena|12
4|Caroline|12
5|Bonnie|13
위의 SQL 스크립트는 먼저 students
테이블을 생성합니다. 이전 테이블을 모방하려고 합니다. 그런 다음 INSERT INTO
문을 사용하여 새로 생성된 테이블에 일부 행을 삽입한 다음 테이블 내용을 인쇄합니다.
이제 new_students
라는 새 테이블이 생성됩니다. 새 테이블을 모방합니다. new_students
테이블의 스키마는 students
테이블과 다릅니다. last_name
열이 없습니다.
그런 다음 INSERT INTO
문을 사용하여 students
테이블의 모든 행을 new_students
에 삽입합니다.
last_name
을 제외하고 다른 모든 항목이 삽입됩니다. 또한 SELECT
문의 열 순서는 한 테이블에서 다른 테이블로 데이터를 삽입하는 동안 중요하며 삽입 후 새 테이블이 인쇄됩니다.
이제 이전 테이블이 필요하지 않으므로 DROP TABLE
문을 사용하여 students
테이블을 삭제하고 ALTER TABLE
문을 사용하여 new_students
테이블의 이름을 students
로 변경합니다. 마지막으로 students
라는 새 이름을 사용하여 새 테이블이 인쇄됩니다.