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
奧莉薇走在成為後端工程師之路上
18會員
141內容數
全端網頁開發專業知識分享
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
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
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
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News