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数据库中有效地管理和修改表结构。