MySQL系列:(六)数据库与表的操作

admin 2020年12月31日 913次浏览

数据库的创建、修改与删除属于DDL数据定义语言应用

1、数据库操作

1.1、库创建的规范

  • 库名使用小写字符
  • 库名不能以数字开头
  • 库名不能是数据库关键字
  • 必须设置字符集

1.2、创建库

  • 语法
    CREATE DATABASE [数据库名称] CHARSET [字符集] COLLATE [校对规则];

  • 示例

    CREATE DATABASE test_db CHARSET utf8mb4 COLLATE utf8mb4_bin;
    

1.3、删除库

  • 语法
    DROP DATABASE [数据库名称]

  • 示例

    DROP DATABASE test_db;
    
  • 修改库
    说明:修改数据库一般修改数据库的字符集、校对规则等。在修改字符集时,目标字符集一定要是原字符集的超集,否则会出现乱码

    • 语法:
      ALTER DATABASE [数据库名称] CHARSET [字符集];

    • 示例:

      ALTER DATABASE test8 CHARSET utf8mb4;
      

2、表的操作

2.1、建表规范

  • 表名小写
  • 不能以数字开头,不能使用保留字符
  • 表名要见其名知其义
  • 选择合适的数据类型及长度
  • 每个列设置NOT NULL、DEFAULT属性,对于数字类数据默认使用“0”填充,对于字符类数据使用有效字符串填充
  • 每个列设置注释
  • 表必须设置存储引擎和字符集
  • 主键列尽量是无关数字列,最好是自增长
  • enum类型不要保存数字,只能是字符串类型

2.2、建表

  • 列属性
    PRIMARY KEY :主键约束,表中只能有一个,非空且唯一
    NOT NULL :非空约束,不允许空值
    UNIQUE KEY :唯一键约束,不允许重复值
    DEFAULT :默认值,一般配合NOT NULL使用
    UNSIGNED :无符号,一般配合数字列,非负数
    AUTO_INCREMENT :自增
    COMMENT :注释

  • 语法
    CREATE TABLE [[数据库.]表名] (
    [列名] [列属性1 列属性2 ...],
    [列名] [列属性1 列属性2 ...],
    ...
    [列名] [列属性1 列属性2 ...]
    )ENGINE [存储引擎] CHARSET [字符集]

  • 示例

    CREATE TABLE stu(
    id INT PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT "学号",
    s_name VARCHAR(255) NOT NULL COMMENT "姓名",
    age TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT "年龄",
    sex ENUM('男','女','保密') NOT NULL DEFAULT '保密' COMMENT '性别',
    intime DATETIME NOT NULL DEFAULT NOW()) COMMENT '进入时间'
    )ENGINE INNODB CHARSET utf8mb4;
    
  • 创建一个结构与现有表相同的表

    • 语法

    CREATE TABLE [新表] LIKE [源表]

    • 示例

      CREATE TABLE stu_copy LIKE stu;
      

2.3、删表

  • 语法
    drop TABLE [表名]

  • 示例

    drop TABLE stu_copy;
    

2.4、改表

注意:在线修改表列时,会造成锁表

2.4.1、在所有列后面添加列

  • 语法

    ALTER TABLE [表名] ADD [列名] [列属性 列属性1 ...]

  • 示例

    ALTER TABLE stu ADD ph_num VARCHAR(15) NOT NULL COMMENT '手机号码';
    

2.4.2、在指定列后面添加列

  • 语法

    ALTER TABLE [表名] ADD [列名] [列属性 列属性1 ...] AFTER [列名]

  • 示例

    ALTER TABLE stu ADD address VARCHAR(255) NOT NULL COMMENT '住址' AFTER s_name;
    

2.4.5、在列最前面添加列

  • 语法

    ALTER TABLE [表名] ADD [列名] [列属性 列属性1 ...] FIRST

  • 示例

    ALTER TABLE stu ADD num VARCHAR(10) NOT NULL COMMENT '序号' FIRST;
    

2.4.6、删除指定列

注意:删除数据是直接物理删除整列数据,不可恢复

  • 语法

    ALTER TABLE [表名] DROP [列名]

  • 示例

    ALTER TABLE stu DROP num;
    

2.4.7、修改指定列的数据属性(不修改列名)

注意:修改列属性时,修改后的属性为最终属性,因此在修改属性时需要输入所有列属性

  • 语法

    ALTER TABLE [表名] MODIFY [列名] [列属性 列属性1 ...]

  • 示例

    ALTER TABLE stu MODIFY ph_num INT NOT NULL COMMENT '手机号码';
    

2.4.8、同时修改列名与列属性

  • 语法

    ALTER TABLE [表名] CHANGE [原列名] [新列名] [列属性 列属性1 ...]

  • 示例

    ALTER TABLE stu CHANGE sex gender CHAR(6) NOT NULL DEFAULT '保密' COMMENT '性别';
    

2.5、查看表结构

  • 语法

    DESC [表名]

  • 示例

    DESC student;