2018/06/23 Mysql ALTER的基本使用

因为关于数据库建表和约束这块,在公司中是有一个规范 CLI 来跑的。

由于长时间不用,导致了自己对这一块知识有一些陌生。

于是再回头,边学习边记录。 

建表相关:

  1:自动增量必须和主键约束在一起才生效。反之主键约束可以没有自动增量。

    例如:建立一个INT型无符号自增ID主键

    CREATE TABLE `user`( `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY);

  

  2:唯一约束可以创建多个

    需要注意的是,当在字段一/字段二同时存在唯一约束的时候。

    并不是  字段一/字段二 发生同时重复时才出错,而是一个字段重复就会出粗,和设置几个唯一约束字段没关系,之前因为用的少,所以一直搞混了。

    例如:建立一个 INT 型 无符号 不能为空 的 唯一约束字段

    CREATE TABLE `user`(`year` INT UNSIGNED NOT NULL UNIQUE KEY);

  3:尽量不要去使用外键约束

    主表更新之后会再去更新子表,耗费性能浪费资源

    外键约束目前只有 innodb 引擎支持,移植性和扩展性并不好,在实际中大多数使用逻辑上的外键,而不是物理上的外键约束。

  

  4:alter :添加单列:(默认列位置为表末)

    语法:ALTER TABLE 表名 ADD 列名 定义类型 [FIRST(列将加入最上方) | AFTER 字段名(列加入某某字段之后) ]

    例如:新加入 `age` 字段为第一个字段

     ALTER TABLE `user` ADD `age` INT FIRST;

    例如:新加入 `year` 字段,在 `id` 字段之后

    ALTER TABLE `user` ADD `year` INT AFTER `id`;

   5:alter 删除单列

    语法:ALTER TABLE 表名 DROP 列名

    这个就什么说的了。言简意赅。

   6:alter 添加约束

    语法:ALTER TABLE 表名 ADD 约束条件 (约束字段);

    例如:设置一个主键(之前表未有主键)

    ALTER TABLE `user` ADD PRIMARY KEY (`id`);

    例如:新增一个唯一约束

    ALTER TABLE `user` ADD UNIQUE  KEY (`name`);

  7:alter 删除约束

    语法:ALTER TABLE 表名 DROP 约束条件;

    例如:删除一个主键(因为一张表中只有一个主键,所以不需要指定具体字段)

    ALTER TABLE `user` DROP PRIMARY KEY;

    例如:删除一个唯一约束

    这里可能有点不太一样,唯一约束其实就是在该列上面写了一个唯一的索引,而不是具体的字段。

    所以,应该是找到该字段唯一索引

    SHOW INDEX FROM `user`;

    之后:     

    ALTER TABLE `user` DROP INDEX `索引名`;  

  8:alter 修改字段类型

    语法:ALTER TABLE 表名 MODIFY  字段 条件;

    注意:

      在确认字段后最好不要进行字段类型的修改。

      可能造成数据的丢失和因为修改类型导致的服务异常

    例如:修改一列的数据类型 

    ALTER TABLE `user` MODIFY  `token` VARCHAR(100);

  9:alter 修改字段名称

    语法:ALTER TABLE 表名 CHANGE  老字段名 新字段名 类型[约束];

    例如:更改一列的名称和类型

    ALTER TABLE `user` CHANCE `name` `name2` VARCHAR(100);

          

猜你喜欢

转载自www.cnblogs.com/25-lH/p/9218296.html