SQL語法修改資料庫 - ALTER TABLE(變更資料表)

更新於 發佈於 閱讀時間約 5 分鐘
  • ALTER TABLE: 這個命令是用來修改資料表的結構,例如新增、修改或刪除欄位。它針對的是資料表(table)本身的結構,而不是具體的記錄(record)。
  • INSERT 和 UPDATE: 這兩個命令是用來操作具體的記錄(record)。INSERT 用於新增記錄,而 UPDATE 用於修改現有的記錄。
  • ALTER TABLE 常見的使用情境:

新增欄位:

當需要在現有的資料表中新增一個欄位來儲存新的資訊時,例如新增 city 欄位來記錄使用者的居住地。

修改欄位名稱或型別:

當需要修改欄位的名稱或資料型別時,例如將 last_login 欄位的型別從 DATE 改為 TIMESTAMP 以提高精確度。

刪除欄位:

當某個欄位不再需要時,可以刪除該欄位以節省空間。

修改資料表名稱:

當需要修改資料表的名稱時,可以使用 ALTER TABLE 語法。

※ 新增 Column

語法

raw-image
  • ALTER TABLE table:宣告ALTER TABLE語法後,接指定要修改的資料表。
  • ADD [COLUMN] column_name column_definition:新增一個名為 column_name 的欄位,並定義其資料類型(型別)和屬性(例如 VARCHAR(255) 或 INT)。
  • [FIRST|AFTER existing_column]:選擇性參數,決定新欄位的位置。FIRST 表示將新欄位放在第一個位置,AFTER existing_column 表示將新欄位放在指定欄位之後。若不指定,預設會新增在最後面。

實例

raw-image
raw-image


※ 修改 Column DEFINITION(屬性和資料型別)

語法

raw-image
  • ALTER TABLE table_name:要修改名為 table_name 的資料表。
  • MODIFY column_name column_definition [FIRST | AFTER column_name]:要修改名為 column_name 的欄位,並重新定義其資料類型和屬性(例如 VARCHAR(255) 或 INT)。[FIRST | AFTER column_name] 這是選擇性參數,表示要將修改後的欄位放在資料表中的特定位置。FIRST 表示將欄位放在資料表的第一個位置,而 AFTER column_name 表示將欄位放在指定欄位之後。
  • 這段語法可以包含多個 MODIFY 語句,每個語句用逗號分隔。

實例

raw-image
raw-image



※ 修改 COLUMN 名字

語法

raw-image
  • ALTER TABLE table_name:要修改名為 table_name 的資料表。
  • CHANGE COLUMN original_name new_name column_definition:要將名為 original_name 的欄位改名為 new_name,並重新定義其資料類型和屬性(例如 VARCHAR(255) 或 INT)。
  • [FIRST | AFTER column_name]:這是選擇性參數,表示要將修改後的欄位放在資料表中的特定位置。FIRST 表示將欄位放在資料表的第一個位置,而 AFTER column_name 表示將欄位放在指定欄位之後。

實例

raw-image



※ 刪除 COLUMN

語法

raw-image
  • ALTER TABLE table_name:要修改名為 table_name 的資料表。
  • DROP COLUMN column_name:要刪除名為 column_name 的欄位。

實例

raw-image


※ 改 Table 名字

語法

raw-image
ALTER TABLE table_name
RENAME TO new_table_name
  • ALTER TABLE table_name:要修改名為 table_name 的資料表。
  • RENAME TO new_table_name:要將資料表重新命名為 new_table_name

實例

raw-image


※ MYSQL 和 SQLite 在 ALTER TABLE 的差異

raw-image


SQLite 不支援的指令和功能:

  1. 完整的 ALTER TABLE 支援
    • 只能支援 RENAME TABLE、ADD COLUMN、RENAME COLUMN 和 DROP COLUMN。
    • 不支援 ALTER COLUMN、ADD CONSTRAINT 等其他變更操作。
  2. 修改欄位的資料類型或名稱
    • 無法直接修改欄位的資料類型或名稱。需要通過創建新表、複製數據、刪除舊表並重命名新表來實現。
  3. 刪除欄位
    • 無法直接刪除欄位。需要通過創建新表、複製數據、刪除舊表並重命名新表來實現。
  4. 指定欄位為 PRIMARY KEY 或 UNIQUE
    • 無法在新增欄位時指定該欄位為 PRIMARY KEY 或 UNIQUE。
  5. 完整的觸發器支援
    • 支援 FOR EACH ROW 觸發器,但不支援 FOR EACH STATEMENT 觸發器。
  6. 對 VIEW 的寫操作
    • VIEW 在 SQLite 中是唯讀的,無法執行 DELETE、INSERT 或 UPDATE 操作
  7. GRANT 和 REVOKE
    • 由於 SQLite 是嵌入式資料庫引擎,無法實現 GRANT 和 REVOKE 指令


※ 解決⽅案

創建新 Table :將 Schema 的規格重新定義,再重新創建一個表格。

• 從舊 Table 複製資料 使用 INSERT INTO new_table SELECT … FROM old_table 將資料從舊表複製到新表。

• 刪掉舊 Table

• 把新 Table 改名成原本 Table 的名字

• 萬⼀途中有些指令失敗? 利用Transaction將舊資料救回來!

留言
avatar-img
留言分享你的想法!
avatar-img
奧莉薇走在成為後端工程師之路上
20會員
145內容數
全端網頁開發專業知識分享
2025/04/26
※ 場景: 即時聊天應用: 設計一個支持多房間功能的即時聊天平台,像 WhatsApp、LINE或Facebook Messenger,提供文字、語音、視訊聊天功能,方便管理群組聊天。 功能亮點:加入特別功能,例如可加入多房間功能、使用者名單、表情符號支持、文件分享或訊息已讀未讀狀態。 展示
2025/04/26
※ 場景: 即時聊天應用: 設計一個支持多房間功能的即時聊天平台,像 WhatsApp、LINE或Facebook Messenger,提供文字、語音、視訊聊天功能,方便管理群組聊天。 功能亮點:加入特別功能,例如可加入多房間功能、使用者名單、表情符號支持、文件分享或訊息已讀未讀狀態。 展示
2025/04/26
※ 先建立基本的express後端服務: 1.建立新資料夾:Socket mkdir socket 2.進入資料夾:Socket cd ​bsocket 3. 安裝 Experss 到專案中 npm init -y //初始化專案,建立 package.json 檔 npm insta
Thumbnail
2025/04/26
※ 先建立基本的express後端服務: 1.建立新資料夾:Socket mkdir socket 2.進入資料夾:Socket cd ​bsocket 3. 安裝 Experss 到專案中 npm init -y //初始化專案,建立 package.json 檔 npm insta
Thumbnail
2025/04/10
※ 什麼是 Socket.io:一個基於傳統 WebSocket API 之上的框架。 ※ Socket.io常用功能: Custom Events:在 Socket.io 中,開發者可以創建自己的事件來處理特定的功能或需求。 Rooms:分組的功能。每個連接的用戶(或稱為 socket)可
Thumbnail
2025/04/10
※ 什麼是 Socket.io:一個基於傳統 WebSocket API 之上的框架。 ※ Socket.io常用功能: Custom Events:在 Socket.io 中,開發者可以創建自己的事件來處理特定的功能或需求。 Rooms:分組的功能。每個連接的用戶(或稱為 socket)可
Thumbnail
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
Thumbnail
※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
Thumbnail
本文介紹瞭如何使用BAT腳本和CMD指令來自動執行檔案和空目錄的刪除作業。通過設定各種參數和指令,可以快速、有效地執行定期刪除作業,節省硬體空間並提升工作效率。
Thumbnail
本文介紹瞭如何使用BAT腳本和CMD指令來自動執行檔案和空目錄的刪除作業。通過設定各種參數和指令,可以快速、有效地執行定期刪除作業,節省硬體空間並提升工作效率。
Thumbnail
Visual Basic for Applications(VBA)是一種功能強大的程式語言,廣泛用於自動化 Microsoft Office 應用程式中的重複性任務。在這篇教學文章中,我們將介紹如何使用 VBA 來新增、刪除和移動檔案。
Thumbnail
Visual Basic for Applications(VBA)是一種功能強大的程式語言,廣泛用於自動化 Microsoft Office 應用程式中的重複性任務。在這篇教學文章中,我們將介紹如何使用 VBA 來新增、刪除和移動檔案。
Thumbnail
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
Thumbnail
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
Thumbnail
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
如果MySQL忘記密碼,可以使用修改cnf檔案免去登入驗證,再進入MySQL重新設定密碼的方式,找回密碼,另外還附上有一般修改密碼的方式。
Thumbnail
如果MySQL忘記密碼,可以使用修改cnf檔案免去登入驗證,再進入MySQL重新設定密碼的方式,找回密碼,另外還附上有一般修改密碼的方式。
Thumbnail
在工作情境中手動執行SQL語法更新中文字時,有時會遇到中文字顯示問號(?)的情況。這篇文章將介紹如何解決手動執行SQL語法時造成中文顯示問號(?)的方法。
Thumbnail
在工作情境中手動執行SQL語法更新中文字時,有時會遇到中文字顯示問號(?)的情況。這篇文章將介紹如何解決手動執行SQL語法時造成中文顯示問號(?)的方法。
Thumbnail
Select the datastore you want to RENAME\rename\Input a new name\done
Thumbnail
Select the datastore you want to RENAME\rename\Input a new name\done
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
Thumbnail
種類 SQL指令分三大部分: 資料定義語言(Data Definition Language,DDL):建立資料表、索引和檢視表等,和定義資料表的欄位。 資料操作語言(Data Manipulation Language,DML):資料表紀錄查詢、插入、刪除和更新指令。 資料控制語言(Dat
Thumbnail
種類 SQL指令分三大部分: 資料定義語言(Data Definition Language,DDL):建立資料表、索引和檢視表等,和定義資料表的欄位。 資料操作語言(Data Manipulation Language,DML):資料表紀錄查詢、插入、刪除和更新指令。 資料控制語言(Dat
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News