您的位置:首页 - 教程 - MYSQL - 正文
MySQL中ALTER用法小结

  MySQL中ALTER命令小结。

  1.表操作

  #修改表名

语法: ALTER TABLE table_name RENAME [TO] new_table_name;
举例: ALTER TABLE student RENAME TO students;    --将student表的名称更改为students

 

  2.列(字段)操作

  #修改字段类型

语法: ALTER TABLE table_name MODIFY coloumn_name new_data_type;
举例: ALTER TABLE students MODIFY s_name VARCHAR(30);    --将students表的s_name字段的类型更改为VARCHAR(30)

  #修改字段位置

语法: ALTER TABLE table_name MODIFY coloumn_name data_type AFTER|FIRST [coloumn_name];
举例: ALTER TABLE students MODIFY s_name VARCHAR(30) AFTER s_id;    --将s_name的位置更改到s_id列的后面
       ALTER TABLE students MODIFY s_name VARCHAR(30) FIRST;    --将s_name的位置更改到首列

  #增加字段

语法: ALTER TABLE table_name ADD new_column_name data_type AFTER|FIRST [coloumn_name]
举例: ALTER TABLE students ADD s_age INT AFTER s_name;    --在students表中的s_name列后面增加一列,列名为s_age,类型为INT。

  #删除字段

语法: ALTER TABLE table_name DROP coloumn_name data_type;
举例: ALTER TABLE students DROP s_name;    --删除students表中的s_name字段

  注:MySQL不能直接通过 ALTER 语句修改列名称

 

  3.约束操作

  #添加主键约束

语法: ALTER TABLE table_name ADD PRIMARY KEY(coloumn_name);
举例: ALTER TABLE students ADD PRIMARY KEY()  --为students表添加主键s_id

  #删除主键约束

语法: ALTER TABLE table_name DROP PRIMARY KEY;
举例: ALTER TABLE students DROP PRIMARY KEY;--删除students表中的主键

  #添加外键约束

语法: ALTER TABLE table_name ADD [CONSTRAINT fk_name] FOREIGN KEY(coloumn_name)
      REFERENCES table2_name(coloumn2_name) 
      [ON DELETE {CASCADE|SET NULL|NO ACTION|RESTRICT}]
      [ON UPDATE {CASCADE|SET NULL|NO ACTION|RESTRICT}]
举例: ALTER TABLE score ADD CONSTRAINT fk_score_s_id FOREIGN KEY(s_id)
      REFERENCES students(s_id) ON DELETE RESTRICT ON UPDATE CASCADE;--为score表的s_id列增加外键约束,关联students表的s_id,级联更新,不级联删除

  注: 添加外键约束时,添加外键的列的所有数据必须能够在父表中找到,否则添加会失败。

  #删除外键约束

语法: ALTER TABLE table_name DROP FOREIGN KEY fk_name;
举例: ALTER TABLE score DROP FOREIGN KEY fk_score_s_id; --删除score表中名为fk_score_s_id的外键约束。

  注:外键约束名可以通过命令SHOW CREATE TABLE table_name进行查看。

  #添加非空约束

语法: ALTER TABLE table_name MODIFY coloumn_name data_type NOT NULL;
举例: ALTER TABLE students MODIFY s_name VARCHAR(30) NOT NULL;

  #取消非空约束

语法: ALTER TABLE table_name MODIFY coloumn_name data_type NULL;
举例: ALTER TABLE student MODIFY s_name VARCHAR(30) NULL;

  #添加默认值约束

语法: ALTER TABLE table_name ALTER coloumn_name SET DEFAULT default_value;
举例: ALTER TABLE students ALTER s_grade SET DEFAULT '2013';

  #删除默认值约束

语法: ALTER TABLE table_name ALTER coloumn_name DROP DEFAULT;
举例: ALTER TABLE students ALTER s_grade DROP DEFAULT;

  #添加唯一性约束

语法: ALTER TABLE table_name MODIFY coloumn_name UNIQUE;
举例: ALTER TABLE students MODIFY email data_type UNIQUE;

  #删除唯一性约束

语法: ALTER TABLE table_name DROP INDEX uk_constraint_name;
举例: ALTER TABLE students DROP INDEX email;--删除名称为email的约束

  注:某书上说可以通过类似于 ALTER TABLE students MODIFY email VARCHAR(30); 可以删除唯一性约束,本人在MySQL5.6.30亲测无效。

  #添加自增约束

语法: ALTER TABLE table_name MODIFY coloumn_name data_type AUTO_INCREAMENT;
举例: ALTER TABLE students MODIFY s_id INT AUTO_INCREAMENT;--为students表的s_id列添加自增约束

  注: 添加自增约束时必须为自增字段设置唯一约束或主键约束或外键约束,且自增约束只针对于整数。

  #删除自增约束

语法: ALTER TABLE table_name MODIFY coloumn_name data_type;
举例: ALTER TABLE students MODIFY id int;--删除students表中id的自增约束。

  #删除约束的一般方法

#语法: ALTER TABLE table_name DROP INDEX constraint_name;
#举例: ALTER TABLE students DROP INDEX fk_s_id;--删除名称为fk_s_id的约束

  注: 这种删除的方法只适用于有约束名称的约束,如FOREIGN KEY , UNIQUE KEY,而对于像NOT NULL , AUTO_INCREAMENT则只能用上面的方法。


评论: