
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表
- SQL - 約束
- SQL 查詢
- SQL - INSERT 查詢
- SQL - SELECT 查詢
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - UPDATE 查詢
- SQL - DELETE 查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - INNER JOIN
- SQL - LEFT JOIN
- SQL - RIGHT JOIN
- SQL - CROSS JOIN
- SQL - FULL JOIN
- SQL - 自連線
- SQL - DELETE JOIN
- SQL - UPDATE JOIN
- SQL - LEFT JOIN vs RIGHT JOIN
- SQL - UNION vs JOIN
- SQL 鍵
- SQL - UNIQUE KEY
- SQL - PRIMARY KEY
- SQL - FOREIGN KEY
- SQL - 組合鍵
- SQL - 備選鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - UNIQUE 索引
- SQL - 聚集索引
- SQL - 非聚集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - MIN & MAX
- SQL - NULL 函式
- SQL - CHECK 約束
- SQL - DEFAULT 約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - ALTER TABLE
SQL − ALTER TABLE 語句
SQL 的ALTER TABLE 命令是資料定義語言 (DDL) 的一部分,用於修改表結構。ALTER TABLE 命令可以新增或刪除列、建立或刪除索引、更改現有列的型別,或重新命名列或表本身。
ALTER TABLE 命令還可以更改表的特性,例如表使用的儲存引擎。在我們的示例中,我們將使用下表:
ID | 姓名 | 年齡 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
語法
以下是 ALTER TABLE 命令的基本語法:
ALTER TABLE table_name [alter_option ...];
其中,alter_option 取決於要對錶執行的操作型別。本文將逐一討論這些重要操作。
ALTER TABLE − 新增列
如果需要向表中新增新列,應將ADD COLUMN 選項與 ALTER TABLE 語句一起使用,如下所示:
ALTER TABLE table_name ADD column_name datatype;
示例
以下是向現有表中新增新列的示例:
ALTER TABLE CUSTOMERS ADD SEX char(1);
輸出
執行上述查詢將產生以下輸出:
Query OK, 0 rows affected (0.09 sec) Records: 0 Duplicates: 0 Warnings: 0
驗證
要驗證是否透過新增新列 SEX 來更改 CUSTOMERS 表,請使用 SELECT 語句檢索表的記錄:
SELECT * FROM CUSTOMERS;
現在,CUSTOMERS 表將顯示如下:
ID | 姓名 | 年齡 | 地址 | 薪水 | 性別 |
---|---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 | NULL |
2 | Khilan | 25 | Delhi | 1500.00 | NULL |
3 | Kaushik | 23 | Kota | 2000.00 | NULL |
4 | Chaitali | 25 | Mumbai | 6500.00 | NULL |
5 | Hardik | 27 | Bhopal | 8500.00 | NULL |
6 | Komal | 22 | Hyderabad | 4500.00 | NULL |
7 | Muffy | 24 | Indore | 10000.00 | NULL |
ALTER TABLE − 刪除列
如果需要從表中刪除現有列,應將 DROP COLUMN 選項與 ALTER TABLE 語句一起使用,如下所示。
ALTER TABLE table_name DROP COLUMN column_name;
示例
以下是從現有表中刪除 sex 列的示例。
ALTER TABLE CUSTOMERS DROP COLUMN SEX;
輸出
執行上述查詢將產生以下輸出:
Query OK, 0 rows affected (0.07 sec) Records: 0 Duplicates: 0 Warnings: 0
驗證
要驗證是否透過刪除現有列 SEX 來更改 CUSTOMERS 表,請使用 SELECT 語句檢索表的記錄:
SELECT * FROM CUSTOMERS;
現在,CUSTOMERS 表已更改,SELECT 語句的輸出如下。
ID | 姓名 | 年齡 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
ALTER TABLE − 新增索引
可以使用 ADD INDEX 語句以及 ALTER 語句向表的現有列新增索引:
ALTER TABLE table_name ADD INDEX index_name [index_type]
示例
以下查詢在 CUSTOMERS 表的 NAME 列上新增索引:
ALTER TABLE CUSTOMERS ADD INDEX name_index (NAME);
輸出
輸出將顯示為:
Query OK, 0 rows affected (0.003 sec) Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE − 刪除索引
可以使用 DROP INDEX 語句以及 ALTER 語句從表中刪除現有索引:
ALTER TABLE table_name DROP INDEX index_name;
示例
以下查詢在 CUSTOMERS 表的 NAME 列上新增索引:
ALTER TABLE CUSTOMERS DROP INDEX name_index;
輸出
輸出將顯示為:
Query OK, 0 rows affected (0.003 sec) Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE − 新增主鍵
以下是向資料庫現有表中新增主鍵的語法:
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column1, column2...);
示例
在向現有表新增主鍵之前,讓我們先建立一個名為 EMPLOYEES 的新表,如下所示
CREATE TABLE EMPLOYEES( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2) );
以下查詢在 EMPLOYEES 表的 ID 列上新增主鍵約束:
ALTER TABLE EMPLOYEES ADD CONSTRAINT MyPrimaryKey PRIMARY KEY(ID);
這將產生以下輸出:
Query OK, 0 rows affected, 1 warning (0.003 sec) Records: 0 Duplicates: 0 Warnings: 1
驗證
要驗證上述查詢,如果使用 DESC EMPLOYEES 命令描述表:
DESC EMPLOYEES;
這將顯示所建立表的結構:列名、它們各自的資料型別、約束(如果有)等。
欄位 | 型別 | 空值 | 鍵 | 預設值 | 額外 |
---|---|---|---|---|---|
ID | int(11) | 否 | PRI | NULL | |
姓名 | varchar(20) | 否 | NULL | ||
年齡 | int(11) | 否 | NULL | ||
地址 | char(25) | 是 | NULL | ||
薪水 | decimal(18,2) | 是 | NULL |
ALTER TABLE − 刪除主鍵
以下是從資料庫現有表中刪除主鍵的語法:
ALTER TABLE table_name DROP PRIMARY KEY;
示例
以下查詢從 EMPLOYEES 表的 ID 列中刪除主鍵約束:
ALTER TABLE EMPLOYEES DROP PRIMARY KEY;
這將產生以下輸出:
Query OK, 0 rows affected, 1 warning (0.003 sec) Records: 0 Duplicates: 0 Warnings: 1
ALTER TABLE − 新增約束
以下是向現有表列新增唯一約束的語法:
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column1, column2...);
示例
以下查詢向 CUSTOMERS 表新增 UNIQUE 約束:
ALTER TABLE EMPLOYEES ADD CONSTRAINT CONST UNIQUE(NAME);
這將產生以下輸出:
Query OK, 0 rows affected (0.003 sec) Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE − 刪除約束
以下是刪除現有表唯一約束的語法:
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
示例
以下查詢向 CUSTOMERS 表新增 UNIQUE 約束:
ALTER TABLE EMPLOYEES DROP CONSTRAINT CONST;
這將產生以下輸出:
Query OK, 0 rows affected (0.003 sec) Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE − 重新命名列
以下是重新命名現有表列名的語法:
ALTER TABLE table_name RENAME COLUMN old_column_name to new_column_name;
示例
以下查詢重新命名 CUSTOMERS 表中的 NAME 列:
ALTER TABLE CUSTOMERS RENAME COLUMN name to full_name;
這將產生以下輸出:
Query OK, 0 rows affected (0.002 sec) Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE − 修改資料型別
以下是更改 MySQL、MS Server 和 Oracle 中任何列的資料型別的語法。
SQL Server/MS Access 語法
ALTER TABLE table_name ALTER COLUMN column_name datatype;
MySQL 語法
ALTER TABLE table_name MODIFY COLUMN column_name datatype;
Oracle 語法
ALTER TABLE table_name MODIFY COLUMN column_name datatype;
示例
以下查詢修改 MySQL CUSTOMERS 表中 SALARY 列的資料型別:
ALTER TABLE CUSTOMERS MODIFY COLUMN ID DECIMAL(18, 4);
這將產生以下輸出:
Query OK, 0 rows affected (0.003 sec) Records: 0 Duplicates: 0 Warnings: 0