ALTER TABLE 修改資料表的名稱、資料欄位名稱,或新增資料欄位
ALTER TABLE 的 SQL語法(Syntax)格式:
ALTER TABLE 資料表名稱
{RENAME TO 新資料表名稱 | RENAME [COLUMN] 資料欄位名稱 TO 資料欄位新名稱 | ADD [COLUMN] 資料欄位定義};
{RENAME TO 新資料表名稱 | RENAME [COLUMN] 資料欄位名稱 TO 資料欄位新名稱 | ADD [COLUMN] 資料欄位定義};
- ALTER TABLE 可以 修改 資料表名稱、資料欄位名稱,增加資料欄位等。
- SQLite 3.25.0 起,將原先必須使用設定調整的作法(PRAGMA legacy_alter_table = ON 或 sqlite3_db_config() 的 SQLITE_DBCONFIG_LEGACY_ALTER_TABLE選項)才可以啟用ALTER TABLE的功能,改為可以直接使用的指令。
目前最新的SQLite版本 3.34.1(2021.01.20。
以下將說明,修改Emp_Id_Name資料表結構:
資料表名稱:Emp_Id_Name → EmpIdName
資料欄位名稱:EmployeeId → EmpId
增加資料欄位:IDCardNo CHAR(10)
資料表名稱:Emp_Id_Name → EmpIdName
資料欄位名稱:EmployeeId → EmpId
增加資料欄位:IDCardNo CHAR(10)
ALTER TABLE SQL指令的使用:
- 測試環境的資料庫,可以參閱以下網址連結來建立:
- 取得SQLite版本的Chinook範例資料庫 https://sql.bod.idv.tw/2021/01/sqlitechinook.html
- 用SQLiteStudio建立SQL學習環境 https://sql.bod.idv.tw/2021/01/sqlitestudiosql.html
- 選取要作業的資料庫對象(TestWind),開啟(SQL Editor):Tools → Open SQL Editor
- Emp_Id_Name資料表,可以透過以下指令製造:
CREATE TABLE Emp_Id_Name AS SELECT EmployeeId, LastName, FirstName FROM Employee;
- 先修改資料表名稱,在Query分頁中輸入所要執行的指令
ALTER TABLE Emp_Id_Name RENAME TO EmpIdName
; - 執行SQL指令:(F9) Execute SQL,Status : 確認SQL指令執行無誤
- 因目前 SQLite Studio 的版本 v3.2.1,是基於SQLite 3.24.0開發的,如前所述SQLite 3.25.0後,在ALTER TABLE上以加強功能上的實作,所以接下來用sqlite3 3.29.0(或更新的版本)來完成資料欄位的修改新增。
-
回SQLiteStudio查看一下,確認完成修改
- SQL Features That SQLite Does Not Implement (https://sqlite.org/omitted.html)
SQLite雖然已提供幾乎所的功能特性,但並沒有實作標準SQL的每一項功能特性,以ALTER TABLE的功能,僅提供:RENAME TABLE, ADD COLUMN, 及 RENAME COLUMN的支援,DROP COLUMN, ALTER COLUMN, 及 CONSTRAINT則不在功能支援的範圍內。
SQL As Understood By SQLite : ALTER TABLE https://sqlite.org/lang_altertable.html