SQLite 데이터베이스에서 열 삭제

Vaibhav Vaibhav 2023년6월21일
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라는 새 이름을 사용하여 새 테이블이 인쇄됩니다.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

관련 문장 - SQLite Database