SQL 修改表结构

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 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);

输出

执行上面的查询将产生以下输出:

(0 rows affected)

验证

为了验证是否通过添加新列SEX来改变了CUSTOMERS表,使用SELECT语句检索表的记录-

SELECT * FROM CUSTOMERS;

现在,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选项,如下所示。

ALTER TABLE table_name DROP COLUMN column_name;

示例

以下是从现有表中删除性别列的示例。

ALTER TABLE CUSTOMERS DROP COLUMN SEX;

输出

执行上述查询将产生以下输出 –

(0 rows affected)

验证

为了验证是否通过删除现有列SEX来修改了CUSTOMERS表,请使用SELECT语句检索表的记录 –

SELECT * FROM CUSTOMERS;

现在,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语句来为表的现有列添加索引 –

ALTER TABLE table_name ADD INDEX index_name [index_type] (key_part,...) [index_option] .

示例

以下查询在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 – 删除索引

使用ALTER语句与DROP INDEX语句可以从表中删除现有索引。

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 MyPrimaryKey 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;

这将显示创建的表的结构:列名、它们的数据类型、约束(如果有的话)等。

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 – 删除主键

下面是从数据库的现有表中删除主键的语法:

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程