MySQL 查看数据库表结构 修改表结构 修改字段 修改约束条件 修改表名 删除数据库表

MySQL 查看数据库表结构 修改表结构 修改字段 修改约束条件 修改表名 删除数据库表

查看数据库表结构

  • 可以使用 describe 语句来查看数据表结构,代码如下:

    describe users;
    
  • 在控制台中输入上述语句后的执行结果如下所示:

    MySQL 查看数据库表结构 修改表结构 修改字段 修改约束条件 修改表名 删除数据库表_第1张图片

修改表结构

  • 在实际应用中,当发现某个表的结构不满足要求时,可以使用 alter table 语句来修改表的结构,包括修改表的名称、添加新的字段、删除原有的字段、修改字段类型、索引及约束,还可以修改存储引擎及字符集等。修改表的语法格式如下:

    alter table 表名 action[,action]...;
    
  • 其中,每个动作(action)是对表所做的修改,MySQL 支持一条 alter table 语句带多个动作,中间用逗号隔开。下面详细介绍一下几种常用的修改

  • 1、修改字段

    • (1)添加新字段

      • 向表里添加新字段可以通过在 action 语句中使用 add 关键字来实现,语法格式如下:

        alter table 表名 add 新字段名 数据类型 [约束条件][first|after 字段名];
        
      • 向表中添加新字段时通常需要指定新字段在表中的位置,如果没有指定 first 或者 after 关键字,则在表的末尾添加新字段,否则在指定位置添加新字段

      • 例如,为用户表 users 添加一个 address 字段,数据类型为 varchar(50),非空约束,可以使用如下的 SQL 语句:

        alter table users add address varchar(50) not null;
        
      • 若要在 users 表中的 sex 字段后增加一个 phone 字段,数据类型为 varchar(20),非空约束,则对应的 SQL 语句如下:

        alter table users add phone varchar(20) not null after sex;
        
      • 添加字段后的 users 表的结构如下图所示

        MySQL 查看数据库表结构 修改表结构 修改字段 修改约束条件 修改表名 删除数据库表_第2张图片

    • (2)修改字段

      • 如果只需要修改字段的数据类型,则使用 change 或者 modify 子句,其语法如下:

        alter table 表名 change 原字段名 新字段名 数据类型;
        alter table 表名 modify 字段名 数据类型;
        
      • 例如,要修改 users 表中的 phone 字段,将数据类型由 varchar(20) 改为 int,并设置默认值为 0,下面两种方法是等价的:

        alter table users change phone phone int unsigned default 0;
        alter tablr users modify phone int unsigned default 0;
        
      • 如果需要修改字段的字段名(以及数据类型)这时就只能使用 change 子句了。例如,将 users 表中的 phone 字段修改为 telephone 字段,且数据类型修改为 varchar(20),则可以使用如下 SQL 语句:

        alter table users change phone telephone varchar(20);
        
    • (3)删除字段

      • 删除表字段的语法格式如下:

        alter table 表名 drop 字段名;
        
      • 例如,将 users 表中的 address 字段删除,则可以使用如下 SQL 语句:

        alter table users drop address;
        
  • 2、修改约束条件

    • (1)添加约束条件

      • 向表的某个字段添加约束条件的语法格式如下:

        alter table 表名 add constraint 约束名 约束类型(字段名);
        
      • 例如,向用户表 users 的 telephone 添加唯一性约束,且约束名为 phone_unique,可以使用如下 SQL 语句:

        alter table users add constraint phone_unique unique(telephone);
        
      • 添加了上述约束条件后,users 表的结构如下所示:

        MySQL 查看数据库表结构 修改表结构 修改字段 修改约束条件 修改表名 删除数据库表_第3张图片

      • 如果要向订单表 orders 的 uid 字段添加外键约束,且约束名为 fk_orders_users,可以使用如下 SQL 语句:

        alter table users add constraint fk_orders_users foreign key(uid) references users(uid);
        
    • (2)删除约束条件

      • 若要删除表的主键约束,其语法格式如下:

        alter table 表名 drop primary key;
        
      • 例如,要删除订单表 orders 的主键约束,可以使用如下 SQL 语句:

        alter table orders drop primary key;
        
      • 若要删除表的外键约束,其语法格式如下:

        alter table 表名 drop foreign key 外键约束名;
        
      • 例如,要删除订单表 orders 的外键约束,可以使用如下 SQL 语句:

        alter table drop foreign key fk_orders_users;
        
      • 若要删除字段的唯一性约束,则只需要删除该字段的唯一性索引即可,其语法格式如下:

        alter table 表名 drop index 唯一索引名;
        
      • 例如,要删除用户表 users 的 telephone 字段的唯一性索引,可以使用如下 SQL 语句:

        alter table users drop index phone_unique;
        
  • 3、修改表名

    • 修改表名的语法格式如下:

      alter table 原表名 rename to 新表名;
      
    • 还可以使用 rename table 语句,其语法格式如下:

      rename table 原表名 to 新表名;
      
    • 例如,将 users 表的表名修改为 tbl_users,可以使用以下代码:

      alter table users rename to tbl_users;
      rename table users to tbl_users;
      
  • 4、修改表的其他设置

    • 修改表的其他设置,常用的操作如修改存储引擎、默认字符集等。例如,修改 users 表的存储引擎和默认字符集:

      alter table users engine=MyISAM;
      alter table users default charset=utf8;
      

删除数据库表

  • 要删除数据库表,可以使用 drop table 语句实现,例如删除 users 表:

    drop table users;
    
  • 在默认情况下,当试图删除一个不存在的表时,系统会报错。例如,以下的情况(orders 表不存在):

    drop table orders;
    
  • 系统会出现 Unknown table “orders” 的错误信息,为避免这种错误,可以使用如下语句:

    drop table if exists orders;
    

你可能感兴趣的:(MySql)