MySQL字段约束条件()

昨日内容回顾

  • MySQL字符编码及配置修改
    新版MySQL默认字符编码为utf系列,旧版本使用编码不统一,需要自己修改。
    修改使用配置文件较为简单,复制原配置文件改名为my.ini,文件内编写相关配置即可。
  • 数据存储引擎
    MyISAM 存取数据快,但是功能较少,两个文件.frm/.idb
    InnoDB 存取数据较慢,功能较多,可存取事务、行锁、外键等,三个文件.frm/.MYI/.MYD
    MEMORY 存储在内存中,重启服务端后数据消失
    BLACKHOLE 存入数据直接全部消失
  • 创建表完整语句
    create table 表名 (字段名 数据类型(数字) 限制条件) 数字及限制条件为选填。
  • MySQL基本数据类型

    整型 根据数字大小选择不同的类型。数据自带正负号,取消使用unsigned限制条件。
    浮点型 不同类型精确度不同,无特殊要求使用float类型即可。
    字符型 分为定长及可变长,根据具体情况选择使用。
    枚举与集合 多选项选一与多选项选任意个,不在选项中会报错。
    时间类型 不同类型时间准确度不同。使用时一般通过系统获取。

  • 整型 根据数字大小选择不同的类型。数据自带正负号,取消使用unsigned限制条件。
  • 浮点型 不同类型精确度不同,无特殊要求使用float类型即可。
  • 字符型 分为定长及可变长,根据具体情况选择使用。
  • 枚举与集合 多选项选一与多选项选任意个,不在选项中会报错。
  • 时间类型 不同类型时间准确度不同。使用时一般通过系统获取。

今日内容概要

  • 数据基础约束条件
  • 主键的使用
  • 外键的使用

今日内容详细

数据基础约束条件

非空 输入的数据不能为空,使用not null关键字。空的含义为不传值,穿任意数据进去即不为空。

唯一值 输入的数据不能重复,使用unique关键字。

默认值 不输入数据数据时字段名对应的默认值,一般为null即空值。使用default关键字后跟空格及数据设置。

无符号 针对整型数据,使用unsigned关键字取消默认正负号。

零填充 使用zerofill关键字填充不满足展示位数条件的数据。

主键的使用

主键及具有特征标识的字段,需要满足两个条件,一是非空,二是不重复,这样我们就可以通过主键来快速查找数据。一般情况下我们使用自增的阿拉伯数字来作为主键,主键的名称无要求,一般为含id的字段。

一般使用的主键定义方式为

id int primary key auto_increment

在插入数据时,一般不主动对主键进行赋值,如果对主键赋值,则在输入下一条数据时,主键自增的起始位置为上次自定义赋值位置。

主键的自增由单独的计数器进行记录,删除数据后,自增的进度不会受到影响,新增数据时按照原进度自增。

重置主键的自增进度的指令为:truncate 表名,此操作会清楚所有数据,须慎重。

外键的使用

外键使用场景

当两张表内的数据有逻辑上的对应关系我们可以使用外键将两张表的数据建立相应的联系。

外键的使用方式

在创建表时,为建立联系的字段的数据添加限制条件,使其必须为另一张表中的主键字段数据。

foreign key(外键字段名) references on 表名(字段名)

外键添加的位置一般为单个数据对象可与另一个表中多个数据对象建立联系的表中,类似于数据的分支。

外键的特征

外键相当于在数据之间建立了强对应关系,在默认情况下,无法对通过外键连接的数据进行修改或删除。

如果需要修改或删除,则在定义外键时需要添加限制条件将其进行级联(串联)

on update cascade on delete cascade

进行级联后删除有级联关系的任一数据后,与其相关联的数据也会被删除,因此数据一般不通过外键建立联系。

外键的使用场景之多相互对应关系

当一个表内的单个数据可与另一个表中多个数据对应,且与其对应的单个数据又可与多个数据建立对应关系,此时不能简单使用外键,因为会导致数据无法正常插入。

此时需要使用一张新表来储存原先两张表内数据的对应关系,新表使用两个外键分别对应原先两表的主键。

外键使用场景之单一对应关系

当一个数据对象拥有多个对应属性时,可以根据属性的使用频率将属性数据分开存储,经常使用的属性与该对象在一张表中存储,不经常使用的数据在另一张表中存储,在对象所在表中设立外键对应副表的主键。

