SQL 修改表结构
SQL – ALTER TABLE 语句
SQL ALTER TABLE 命令是数据定义语言 (DDL) 的一部分,用于修改表的结构。 ALTER TABLE 命令可以添加或删除列,创建或删除索引,更改现有列的类型,或重命名列或表本身。
ALTER TABLE 命令还可以更改表的特性,例如表的存储引擎。我们在示例中将使用以下表:
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
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_option 取决于要在表上执行的操作的类型。 本文将逐一讨论这些重要操作。
ALTER TABLE – 添加列
如果您需要向表中添加新列,则应使用 ADD COLUMN 选项以及以下的ALTER TABLE语句:
示例
下面是向现有表格中添加新列的示例:
输出
执行上面的查询将产生以下输出:
验证
为了验证是否通过添加新列SEX来改变了CUSTOMERS表,使用SELECT语句检索表的记录-
现在,CUSTOMERS表将显示如下 –
ID | NAME | AGE | ADDRESS | SALARY | SEX |
---|---|---|---|---|---|
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 – 删除列
如果你需要从表中删除一个已存在的列,你应该使用ALTER TABLE语句和DROP COLUMN选项,如下所示。
示例
以下是从现有表中删除性别列的示例。
输出
执行上述查询将产生以下输出 –
验证
为了验证是否通过删除现有列SEX来修改了CUSTOMERS表,请使用SELECT语句检索表的记录 –
现在,CUSTOMERS表已更改,以下是从SELECT语句中输出的结果。
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
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语句来为表的现有列添加索引 –
示例
以下查询在CUSTOMERS表的列NAME上添加了一个索引 –
输出
输出结果将会显示为:
ALTER TABLE – 删除索引
使用ALTER语句与DROP INDEX语句可以从表中删除现有索引。
示例
以下查询在CUSTOMERS表的NAME列上添加了一个索引 –
输出
输出将显示为 –
ALTER TABLE – 添加主键
以下是在数据库中的现有表中添加主键的语法:
示例
在给现有表添加主键之前,让我们先创建一个名为EMPLOYEES的新表,如下所示:
以下查询在EMPLOYEES表的列ID上添加了主键约束:
这将产生如下输出 –
验证
要验证上述查询,如果使用DESC EMPLOYEES命令描述表 –
这将显示创建的表的结构:列名、它们的数据类型、约束(如果有的话)等。
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
ID | int(11) | NO | PRI | NULL | |
NAME | varchar(20) | NO | NULL | ||
AGE | int(11) | NO | NULL | ||
ADDRESS | char(25) | YES | NULL | ||
SALARY | decimal(18,2) | YES | NULL |
ALTER TABLE – 删除主键
下面是从数据库的现有表中删除主键的语法:
例子
以下查询从EMPLOYEES表的ID列中删除主键约束。
这将产生以下输出−
ALTER TABLE – 添加约束
以下是向现有表的列添加唯一约束的语法:
示例
以下查询向表CUSTOMERS添加了UNIQUE约束 –
这将产生以下输出 –
ALTER TABLE – 删除约束
以下是从现有表中删除唯一约束的语法 –
示例
以下查询向表CUSTOMERS添加UNIQUE约束 –
这将生成以下输出−
ALTER TABLE – 重命名列名
以下是重命名现有表的列名的语法:
示例
以下查询将表CUSTOMERS中的NAME列重命名为−
这将产生以下输出−
ALTER TABLE – 修改数据类型
以下是在MySQL、MS Server和Oracle中更改任意列的数据类型的语法。
SQL Server/MS Access语法
MySQL 语法
Oracle语法
示例
以下查询修改了MySQL CUSTOMERS表中SALARY列的数据类型:
这将产生以下输出−