alter语法

ads
当您想要更改表名或任何表字段时,使用 MySQL ALTER 语句。它还可用于添加或删除表中的现有列。
ALTER 语句总是根据情况与“ADD”、“DROP”和“MODIFY”命令一起使用。
开始本章教程前让我们先创建一张表,表名为:customer_tbl。
msyql> create table customer_tbl ( id INT, name VARCHAR(20),age INT );
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW COLUMNS FROM customer_tbl;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

1.在表中添加一列

语法格式

ALTER TABLE table_name
ADD new_column_name column_definition
[ FIRST | AFTER column_name ];

参数说明:

table_name:指定要修改的表名。
new_column_name:指定要添加到表中的新列的名称。
column_definition:指定列的数据类型和定义(NULL 或 NOT NULL 等)。
FIRST | AFTER column_name它是可选的。它告诉 MySQL 在表中的哪个位置创建列。如果未指定此参数,则新列将添加到表的末尾。

示例代码

在本例中,我们在现有表“customer_tbl”中 “name”列后添加了一个新列“sex”。
ALTER TABLE customer_tbl
ADD sex varchar(10) NOT NULL
AFTER name;
输出结果:
mysql> desc customer_tbl;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | varchar(10) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

2.在表中添加多列

语法格式

ALTER TABLE table_name
ADD new_column_name column_definition
[ FIRST | AFTER column_name ],
ADD new_column_name column_definition
[ FIRST | AFTER column_name ],

;
在此示例中,我们在现有表“customer_tbl”中添加两个新列“address”和 salary。address 添加在 sex 列之后,salary 添加在 age 列之后。

示例代码

ALTER TABLE customer_tbl
ADD address varchar(100) NOT NULL
AFTER name,
ADD salary int(100) NOT NULL
AFTER age ;
输出结果:
mysql> ALTER TABLE customer_tbl
-> ADD address varchar(100) NOT NULL
-> AFTER name,
-> ADD salary int(100) NOT NULL
-> AFTER age ;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc customer_tbl;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| address | varchar(100) | NO | | NULL | |
| sex | varchar(10) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| salary | int(100) | NO | | NULL | |
+---------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

3.修改表中的列

MODIFY 命令用于更改表的列定义。

语法格式

ALTER TABLE table_name
MODIFY column_name column_definition
[ FIRST | AFTER column_name ];

示例代码

在此示例中,我们将列 name 修改为 varchar(50) 的数据类型,并强制该列允许 NULL 值。
ALTER TABLE customer_tbl
MODIFY name varchar(50) NULL;
输出结果:
mysql> ALTER TABLE customer_tbl
-> MODIFY name varchar(50) NULL;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc customer_tbl;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| address | varchar(100) | NO | | NULL | |
| sex | varchar(10) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| salary | int(100) | NO | | NULL | |
+---------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。
修改表中字段默认值示例:
mysql> ALTER TABLE customer_tbl
-> MODIFY salary int(100) NOT NULL DEFAULT 1000;
你可以使用 ALTER 来修改字段的默认值,尝试以下实例:
mysql> ALTER TABLE customer_tbl
ALTER salary SET DEFAULT 1000;
你也可以使用 ALTER 命令及 DROP子句来删除字段的默认值,如下实例:
mysql> ALTER TABLE customer_tbl
ALTER salary DROP DEFAULT;
修改数据表类型,可以使用 ALTER 命令及 TYPE 子句来完成。尝试以下实例,我们将表 customer_tbl 的类型修改为 MYISAM :
mysql> ALTER TABLE customer_tbl ENGINE = MYISAM;

4.删除表中的列

如果数据表中只剩余一列则无法使用DROP来删除。

语法格式

ALTER TABLE table_name
DROP COLUMN column_name;

示例代码

ALTER TABLE table_name
DROP COLUMN column_name;
让我们从表“customer_tbl”中删除列名“address。
ALTER TABLE customer_tbl
DROP COLUMN address;
输出结果:
mysql> ALTER TABLE customer_tbl
-> DROP COLUMN address;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc customer_tbl;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| sex | varchar(10) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| salary | int(100) | NO | | NULL | |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

5.重命名表中的列

语法格式

ALTER TABLE table_name
CHANGE COLUMN old_name new_name
column_definition
[ FIRST | AFTER column_name ]

示例代码

在此示例中,我们将列名“name”更改为“title”。
ALTER TABLE customer_tbl
CHANGE COLUMN name title
varchar(20) NOT NULL;
输出结果:
mysql> ALTER TABLE customer_tbl
-> CHANGE COLUMN name title
-> varchar(20) NOT NULL;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc customer_tbl;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| title | varchar(20) | NO | | NULL | |
| sex | varchar(10) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| salary | int(100) | NO | | NULL | |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

6.重命名表

语法格式

ALTER TABLE TABLE_NAME
RENAME TO new_table_name;

示例代码

在本例中,我们将表名 customer_tbl 重命名为 customer_table。
ALTER TABLE customer_tbl
RENAME TO customer_table;
输出结果:
mysql> ALTER TABLE customer_tbl
-> RENAME TO customer_table;
Query OK, 0 rows affected (0.00 sec)

mysql> desc customer_tbl;
ERROR 1146 (42S02): Table 'RUNOON.customer_tbl' doesn't exist

mysql> desc customer_table;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| title | varchar(20) | NO | | NULL | |
| sex | varchar(10) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| salary | int(100) | NO | | NULL | |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
FIRST 和 AFTER 关键字可用于 ADD 与 MODIFY 子句,所以如果你想重置数据表字段的位置就需要先使用 DROP 删除字段然后使用 ADD 来添加字段并设置位置。

长按二维码,查阅更多教程

最后编辑于:2024/1/22 拔丝英语网

admin-avatar

英语作文代写、国外视频下载

高质量学习资料分享

admin@buzzrecipe.com