————————

昨日内容回顾

  • MySQL字符编码及配置修改
    新版MySQL默认字符编码为utf系列,旧版本使用编码不统一,需要自己修改。
    修改使用配置文件较为简单,复制原配置文件改名为my.ini,文件内编写相关配置即可。
  • 数据存储引擎
    MyISAM 存取数据快,但是功能较少,两个文件.frm/.idb
    InnoDB 存取数据较慢,功能较多,可存取事务、行锁、外键等,三个文件.frm/.MYI/.MYD
    MEMORY 存储在内存中,重启服务端后数据消失
    BLACKHOLE 存入数据直接全部消失
  • 创建表完整语句
    create table 表名 (字段名 数据类型(数字) 限制条件) 数字及限制条件为选填。
  • MySQL基本数据类型

    整型 根据数字大小选择不同的类型。数据自带正负号,取消使用unsigned限制条件。
    浮点型 不同类型精确度不同,无特殊要求使用float类型即可。
    字符型 分为定长及可变长,根据具体情况选择使用。
    枚举与集合 多选项选一与多选项选任意个,不在选项中会报错。
    时间类型 不同类型时间准确度不同。使用时一般通过系统获取。

  • 整型 根据数字大小选择不同的类型。数据自带正负号,取消使用unsigned限制条件。
  • 浮点型 不同类型精确度不同,无特殊要求使用float类型即可。
  • 字符型 分为定长及可变长,根据具体情况选择使用。
  • 枚举与集合 多选项选一与多选项选任意个,不在选项中会报错。
  • 时间类型 不同类型时间准确度不同。使用时一般通过系统获取。

今日内容概要

  • 数据基础约束条件
  • 主键的使用
  • 外键的使用

今日内容详细

数据基础约束条件

非空 输入的数据不能为空,使用not null关键字。空的含义为不传值,穿任意数据进去即不为空。

唯一值 输入的数据不能重复,使用unique关键字。

默认值 不输入数据数据时字段名对应的默认值,一般为null即空值。使用default关键字后跟空格及数据设置。

无符号 针对整型数据,使用unsigned关键字取消默认正负号。

零填充 使用zerofill关键字填充不满足展示位数条件的数据。

主键的使用

主键及具有特征标识的字段,需要满足两个条件,一是非空,二是不重复,这样我们就可以通过主键来快速查找数据。一般情况下我们使用自增的阿拉伯数字来作为主键,主键的名称无要求,一般为含id的字段。

一般使用的主键定义方式为

id int primary key auto_increment

在插入数据时,一般不主动对主键进行赋值,如果对主键赋值,则在输入下一条数据时,主键自增的起始位置为上次自定义赋值位置。

主键的自增由单独的计数器进行记录,删除数据后,自增的进度不会受到影响,新增数据时按照原进度自增。

重置主键的自增进度的指令为:truncate 表名,此操作会清楚所有数据,须慎重。

外键的使用

外键使用场景

当两张表内的数据有逻辑上的对应关系我们可以使用外键将两张表的数据建立相应的联系。

外键的使用方式

在创建表时,为建立联系的字段的数据添加限制条件,使其必须为另一张表中的主键字段数据。

foreign key(外键字段名) references on 表名(字段名)

外键添加的位置一般为单个数据对象可与另一个表中多个数据对象建立联系的表中,类似于数据的分支。

外键的特征

外键相当于在数据之间建立了强对应关系,在默认情况下,无法对通过外键连接的数据进行修改或删除。

如果需要修改或删除,则在定义外键时需要添加限制条件将其进行级联(串联)

on update cascade on delete cascade

进行级联后删除有级联关系的任一数据后,与其相关联的数据也会被删除,因此数据一般不通过外键建立联系。

外键的使用场景之多相互对应关系

当一个表内的单个数据可与另一个表中多个数据对应,且与其对应的单个数据又可与多个数据建立对应关系,此时不能简单使用外键,因为会导致数据无法正常插入。

此时需要使用一张新表来储存原先两张表内数据的对应关系,新表使用两个外键分别对应原先两表的主键。

外键使用场景之单一对应关系

当一个数据对象拥有多个对应属性时,可以根据属性的使用频率将属性数据分开存储,经常使用的属性与该对象在一张表中存储,不经常使用的数据在另一张表中存储,在对象所在表中设立外键对应副表的主键。