목요일, 1월 14, 2021

[유튜브 방송] (즐겁게 배우는 SQL #33) 데이터를 정의하자 - 테이블 변경

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 33편을 공개해드리겠다. 33편은 테이블 변경 방법을 소개한다.

2021년 1월 14일자 [즐겁게 배우는 SQL #33] 데이터를 정의하자 - 테이블 변경 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 테이블 변경 방법 소개
  • 03:28 테이블 이름 변경 예제
  • 05:04 테이블 열 추가 예제
  • 07:42 테이블 열 삭제 예제

원본 학습자료는 SQLite Rename Column을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 테이블 변경 방법 소개
    ALTER TABLE existing_table
    RENAME TO new_table;
    ) [WITHOUT ROWID];
    
    ALTER TABLE table_name
    ADD COLUMN column_definition;
    
    ALTER TABLE table_name
    RENAME COLUMN current_name TO new_name;
    
    
    -- disable foreign key constraint check
    PRAGMA foreign_keys=off;
    
    -- start a transaction
    BEGIN TRANSACTION;
    
    -- Here you can drop column
    CREATE TABLE IF NOT EXISTS new_table( 
       column_definition,
       ...
    );
    -- copy data from the table to the new_table
    INSERT INTO new_table(column_list)
    SELECT column_list
    FROM table;
    
    -- drop the table
    DROP TABLE table;
    
    -- rename the new_table to the table
    ALTER TABLE new_table RENAME TO table; 
    
    -- commit the transaction
    COMMIT;
    
    -- enable foreign key constraint check
    PRAGMA foreign_keys=on;
    
  • 단계 2: 테이블 이름 변경 예제
    1. SQL> CREATE TABLE devices ( name TEXT NOT NULL, model TEXT NOT NULL, Serial INTEGER NOT NULL UNIQUE );
    2. SQL> INSERT INTO devices (name, model, serial) VALUES('HP ZBook 17 G3 Mobile Workstation','ZBook','SN-2015');
    3. SQL> ALTER TABLE devices RENAME TO equipment;
    4. SQL> SELECT name, model, serial FROM equipment;
  • 단계 3: 테이블 열 추가 예제
    1. SQL> ALTER TABLE equipment ADD COLUMN location text;
  • 단계 4: 테이블 열 삭제 예제
    1. SQL> CREATE TABLE users( UserId INTEGER PRIMARY KEY, FirstName TEXT NOT NULL, LastName TEXT NOT NULL, Email TEXT NOT NULL, Phone TEXT NOT NULL );
    2. SQL> CREATE TABLE favorites( UserId INTEGER, PlaylistId INTEGER, FOREIGN KEY(UserId) REFERENCES users(UserId), FOREIGN KEY(PlaylistId) REFERENCES playlists(PlaylistId) );
    3. SQL> INSERT INTO users(FirstName, LastName, Email, Phone) VALUES('John','Doe','john.doe@example.com','408-234-3456');
    4. SQL> INSERT INTO favorites(UserId, PlaylistId) VALUES(1,1);
    5. SQL> SELECT * FROM users;
    6. SQL> SELECT * FROM favorites;
    7. SQL> PRAGMA foreign_keys=off;
    8. SQL> BEGIN TRANSACTION;
    9. SQL> CREATE TABLE IF NOT EXISTS persons ( UserId INTEGER PRIMARY KEY, FirstName TEXT NOT NULL, LastName TEXT NOT NULL, Email TEXT NOT NULL );
    10. SQL> INSERT INTO persons(UserId, FirstName, LastName, Email) SELECT UserId, FirstName, LastName, Email FROM users;
    11. SQL> DROP TABLE users;
    12. SQL> ALTER TABLE persons RENAME TO users;
    13. SQL> COMMIT;
    14. SQL> PRAGMA foreign_keys=on;
    15. SQL> SELECT * FROM users;
EOB

댓글 없음:

댓글 쓰기