Bootstrap

MySQL数据表(table)的相关操作

MySQL数据表的操作

创建数据表

表是数据库对象, 创建数据表的语法格式为:

create [temporary] table [if not exists] 表名(
字段名1 数据类型 [约束类型],
字段名2 数据类型 [约束类型],

);

  • 查看表的信息

    desc 表名;

  • 重命名表

    rename table 原数据表名 to 新数据表名;
    可以对多个数据表进行重命名, 表之间以逗号","进行分隔

  • 删除表

    drop table 表名;
    drop table 表名1, 表名2, …;
    drop table if exists 表名;

选择合适的数据类型

选择合适的数据类型, 节省存储空间, 有效提升数据的计算性能.

  1. 符合取值范围和精度的前提下, 尽量使用"短"数据类型
  2. 数据类型越简单越好.
  3. 使用内置的日期和时间数据类型.
  4. 字段值完全由数字组成, 不执行加减乘除运算的, 选择字符串类型.
  5. 尽量采用精确小数类型(例如decimal), 而不是浮点数类型, 计算更精确且更节省空间.
  6. 尽量避免null字段, 建议指定not null约束.

在创建表时, 使用字符串应遵循以下原则:

  1. 从速度方面考虑, 选择固定的列, 可以使用char类型.
  2. 要节省空间, 使用动态的列, 可以使用varchar类型.
  3. 要将列中的内容限制在一种选择, 可以使用enum类型.
  4. 允许在一个列中有多于一个的条目, 可以使用set类型.
  5. 如果要搜索的内容不区分大小写, 可以使用text类型.

修改表的结构

使用alter table语句修改表的结构, 表结构的修改有增加字段, 删除字段, 修改数据类型, 字段名重命名等内容.

  • 增加字段

    alter table 表名 add 新字段名 新数据类型 [first|after 旧字段名];
    默认时加在表最右边
    表名, 指出修改的表名
    新字段名, 要添加的字段名称
    新数据类型, 和创建表时选择数据类型原则一致
    first, 将新字段添加到表的最左边
    after, 将旧字段添加到表中原有某个字段的右边

  • 删除字段

    alter table 表名 drop 字段名;

  • 修改字段的数据类型

    alter table 表名 modify 字段名 新数据类型;

  • 修改字段名

    alter table 表名 change 旧字段名 新字段名 数据类型;

设置约束

数据完整性(data integrity)是指数据的精确性(accuracy)和可靠性(reliability), 它的作用是防止数据库中存在不符合语义规定的数据, 以及防止因数据库操作员错误数据的输入/输出而造成数据库中存在错误数据.
MySQL数据库将数据完整性解释为: 存储在数据库中的所有数据值均正确.
为表设置约束是解决数据完整性的主要方法.
约束就是一种强制性的规定, 是通过定义字段的取值规则来维护数据完整性的.
MySQL数据库支持的约束有: primary key(主键)约束, not null(非空)约束, unique(唯一)约束, foreign key(外键)约束, default(默认)约束.
MySQL中, 为表创建约束有两种方法: ①创建表时添加约束;②修改表结构添加约束.

创建表时添加约束

  • 主键约束(primary key)
    该字段的值不能为空, 且不能重复.

    字段名 数据类型 primary key;
    或者
    constraint 约束名称 primary key(字段名);

  • 唯一约束
    设置字段的唯一性.

    字段名 数据类型 unique;

  • 非空约束
    设定某列值不能为空, 用来强制实现数据的域完整性.

    字段名 数据类型 not null;

  • 默认约束
    为未填入值的字段强制填入一个默认情况下的值.

    字段名 数据类型 default ‘值’;
    值是数字可以省略单引号

  • 外键约束
    表与表之间的数据是有关联性的, 为了防止数据的丢失或无意义的数据在数据库中扩散, 使得数据不一致, 需要设置外键.
    一张表中的字段值恰好引用了另外一张表的主键值, 那么该字段就是本表的外键.

    constraint 约束名称 foreign key(字段名) references 主表名(字段名);

    外键的作用:

    1. 禁止在从表中插入主表中不存在的数据
    2. 禁止由于修改主表中主键的值, 导致从表中相应的外键值孤立
    3. 禁止删除在从表中有对应记录的主表记录

修改表结构添加约束

通过修改表结构语句"alter table"为已经创建好的表添加约束, 语法如下:

alter table 表名 add constraint 约束名 约束类型(字段名[, …, n]);
其约束类型可以是primary key, foreign key.

alter table 表名 modify 字段 数据类型 约束类型;
其约束类型可以是not null, default, unique.

删除约束

  • 删除表的主键约束语法格式

    alter table 表名 drop primary key;

  • 删除表的外键约束语法格式

    alter table 表名 drop foreign key 约束名;

数据更新

  • 插入数据
    使用insert语句向表中插入一条或多条记录.

    insert [into] 表名 set 字段1 = 值1, 字段2 = 值2, …;
    或者
    insert [into] 表名 [(字段列表)] values(字段值1, 字段值2, 字段值3, …);

  • 修改数据
    使用update语句修改表中一个字段或多个字段的全部值, 也可修改满足条件的数据行和列的部分值.

    update 表名 set 字段1 = 值1[, 字段2 = 值2, …] [where 条件表达式];

    where可选, 省略则表示表中对应的字段值都被更新.
    值, 可以是表达式, 表字段的计算, 指定的数据, 查询结果等.

  • 删除数据

    1. 使用delete语句删除记录

      delete from 表名 [where 条件表达式];

      说明: 没有指定where子句, 那么该表的所有记录都将被删除, 但表结构依旧存在.

    2. 使用truncate table语句完全清空一个表

      truncate [table] 表名;

    3. delete与truncate 的区别:

      清空记录的表如果是父表, 那么truncate命令会执行失败.
      如果truncate语句成功清空表记录, 那么会重新设置自增型字段的计数器(delete不会).
      truncate语句不支持事务的回滚, 并且不会触发触发器程序的运行.
      delete语句删除的数据是可以恢复的.


Tips: MySQL每张表只能有一个自动增长(auto_increase)字段, 这个自动增长字段可以作为主键, 也可以作为非主键使用, 但是注意将非主键字段作为自动增长字段时必须为其添加唯一(unique)索引, 否则系统会报错.

;