ALTER命令用于修改数据库中的表结构。你可以使用此命令添加、删除或修改表中的列,还可以添加或删除索引等。
添加列
使用ALTER TABLE语句的ADD子句可以在现有表中添加新的列。基本语法如下:
ALTER TABLE table_name ADD column_name datatype;
例如,假设有一个名为employees
的表,我们可以向其添加一个新的列email
来存储员工的电子邮件地址:
ALTER TABLE employees ADD email VARCHAR(50);
这将向employees
表添加一个名为email
的新列,该列的数据类型为VARCHAR,并且可以存储最多50个字符。
删除列
使用ALTER TABLE语句的DROP子句可以从现有表中删除列。基本语法如下:
ALTER TABLE table_name DROP COLUMN column_name;
例如,如果我们想从employees
表中删除email
列,可以使用以下SQL语句:
ALTER TABLE employees DROP COLUMN email;
执行上述命令后,email
列将被删除。
修改列
使用ALTER TABLE语句的MODIFY子句可以更改现有表中列的数据类型或其他属性。基本语法如下:
ALTER TABLE table_name MODIFY COLUMN column_name new_datatype;
例如,如果employees
表中的salary
列最初定义为INT
类型,但现在我们希望将其更改为DECIMAL(10,2)
类型,可以使用以下SQL语句:
ALTER TABLE employees MODIFY COLUMN salary DECIMAL(10,2);
这将把salary
列的数据类型更改为DECIMAL(10,2)
,允许存储更精确的小数值。
更改列名
使用ALTER TABLE语句的CHANGE子句可以更改现有表中列的名称。基本语法如下:
ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name new_datatype;
例如,如果我们想将employees
表中的name
列重命名为full_name
,可以使用以下SQL语句:
ALTER TABLE employees CHANGE COLUMN name full_name VARCHAR(50);
这将把name
列重命名为full_name
,并保持数据类型不变。
添加主键
使用ALTER TABLE语句的ADD PRIMARY KEY子句可以为现有表添加主键约束。基本语法如下:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
例如,如果employees
表还没有主键,我们可以通过以下SQL语句为其添加一个基于employee_id
列的主键:
ALTER TABLE employees ADD PRIMARY KEY (employee_id);
这将确保employee_id
列中的每个值都是唯一的,并且不允许有空值。
删除主键
使用ALTER TABLE语句的DROP PRIMARY KEY子句可以从现有表中删除主键约束。基本语法如下:
ALTER TABLE table_name DROP PRIMARY KEY;
例如,如果我们想从employees
表中删除主键约束,可以使用以下SQL语句:
ALTER TABLE employees DROP PRIMARY KEY;
这将删除employees
表上的主键约束。
添加外键
使用ALTER TABLE语句的ADD FOREIGN KEY子句可以为现有表添加外键约束。基本语法如下:
ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES referenced_table(referenced_column);
例如,如果我们有两个表:orders
和customers
,并且想要通过customer_id
列建立它们之间的关系,可以使用以下SQL语句:
ALTER TABLE orders ADD FOREIGN KEY (customer_id) REFERENCES customers(customer_id);
这将确保orders
表中的customer_id
列只包含customers
表中存在的customer_id
值。
删除外键
使用ALTER TABLE语句的DROP FOREIGN KEY子句可以从现有表中删除外键约束。基本语法如下:
ALTER TABLE table_name DROP FOREIGN KEY foreign_key_name;
例如,如果我们想从orders
表中删除名为fk_customer_id
的外键约束,可以使用以下SQL语句:
ALTER TABLE orders DROP FOREIGN KEY fk_customer_id;
这将删除orders
表上的名为fk_customer_id
的外键约束。
添加唯一约束
使用ALTER TABLE语句的ADD UNIQUE子句可以为现有表添加唯一约束。基本语法如下:
ALTER TABLE table_name ADD UNIQUE (column_name);
例如,如果我们想确保employees
表中的email
列中没有任何重复的电子邮件地址,可以使用以下SQL语句:
ALTER TABLE employees ADD UNIQUE (email);
这将确保email
列中的所有值都是唯一的。
删除唯一约束
使用ALTER TABLE语句的DROP INDEX子句可以从现有表中删除唯一约束。基本语法如下:
ALTER TABLE table_name DROP INDEX index_name;
例如,如果我们想从employees
表中删除名为email_unique
的唯一约束,可以使用以下SQL语句:
ALTER TABLE employees DROP INDEX email_unique;
这将删除employees
表上的名为email_unique
的唯一约束。
添加默认值
使用ALTER TABLE语句的MODIFY子句可以为现有表中的列设置默认值。基本语法如下:
ALTER TABLE table_name MODIFY COLUMN column_name datatype DEFAULT default_value;
例如,如果我们想为employees
表中的status
列设置默认值为'active'
,可以使用以下SQL语句:
ALTER TABLE employees MODIFY COLUMN status VARCHAR(10) DEFAULT 'active';
这将确保在插入新行时,如果没有为status
列提供值,则自动使用'active'
作为默认值。
删除默认值
使用ALTER TABLE语句的MODIFY子句可以移除现有表中列的默认值。基本语法如下:
ALTER TABLE table_name MODIFY COLUMN column_name datatype;
例如,如果我们想从employees
表中的status
列移除默认值,可以使用以下SQL语句:
ALTER TABLE employees MODIFY COLUMN status VARCHAR(10);
这将移除status
列的默认值设置,使该列可以接受任何值或空值。
以上是ALTER命令的一些常见用法,这些命令可以帮助你在MySQL数据库中有效地管理和修改表结构。