文章目录

  • 字段类型
    • 整数类型
    • 小数类型(2种)
    • 字符串类型(5种)
    • 时间日期类型(5种)
  • 属性
    • NULL属性
    • Default属性
    • 主键
    • 自增长属性
    • 唯一键
    • comment属性
  • 数据库记录长度

字段类型

字段类型:MySQL中用来规定实际存储的数据格式

  • 字段类型在定义表结构时设定
  • 设定好字段类型后,插入数据时必须与字段类型对应,否则数据错误
  • 字段类型的作用就是强制规范录入的数据格式
    • 规范数据的格式
    • 保证数据的有效性
  • MySQL有四大数据类型
    • 整数类型:只能存储整数
    • 小数类型:可以存储有效数值
    • 字符串类型:存储字符串数据
    • 时间日期类型:存储时间日期格式数据

整数类型

整数类型:有效的整数数据

  • MySQL中为了数据空间的有效使用,设定了五种整数类型

    • 迷你整型:tinyint,使用1个字节存储整数,最多存储256个整数(-128~127)
    • 短整型:smallint,使用2个字节存储整数
    • 中整型:mediumint,使用3个字节存储整数
    • 标准整型:int,使用4个字节存储整数
    • 大整型:bigint,使用8个字节存储
  • 数值型存储在MySQL中分为有符号(有负数)和无符号(纯正数)需要unsigned 修饰整型

示例:设计一个表记录个人信息:年龄、头发数量

# 年龄:没有负数,正常年龄也不超过200岁,迷你整型无符号即可
# 头发数量:没有负数,大概在几百万根,所以标准整型无符号即可
create table t_7(age tinyint unsigned, # unsigned修饰整数,表示无符号(从0开始)haircount int unsigned
)charset utf8;

显示宽度:int(L),整数在数据库中显示的符号(数字+符号)个数

  • 显示宽度一般是类型能表示的最大值对应的数字个数(通过desc查看表字段显示)
  • 显示宽度包含符号(如果允许为负数,-负号会增加一个宽度)
  • 显示宽度可以主动控制:创建字段时加括号确定
  • 显示宽度不会影响类型能表示的最大数值
  • 可以通过zerofill让不够宽度的数值补充到对应宽度:在字段类型后使用zerofill

小数类型(2种)

1、浮点型:float / double,存储不是特别精确的数值数据

  • 浮点数又称之为精度数据,分为两种

    • 单精度:float,使用4个字节存储,精度范围为6-7位有效数字
    • 双精度:double,使用8个字节存储,精度范围为14-15位有效数字
  • 浮点数超过精度范围会自动进行四舍五入
  • 精度可以指定整数和小数部分
    • 默认不指定,整数部分不超过最大值,小数部分保留2位
    • 可以指定:float/double(总长度,小数部分长度)
  • 可以使用科学计数法插入数据:AEB,A * 10 ^ B
  • 因为浮点数会自动四舍五入,所以不要使用浮点数来存储对精度要求较高的数值

示例:记录商品的价格

# 商品名字字符串
# 商品价格一般都允许带小数
create table t_11(goods_name varchar(20),goods_price float
)charset utf8;
insert into t_11 values('Nokia3310',199.99);
insert into t_11 values('Nokia6100',1999.9999);

2、定点型:decimal,能够保证精度的小数

  • 定点数的存储模式不是固定长度,所以数据越大占用的存储空间越长
  • 每9个数字使用4个字节存储
  • 定点型可以指定整数部分长度和小数部分长度
    • 默认不指定,10位有效整数,0位小数
    • 可以指定:decimal(有效数位,小数部分数位)
    • 有效数位不超过65个
  • 数据规范
    • 整数部分超出报错
    • 小数部分超出四舍五入

示例:记录个人资产情况:资产和负债

# 资产和负债应该都是精确的,小数部分可以到分
create table t_12(money decimal(14,2),bet decimal(10,2)
)charset utf8;insert into t_12 values(1111111111.12,1111111.999);
insert into t_12 values(1111111111.12,99999999.999); # 错误:进位导致正数部分超过指定范围

字符串类型(5种)

1、定长型:char(L),指定固定长度的存储空间存储字符串

  • 定长是指定存储长度
  • 定长的长度是字符而不是字节
    • L的最大值是255
    • 实际存储空间:L字符数 * 字符集对应字节数
  • 定长里存储的数据不能超过指定长度,但是可以小于指定长度
  • 字符串数据使用单引号或者双引号包裹
  • 定长的访问效率较高,但是空间利用率较低

示例:记录个人信息:身份证信息和手机号码

# 身份证为固定长度18位(数字)
# 手机号码是11位固定长度(数字)
create table t_13(id_number char(18),phone_number char(11)
)charset utf8;
insert into t_13 values('440111999912120304','13512345678');

2、变长型:varchar(L),根据实际存储的数据变化存储空间

  • 变长型的存储空间是由实际存储数据决定的
  • 变长型的L也是指字符而不是字节
    • L指定的是最大存储的数据长度
    • L最大值理论是65535
    • 变长需要额外产生1-2个字节,用来记录实际数据的长度
      • 数据长度小于256个,多1个字节
      • 数据长度大于256个,多2个字节
    • 实际存储空间:实际字符数 * 字符集对应字节数 + 记录长度
  • 变长数据不能超过定义的最大长度
  • 变长字符串在读取时需要进行长度计算,所以效率没有定长字符串高
  • 变长字符串能够更好的利用存储空间

示例:记录个人信息:用户名、密码、姓名、身份证

# 用户名不确定长度,最长不超过50个字符
# 密码不确定长度,最长超过15个字符
# 姓名不确定长度,最长不超过10个字符
# 身份证固定长度,18个字符
create table t_14(username varchar(50),password varchar(15),name varchar(10),id_number char(18)
)charset utf8;insert into t_14 values('username','password','name','444111999912121111');

3、文本字符串:text/blob,专门用来存储较长的文本

  • 文本字符串通常在超过255个字符时使用
  • 文本字符串包含两大类
    • text:普通字符

      • tinytext:迷你文本,不超过2 ^ 8 -1个字符
      • text:普通文本,不超过 2 ^ 16 - 1个字符
      • mediumtext:中型文本,不超过 2 ^ 24 - 1 个字符
      • longtext:长文本,不超过 2 ^ 32 - 1 个字符(4G)
    • blob:二进制字符(与text类似)
      • tinyblob
      • blob
      • mediumblob
      • longblob
  • 文本字符串会自动根据文本长度选择适合的具体类型
  • 一般在文本超过255个字符时,都会使用text(blob现在极少使用)

示例:记录新闻信息:标题、作者和内容

# 标题一般不会超过50个字符,varchar
# 作者一般不会超过10个字符:varchar
# 内容通常都很长,使用text
create table t_15(author varchar(10),title varchar(50),content text
)charset utf8;insert into t_15 values('佚名','给联合国的一封信','给联合国的一封信...');

4、枚举型:enum, 一种映射存储方式,以较小的空间存储较多的数据

  • 枚举是在定义时确定可能出现的可能,而后数据只能出现定义时其中的一种的数据类型
  • 枚举类似一种单选框
  • 枚举使用1-2个字节存储,最多可以设计65535个选项
  • 枚举实际存储是使用数值,映射对应的元素数据,从1开始
  • 枚举语法:enum(元素1,元素2,...元素N)
  • 使用枚举的作用:
    • 规范数据模型
    • 优化存储空间

示例:记录人群类型:小朋友、少年、青年、中年、老年,每个人实际只属于一种类别

# 要保证未来数据只能出现在某种可能中,所以要先列出来,可以使用enum
create table t_16(type enum('小朋友','少年','青年','中年','老年')
)charset utf8;insert into t_16 values('少年');
insert into t_16 values('仙人');    # 不存在的数据不能插入

枚举定义原理:

枚举数据 映射值
数据1 1
数据2 2
数据N N(小于65535)

数据存储(读取反过来):

#mermaid-svg-pOdm8Tyl0MVp7hio .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .label text{fill:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .node rect,#mermaid-svg-pOdm8Tyl0MVp7hio .node circle,#mermaid-svg-pOdm8Tyl0MVp7hio .node ellipse,#mermaid-svg-pOdm8Tyl0MVp7hio .node polygon,#mermaid-svg-pOdm8Tyl0MVp7hio .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-pOdm8Tyl0MVp7hio .node .label{text-align:center;fill:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .node.clickable{cursor:pointer}#mermaid-svg-pOdm8Tyl0MVp7hio .arrowheadPath{fill:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-pOdm8Tyl0MVp7hio .flowchart-link{stroke:#333;fill:none}#mermaid-svg-pOdm8Tyl0MVp7hio .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-pOdm8Tyl0MVp7hio .edgeLabel rect{opacity:0.9}#mermaid-svg-pOdm8Tyl0MVp7hio .edgeLabel span{color:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-pOdm8Tyl0MVp7hio .cluster text{fill:#333}#mermaid-svg-pOdm8Tyl0MVp7hio div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-pOdm8Tyl0MVp7hio .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-pOdm8Tyl0MVp7hio text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-pOdm8Tyl0MVp7hio .actor-line{stroke:grey}#mermaid-svg-pOdm8Tyl0MVp7hio .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-pOdm8Tyl0MVp7hio #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .sequenceNumber{fill:#fff}#mermaid-svg-pOdm8Tyl0MVp7hio #sequencenumber{fill:#333}#mermaid-svg-pOdm8Tyl0MVp7hio #crosshead path{fill:#333;stroke:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .messageText{fill:#333;stroke:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-pOdm8Tyl0MVp7hio .labelText,#mermaid-svg-pOdm8Tyl0MVp7hio .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-pOdm8Tyl0MVp7hio .loopText,#mermaid-svg-pOdm8Tyl0MVp7hio .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-pOdm8Tyl0MVp7hio .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-pOdm8Tyl0MVp7hio .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-pOdm8Tyl0MVp7hio .noteText,#mermaid-svg-pOdm8Tyl0MVp7hio .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-pOdm8Tyl0MVp7hio .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-pOdm8Tyl0MVp7hio .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-pOdm8Tyl0MVp7hio .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-pOdm8Tyl0MVp7hio .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-pOdm8Tyl0MVp7hio .section{stroke:none;opacity:0.2}#mermaid-svg-pOdm8Tyl0MVp7hio .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-pOdm8Tyl0MVp7hio .section2{fill:#fff400}#mermaid-svg-pOdm8Tyl0MVp7hio .section1,#mermaid-svg-pOdm8Tyl0MVp7hio .section3{fill:#fff;opacity:0.2}#mermaid-svg-pOdm8Tyl0MVp7hio .sectionTitle0{fill:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .sectionTitle1{fill:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .sectionTitle2{fill:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .sectionTitle3{fill:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-pOdm8Tyl0MVp7hio .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-pOdm8Tyl0MVp7hio .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-pOdm8Tyl0MVp7hio .grid path{stroke-width:0}#mermaid-svg-pOdm8Tyl0MVp7hio .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-pOdm8Tyl0MVp7hio .task{stroke-width:2}#mermaid-svg-pOdm8Tyl0MVp7hio .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-pOdm8Tyl0MVp7hio .taskText:not([font-size]){font-size:11px}#mermaid-svg-pOdm8Tyl0MVp7hio .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-pOdm8Tyl0MVp7hio .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-pOdm8Tyl0MVp7hio .task.clickable{cursor:pointer}#mermaid-svg-pOdm8Tyl0MVp7hio .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-pOdm8Tyl0MVp7hio .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-pOdm8Tyl0MVp7hio .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-pOdm8Tyl0MVp7hio .taskText0,#mermaid-svg-pOdm8Tyl0MVp7hio .taskText1,#mermaid-svg-pOdm8Tyl0MVp7hio .taskText2,#mermaid-svg-pOdm8Tyl0MVp7hio .taskText3{fill:#fff}#mermaid-svg-pOdm8Tyl0MVp7hio .task0,#mermaid-svg-pOdm8Tyl0MVp7hio .task1,#mermaid-svg-pOdm8Tyl0MVp7hio .task2,#mermaid-svg-pOdm8Tyl0MVp7hio .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-pOdm8Tyl0MVp7hio .taskTextOutside0,#mermaid-svg-pOdm8Tyl0MVp7hio .taskTextOutside2{fill:#000}#mermaid-svg-pOdm8Tyl0MVp7hio .taskTextOutside1,#mermaid-svg-pOdm8Tyl0MVp7hio .taskTextOutside3{fill:#000}#mermaid-svg-pOdm8Tyl0MVp7hio .active0,#mermaid-svg-pOdm8Tyl0MVp7hio .active1,#mermaid-svg-pOdm8Tyl0MVp7hio .active2,#mermaid-svg-pOdm8Tyl0MVp7hio .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-pOdm8Tyl0MVp7hio .activeText0,#mermaid-svg-pOdm8Tyl0MVp7hio .activeText1,#mermaid-svg-pOdm8Tyl0MVp7hio .activeText2,#mermaid-svg-pOdm8Tyl0MVp7hio .activeText3{fill:#000 !important}#mermaid-svg-pOdm8Tyl0MVp7hio .done0,#mermaid-svg-pOdm8Tyl0MVp7hio .done1,#mermaid-svg-pOdm8Tyl0MVp7hio .done2,#mermaid-svg-pOdm8Tyl0MVp7hio .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-pOdm8Tyl0MVp7hio .doneText0,#mermaid-svg-pOdm8Tyl0MVp7hio .doneText1,#mermaid-svg-pOdm8Tyl0MVp7hio .doneText2,#mermaid-svg-pOdm8Tyl0MVp7hio .doneText3{fill:#000 !important}#mermaid-svg-pOdm8Tyl0MVp7hio .crit0,#mermaid-svg-pOdm8Tyl0MVp7hio .crit1,#mermaid-svg-pOdm8Tyl0MVp7hio .crit2,#mermaid-svg-pOdm8Tyl0MVp7hio .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-pOdm8Tyl0MVp7hio .activeCrit0,#mermaid-svg-pOdm8Tyl0MVp7hio .activeCrit1,#mermaid-svg-pOdm8Tyl0MVp7hio .activeCrit2,#mermaid-svg-pOdm8Tyl0MVp7hio .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-pOdm8Tyl0MVp7hio .doneCrit0,#mermaid-svg-pOdm8Tyl0MVp7hio .doneCrit1,#mermaid-svg-pOdm8Tyl0MVp7hio .doneCrit2,#mermaid-svg-pOdm8Tyl0MVp7hio .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-pOdm8Tyl0MVp7hio .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-pOdm8Tyl0MVp7hio .milestoneText{font-style:italic}#mermaid-svg-pOdm8Tyl0MVp7hio .doneCritText0,#mermaid-svg-pOdm8Tyl0MVp7hio .doneCritText1,#mermaid-svg-pOdm8Tyl0MVp7hio .doneCritText2,#mermaid-svg-pOdm8Tyl0MVp7hio .doneCritText3{fill:#000 !important}#mermaid-svg-pOdm8Tyl0MVp7hio .activeCritText0,#mermaid-svg-pOdm8Tyl0MVp7hio .activeCritText1,#mermaid-svg-pOdm8Tyl0MVp7hio .activeCritText2,#mermaid-svg-pOdm8Tyl0MVp7hio .activeCritText3{fill:#000 !important}#mermaid-svg-pOdm8Tyl0MVp7hio .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-pOdm8Tyl0MVp7hio g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-pOdm8Tyl0MVp7hio g.classGroup text .title{font-weight:bolder}#mermaid-svg-pOdm8Tyl0MVp7hio g.clickable{cursor:pointer}#mermaid-svg-pOdm8Tyl0MVp7hio g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-pOdm8Tyl0MVp7hio g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-pOdm8Tyl0MVp7hio .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-pOdm8Tyl0MVp7hio .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-pOdm8Tyl0MVp7hio .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-pOdm8Tyl0MVp7hio .dashed-line{stroke-dasharray:3}#mermaid-svg-pOdm8Tyl0MVp7hio #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-pOdm8Tyl0MVp7hio #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-pOdm8Tyl0MVp7hio #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-pOdm8Tyl0MVp7hio #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-pOdm8Tyl0MVp7hio #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-pOdm8Tyl0MVp7hio #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-pOdm8Tyl0MVp7hio #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-pOdm8Tyl0MVp7hio #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-pOdm8Tyl0MVp7hio .commit-id,#mermaid-svg-pOdm8Tyl0MVp7hio .commit-msg,#mermaid-svg-pOdm8Tyl0MVp7hio .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-pOdm8Tyl0MVp7hio .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-pOdm8Tyl0MVp7hio .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-pOdm8Tyl0MVp7hio g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-pOdm8Tyl0MVp7hio g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-pOdm8Tyl0MVp7hio g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-pOdm8Tyl0MVp7hio g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-pOdm8Tyl0MVp7hio g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-pOdm8Tyl0MVp7hio g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-pOdm8Tyl0MVp7hio .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-pOdm8Tyl0MVp7hio .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-pOdm8Tyl0MVp7hio .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-pOdm8Tyl0MVp7hio .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-pOdm8Tyl0MVp7hio .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-pOdm8Tyl0MVp7hio .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-pOdm8Tyl0MVp7hio .edgeLabel text{fill:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-pOdm8Tyl0MVp7hio .node circle.state-start{fill:black;stroke:black}#mermaid-svg-pOdm8Tyl0MVp7hio .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-pOdm8Tyl0MVp7hio #statediagram-barbEnd{fill:#9370db}#mermaid-svg-pOdm8Tyl0MVp7hio .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-pOdm8Tyl0MVp7hio .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-pOdm8Tyl0MVp7hio .statediagram-state .divider{stroke:#9370db}#mermaid-svg-pOdm8Tyl0MVp7hio .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-pOdm8Tyl0MVp7hio .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-pOdm8Tyl0MVp7hio .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-pOdm8Tyl0MVp7hio .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-pOdm8Tyl0MVp7hio .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-pOdm8Tyl0MVp7hio .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-pOdm8Tyl0MVp7hio .note-edge{stroke-dasharray:5}#mermaid-svg-pOdm8Tyl0MVp7hio .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-pOdm8Tyl0MVp7hio .error-icon{fill:#522}#mermaid-svg-pOdm8Tyl0MVp7hio .error-text{fill:#522;stroke:#522}#mermaid-svg-pOdm8Tyl0MVp7hio .edge-thickness-normal{stroke-width:2px}#mermaid-svg-pOdm8Tyl0MVp7hio .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-pOdm8Tyl0MVp7hio .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-pOdm8Tyl0MVp7hio .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-pOdm8Tyl0MVp7hio .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-pOdm8Tyl0MVp7hio .marker{fill:#333}#mermaid-svg-pOdm8Tyl0MVp7hio .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-pOdm8Tyl0MVp7hio {color: rgba(0, 0, 0, 0.75);font: ;}

指令开始
插入数据
读取映射关系
元素==数值
数值==数值
数值存储到字段
结束

5、集合型:set,一种映射存储方式,以较小的空间存储较多的数据

  • 集合是在定义时确定可能出现的元素进行穷举,而后数据只能出现定义时其中的元素(可以是多个
  • 集合类似一种多选框
  • 集合使用1-8个字节存储数据,最多可以设计64个元素
  • 集合实际存储是使用数值(二进制位),映射对应的元素数据,每个元素对应一个比特位
    • 数据存在:对应位为 1
    • 数据不存在:对应位为 0
  • 集合语法:set(元素1,元素2,...元素N)
  • 使用集合的作用:
    • 规范数据模型
    • 优化存储空间

示例:记录个人的球类爱好,有篮球、足球、羽毛球、网球、乒乓球、排球、台球、冰球

# 爱好可以是多种,并非固定的,但是只能从规定的类型中选择
create table t_17(hobby set('足球','篮球','羽毛球','网球','乒乓球','排球','台球','冰球')
)charset utf8;insert into t_17 values('足球');
insert into t_17 values('冰球,台球,篮球');

集合定义原理:

集合数据 映射位
数据1 00000001
数据2 00000010
数据8 10000000

数据存储(读取反过来):

#mermaid-svg-B9LsSxQjVZngFetJ .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-B9LsSxQjVZngFetJ .label text{fill:#333}#mermaid-svg-B9LsSxQjVZngFetJ .node rect,#mermaid-svg-B9LsSxQjVZngFetJ .node circle,#mermaid-svg-B9LsSxQjVZngFetJ .node ellipse,#mermaid-svg-B9LsSxQjVZngFetJ .node polygon,#mermaid-svg-B9LsSxQjVZngFetJ .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-B9LsSxQjVZngFetJ .node .label{text-align:center;fill:#333}#mermaid-svg-B9LsSxQjVZngFetJ .node.clickable{cursor:pointer}#mermaid-svg-B9LsSxQjVZngFetJ .arrowheadPath{fill:#333}#mermaid-svg-B9LsSxQjVZngFetJ .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-B9LsSxQjVZngFetJ .flowchart-link{stroke:#333;fill:none}#mermaid-svg-B9LsSxQjVZngFetJ .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-B9LsSxQjVZngFetJ .edgeLabel rect{opacity:0.9}#mermaid-svg-B9LsSxQjVZngFetJ .edgeLabel span{color:#333}#mermaid-svg-B9LsSxQjVZngFetJ .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-B9LsSxQjVZngFetJ .cluster text{fill:#333}#mermaid-svg-B9LsSxQjVZngFetJ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-B9LsSxQjVZngFetJ .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-B9LsSxQjVZngFetJ text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-B9LsSxQjVZngFetJ .actor-line{stroke:grey}#mermaid-svg-B9LsSxQjVZngFetJ .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-B9LsSxQjVZngFetJ .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-B9LsSxQjVZngFetJ #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-B9LsSxQjVZngFetJ .sequenceNumber{fill:#fff}#mermaid-svg-B9LsSxQjVZngFetJ #sequencenumber{fill:#333}#mermaid-svg-B9LsSxQjVZngFetJ #crosshead path{fill:#333;stroke:#333}#mermaid-svg-B9LsSxQjVZngFetJ .messageText{fill:#333;stroke:#333}#mermaid-svg-B9LsSxQjVZngFetJ .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-B9LsSxQjVZngFetJ .labelText,#mermaid-svg-B9LsSxQjVZngFetJ .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-B9LsSxQjVZngFetJ .loopText,#mermaid-svg-B9LsSxQjVZngFetJ .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-B9LsSxQjVZngFetJ .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-B9LsSxQjVZngFetJ .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-B9LsSxQjVZngFetJ .noteText,#mermaid-svg-B9LsSxQjVZngFetJ .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-B9LsSxQjVZngFetJ .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-B9LsSxQjVZngFetJ .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-B9LsSxQjVZngFetJ .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-B9LsSxQjVZngFetJ .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-B9LsSxQjVZngFetJ .section{stroke:none;opacity:0.2}#mermaid-svg-B9LsSxQjVZngFetJ .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-B9LsSxQjVZngFetJ .section2{fill:#fff400}#mermaid-svg-B9LsSxQjVZngFetJ .section1,#mermaid-svg-B9LsSxQjVZngFetJ .section3{fill:#fff;opacity:0.2}#mermaid-svg-B9LsSxQjVZngFetJ .sectionTitle0{fill:#333}#mermaid-svg-B9LsSxQjVZngFetJ .sectionTitle1{fill:#333}#mermaid-svg-B9LsSxQjVZngFetJ .sectionTitle2{fill:#333}#mermaid-svg-B9LsSxQjVZngFetJ .sectionTitle3{fill:#333}#mermaid-svg-B9LsSxQjVZngFetJ .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-B9LsSxQjVZngFetJ .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-B9LsSxQjVZngFetJ .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-B9LsSxQjVZngFetJ .grid path{stroke-width:0}#mermaid-svg-B9LsSxQjVZngFetJ .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-B9LsSxQjVZngFetJ .task{stroke-width:2}#mermaid-svg-B9LsSxQjVZngFetJ .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-B9LsSxQjVZngFetJ .taskText:not([font-size]){font-size:11px}#mermaid-svg-B9LsSxQjVZngFetJ .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-B9LsSxQjVZngFetJ .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-B9LsSxQjVZngFetJ .task.clickable{cursor:pointer}#mermaid-svg-B9LsSxQjVZngFetJ .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-B9LsSxQjVZngFetJ .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-B9LsSxQjVZngFetJ .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-B9LsSxQjVZngFetJ .taskText0,#mermaid-svg-B9LsSxQjVZngFetJ .taskText1,#mermaid-svg-B9LsSxQjVZngFetJ .taskText2,#mermaid-svg-B9LsSxQjVZngFetJ .taskText3{fill:#fff}#mermaid-svg-B9LsSxQjVZngFetJ .task0,#mermaid-svg-B9LsSxQjVZngFetJ .task1,#mermaid-svg-B9LsSxQjVZngFetJ .task2,#mermaid-svg-B9LsSxQjVZngFetJ .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-B9LsSxQjVZngFetJ .taskTextOutside0,#mermaid-svg-B9LsSxQjVZngFetJ .taskTextOutside2{fill:#000}#mermaid-svg-B9LsSxQjVZngFetJ .taskTextOutside1,#mermaid-svg-B9LsSxQjVZngFetJ .taskTextOutside3{fill:#000}#mermaid-svg-B9LsSxQjVZngFetJ .active0,#mermaid-svg-B9LsSxQjVZngFetJ .active1,#mermaid-svg-B9LsSxQjVZngFetJ .active2,#mermaid-svg-B9LsSxQjVZngFetJ .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-B9LsSxQjVZngFetJ .activeText0,#mermaid-svg-B9LsSxQjVZngFetJ .activeText1,#mermaid-svg-B9LsSxQjVZngFetJ .activeText2,#mermaid-svg-B9LsSxQjVZngFetJ .activeText3{fill:#000 !important}#mermaid-svg-B9LsSxQjVZngFetJ .done0,#mermaid-svg-B9LsSxQjVZngFetJ .done1,#mermaid-svg-B9LsSxQjVZngFetJ .done2,#mermaid-svg-B9LsSxQjVZngFetJ .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-B9LsSxQjVZngFetJ .doneText0,#mermaid-svg-B9LsSxQjVZngFetJ .doneText1,#mermaid-svg-B9LsSxQjVZngFetJ .doneText2,#mermaid-svg-B9LsSxQjVZngFetJ .doneText3{fill:#000 !important}#mermaid-svg-B9LsSxQjVZngFetJ .crit0,#mermaid-svg-B9LsSxQjVZngFetJ .crit1,#mermaid-svg-B9LsSxQjVZngFetJ .crit2,#mermaid-svg-B9LsSxQjVZngFetJ .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-B9LsSxQjVZngFetJ .activeCrit0,#mermaid-svg-B9LsSxQjVZngFetJ .activeCrit1,#mermaid-svg-B9LsSxQjVZngFetJ .activeCrit2,#mermaid-svg-B9LsSxQjVZngFetJ .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-B9LsSxQjVZngFetJ .doneCrit0,#mermaid-svg-B9LsSxQjVZngFetJ .doneCrit1,#mermaid-svg-B9LsSxQjVZngFetJ .doneCrit2,#mermaid-svg-B9LsSxQjVZngFetJ .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-B9LsSxQjVZngFetJ .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-B9LsSxQjVZngFetJ .milestoneText{font-style:italic}#mermaid-svg-B9LsSxQjVZngFetJ .doneCritText0,#mermaid-svg-B9LsSxQjVZngFetJ .doneCritText1,#mermaid-svg-B9LsSxQjVZngFetJ .doneCritText2,#mermaid-svg-B9LsSxQjVZngFetJ .doneCritText3{fill:#000 !important}#mermaid-svg-B9LsSxQjVZngFetJ .activeCritText0,#mermaid-svg-B9LsSxQjVZngFetJ .activeCritText1,#mermaid-svg-B9LsSxQjVZngFetJ .activeCritText2,#mermaid-svg-B9LsSxQjVZngFetJ .activeCritText3{fill:#000 !important}#mermaid-svg-B9LsSxQjVZngFetJ .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-B9LsSxQjVZngFetJ g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-B9LsSxQjVZngFetJ g.classGroup text .title{font-weight:bolder}#mermaid-svg-B9LsSxQjVZngFetJ g.clickable{cursor:pointer}#mermaid-svg-B9LsSxQjVZngFetJ g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-B9LsSxQjVZngFetJ g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-B9LsSxQjVZngFetJ .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-B9LsSxQjVZngFetJ .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-B9LsSxQjVZngFetJ .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-B9LsSxQjVZngFetJ .dashed-line{stroke-dasharray:3}#mermaid-svg-B9LsSxQjVZngFetJ #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-B9LsSxQjVZngFetJ #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-B9LsSxQjVZngFetJ #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-B9LsSxQjVZngFetJ #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-B9LsSxQjVZngFetJ #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-B9LsSxQjVZngFetJ #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-B9LsSxQjVZngFetJ #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-B9LsSxQjVZngFetJ #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-B9LsSxQjVZngFetJ .commit-id,#mermaid-svg-B9LsSxQjVZngFetJ .commit-msg,#mermaid-svg-B9LsSxQjVZngFetJ .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-B9LsSxQjVZngFetJ .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-B9LsSxQjVZngFetJ .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-B9LsSxQjVZngFetJ g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-B9LsSxQjVZngFetJ g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-B9LsSxQjVZngFetJ g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-B9LsSxQjVZngFetJ g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-B9LsSxQjVZngFetJ g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-B9LsSxQjVZngFetJ g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-B9LsSxQjVZngFetJ .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-B9LsSxQjVZngFetJ .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-B9LsSxQjVZngFetJ .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-B9LsSxQjVZngFetJ .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-B9LsSxQjVZngFetJ .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-B9LsSxQjVZngFetJ .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-B9LsSxQjVZngFetJ .edgeLabel text{fill:#333}#mermaid-svg-B9LsSxQjVZngFetJ .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-B9LsSxQjVZngFetJ .node circle.state-start{fill:black;stroke:black}#mermaid-svg-B9LsSxQjVZngFetJ .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-B9LsSxQjVZngFetJ #statediagram-barbEnd{fill:#9370db}#mermaid-svg-B9LsSxQjVZngFetJ .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-B9LsSxQjVZngFetJ .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-B9LsSxQjVZngFetJ .statediagram-state .divider{stroke:#9370db}#mermaid-svg-B9LsSxQjVZngFetJ .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-B9LsSxQjVZngFetJ .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-B9LsSxQjVZngFetJ .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-B9LsSxQjVZngFetJ .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-B9LsSxQjVZngFetJ .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-B9LsSxQjVZngFetJ .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-B9LsSxQjVZngFetJ .note-edge{stroke-dasharray:5}#mermaid-svg-B9LsSxQjVZngFetJ .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-B9LsSxQjVZngFetJ .error-icon{fill:#522}#mermaid-svg-B9LsSxQjVZngFetJ .error-text{fill:#522;stroke:#522}#mermaid-svg-B9LsSxQjVZngFetJ .edge-thickness-normal{stroke-width:2px}#mermaid-svg-B9LsSxQjVZngFetJ .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-B9LsSxQjVZngFetJ .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-B9LsSxQjVZngFetJ .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-B9LsSxQjVZngFetJ .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-B9LsSxQjVZngFetJ .marker{fill:#333}#mermaid-svg-B9LsSxQjVZngFetJ .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-B9LsSxQjVZngFetJ {color: rgba(0, 0, 0, 0.75);font: ;}

指令开始
插入数据
读取映射关系
元素选中==位值为1
元素未选中==位值为0
转化成十进制存储
结束

时间日期类型(5种)

1、年:year,MySQL中用来存储年份的类型

  • MySQL中使用1个字节存储年份
  • year能够表示的范围是1901-2155年(256年)
    • year的特殊值是:0000
  • year允许用户使用两种方式设计(效果一样)
    • year
    • year(4)
  • 因为year字段表示的范围有限,所以通常会使用字符串来存储(牺牲空间换安全)

示例:记录个人的出生年份

create table t_18(y1 year,y2 year(4)
)charset utf8;
insert into t_18 values(1901,2155);

2、时间戳:timestamp,基于格林威治时间的时间记录

  • MySQL中时间戳表现形式不是秒数,而是年月日时分秒格式

    • YYYY-MM-DD HH:II::SS
    • YYYYMMDDHHIISS
  • timestamp使用4个字节存储
    • 表示范围是 1971年1月1日0时0分0秒-2155年12月31日23是59分59秒
    • timestamp可以使用 0000-00-00 00:00:00
  • 所对应的记录不论哪个字段被更新,该字段都会更新到当前时间
  • 但在MySQL8中需要主动使用on update current_timestamp才会自动更新

示例:记录商品库存的最后更新时间

create table t_19(goods_name varchar(10),goods_inventory int unsigned,change_time timestamp
)charset utf8;insert into t_19 values('Nokia3110',100,'1971-01-01 00:00:00');
insert into t_19 values('Nokia7100',100,'19710101000000');

注意:在MySQL8以后,取消了timestamp的默认自动更新,如果需要使用,需要额外使用属性: on update current_timestamp

alter table t_19 add c_time timestamp on update current_timestamp;update t_19 set goods_inventory = 80;

3、日期:date,用来记录年月日信息

  • 使用3个字节存储数据
  • 存储日期的格式为:YYYY-MM-DD
  • 存储的范围跨度很大,存储区间是1000 - 9999年:1001-01-01~9999-12-31

示例:记录个人生日

create table t_20(name varchar(10),birth date
)charset utf8;insert into t_20 values('Jim','2000-12-12');
insert into t_20 values('Tom','10011212');

4、日期时间:datetime,用来综合存储日期和时间

  • 使用8个字节存储数据
  • 存储格式为:YYYY-MM-DD HH:II:SS
  • 存储区间为:1000-01-01 00:00:00 到9999-12-31 23:59:59

示例:记录个人具体的出生时间

create table t_21(name varchar(10),birth datetime
)charset utf8;insert into t_21 values('Jim','2000-12-12 12:12:12');
insert into t_21 values('Tom','10011212182323');

5、时间:time,用来记录时间或者时间段

  • 使用3个字节存储数据
  • 数据范围是 -838:59:59 - 838:59:59
  • 数据插入的格式分为两种
    • 时间格式:[H]HH:II:SS([ ]表示可以没有)
    • 时间段格式:D HH:II:SS(D表示天)
    • time类型通常被用来做时间段计算:如多少天后的什么时间点(可以理解为过期检查)

示例:记录用户登录的具体时间

# 具体登录时间可以使用时间戳(包含年月日时分秒信息)
# 也可以时间datetime格式,或者date+time双字段格式(具体后面学习范式时会知道该怎么用)
create table t_22(login_time1 int unsigned,login_time2 datetime,login_date date,login_time3 time
)charset utf8;insert into t_22 values(12345678,'2000-12-12 12:12:12','2000-12-12','12:12:12');
insert into t_22 values(1234567,'2000-12-12 12:12:12','2000-12-12','3 12:12:12');

属性

属性:建立在字段类型之后,对字段除类型之外的其他约束

  • 属性是在定义表字段的时候针对每个字段进行属性设定,是MySQL用来增加字段规范和约束
  • 设定好的属性可以通过查看表字段desc进行查看
  • 数据在进行增删改(写)操作时需要在满足字段类型属性的要求
  • 用好属性能够提升数据的有效性,方便未来进行数据操作和数据分析(数据真实性和有效性)

查看表属性:desc 表名;

desc t_1;
# Field:字段名字
# Type:数据类型
# Null:是否为空(属性)
# Key:索引类型(属性)
# Default:默认值(属性)
# Extra:额外属性

NULL属性

NULL:数据是否允许为空

  • Null/Not Null属性 是用来限定数据是否为Null值

  • 默认情况下数据是允许为Null的,不为空设计:Not Null

  • 一般有效的数据都必须设定为Not Null来保证数据的有效性,数据为空一般不具备运算和分析价值

示例:用户信息表:用户名、密码、姓名、年龄、注册时间

create table t_23(username varchar(50) not null,password char(32) not null,name varchar(20),age tinyint unsigned,reg_time int unsigned not null
)charset utf8;

Default属性

默认值:default,在设计表字段的时候给定默认数据,在后续字段操作(数据新增)的时候系统没有检测到字段有数据的时候自动使用的值

  • 默认值在字段设置的时候使用(默认值需要满足数据类型规范)
  • 默认值通常设计的是字段容易出现的数据
    • 一般字段的默认值 默认是Null
  • 默认值触发
    • 在系统进行数据插入时自动检测触发
    • 主动使用default关键字触发默认值

示例:用户开户:银行卡账号、身份证号码、姓名、账户余额

create table t_24(account varchar(19) not null,id_card char(18) not null,name varchar(20) not null,money decimal(16,2) default 0.00 not null
)charset utf8;

主键

主键:primary key,用来保证整张表中对应的字段永远不会出现重复数据(唯一性

  • 主键在一张表中只能有一个
  • 主键的另外一个特性是能够提升主键字段作为查询条件的效率(索引)
  • 主键不能为空:Not Null(默认)
  • 逻辑主键:数据没有具体业务意义,纯粹是一种数值数据
    • 逻辑主键通常是整数:int
    • 逻辑主键目的是方便检索和数据安全(不暴露数据真实信息)
  • 复合主键:多个字段共同组成不能重复的数据
    • primary key(字段1,字段2,…字段N)
    • 联合主键使用不多,一般也不会超过2个字段

示例:银行账户信息:账户、姓名、余额

# 银行账户具有唯一性,不能重复,也不允许为空
create table t_25(account varchar(17) primary key,name varchar(20) not null,money decimal(16,2) not null default 0.00
)charset utf8;# 复合主键
create table t_26(account varchar(17),name varchar(20),money decimal(16,2) not null default 0.00,primary key(account,name)
)charset utf8;# 一般使用逻辑主键
create table t_27(id int unsigned primary key,account varchar(17) not null,name varchar(20) not null,money decimal(16,2) not null default 0.00
)charset utf8;

主键管理:在创建表并且已经有数据后的维护

  • 删除主键
  • 追加主键
  • 修改主键(先删除后新增)

1、删除主键:主键只有一个,所以删除语法也比较特殊

alter table t_26 drop primary key;

2、后期新增主键:如果是针对业务主键需要保证字段数据没有Null数据且没有数据重复(一般主键都会在表创建时维护好)

alter table t_26 add primary key(account,name);

自增长属性

自增长:auto_increment,被修饰的字段在新增时,自动增长数据

  • 自增长只能是整数类型,而且对应的字段必须是一个索引(通常逻辑主键)
  • 一张表只能有一个自动增长
  • 自增长一般是配合逻辑主键实现自动增长
    • 整型字段
    • 存在索引(主键)
  • 自增长数据可以理解为一种默认值,如果主动给值,那么自动增长不会触发
  • 自增长由两个变量控制
    • 初始值:auto_increment_offset,默认是1
    • 步长:auto_increment_increment,默认值也是1
    • 查看自增长控制:show variables like 'auto_increment%';

示例:记录学生信息:学号和姓名

# 学生信息:学号自动增长
create table t_28(id int primary key auto_increment,stu_no int(8) zerofill not null,stu_name varchar(20) not null
)charset utf8;

自增长管理:在某些特殊使用下,需要自增长按照需求实现

  • 修改表中自增长的值:让下次自增长按照指定值开始
  • 修改自增长控制:调整自增长的变化

1、修改表中自增长的值:跳过一些值,直接从下次开始按照新的目标值出现

alter table t_28 auto_increment = 50;

注意:奇数会保留原值,偶数会自动加1(可能出现的情况)

2、修改自增长控制:步长和起始值(修改针对的是整个数据库,而非单张表)

set auto_increment_increment = 2;   # 当前用户当前连接有效(局部)
set @auto_increment_increment = 2;    # 所有用户一直有效(全局)

唯一键

唯一键:unique key,用来维护数据的唯一性

  • 一个表中可以有多个唯一键
  • 唯一键与主键的区别在于 唯一键允许数据为Null(而且Null的数量不限)
  • 唯一键与主键一样,可以提升字段数据当做条件查询的效率(索引)
  • 复合唯一键:多个字段共同组成
    • unique key(字段1,字段2,…字段N)
    • 一般不会出现,最多2个字段组成

示例:学生成绩表:一个学生只能有一个学科成绩,但是可以有多个学科

# 学号和学科编号共同组成唯一
create table t_30(id int primary key auto_increment,stu_name varchar(20) not null,course varchar(20) not null,score decimal(5,2),unique key(stu_name,course)
)charset utf8;insert into t_30 values(null,'Jim','Math',50);
insert into t_30 values(null,'Jim','English',80);

唯一键管理:在表创建后对唯一键的管理

  • 删除唯一键相对麻烦,一张表中不止一个唯一键

  • 新增唯一键要保证字段里的数据具有唯一性

  • 删除唯一键:alter table 表名 drop index 唯一键名字;

  • 新增唯一键: alter table 表名 add unique key(字段列表);

1、删除表中已有的唯一键

alter table t_30 drop index stu_name;

2、追加唯一键

alter table t_30 add unique key stu_course (stu_name,course);

comment属性

描述:comment,是用文字描述字段的作用的

  • comment代表的内容是对字段的描述

    • 方便以后自己了解字段的作用
    • 方便团队了解字段的作用
  • 描述如果涉及到字符集(中文)一定要在创建表之前 设置好客户端字符集(否则会出现描述乱码)

示例:学生成绩表

# 学生成绩表中通常是存储学生学号
# 学科通常也是学科代码
create table t_31(id int primary key auto_increment,stu_no varchar(10) not null comment '学号',course_no varchar(10) not null comment '课程号',score decimal(5,2) comment '考试成绩',unique key stu_course (stu_no,course_no) comment '学号和课程号组成唯一键'
)charset utf8;

数据库记录长度

数据库记录长度:MySQL中规定一条记录所占用的存储长度最长不超过65535个字节

  • 记录长度为表中所有字段预计占用的长度之和
  • 所有字段只有允许Null存在,系统就会预留一个字节存储Null(多个Null也只要一个就好)
  • 因为MySQL记录长度的存在,varchar永远达不到理论长度
    • GBK存储:65535(字符) * 2 + 2 = 131072(字节)
    • UTF8存储:65535(字符) * 3 + 2 = 196607(字节)
  • 一般数据长度超过255个字符都会使用 text/blob 进行存储(数据存储不占用记录长度)

1、GBK表能存储的最大varchar字符串长度

create table t_32(content varchar(65535)
)charset gbk;   # 错误create table t_32(content varchar(32767)
)charset gbk;   # 错误create table t_32(content varchar(32766)
)charset gbk;

2、UTF8表能存储的最大varchar字符串长度

create table t_33(content varchar(65535)
)charset utf8;  # 错误create table t_33(content varchar(21844)
)charset utf8;

3、Null也要占用一个字节

create table t_34(id tinyint,content varchar(21844)
)charset utf8;  # 错误create table t_34(id tinyint not null,content varchar(21844) not null
)charset utf8;

最全 SQL 字段类型(4种)、属性(6种)总结相关推荐

  1. MySQL所有的字段类型,可能是最全的字段类型说明

    MySQL是一种关系型数据库管理系统,它支持多种数据类型,包括整数.浮点数.定点数.字符串.二进制和日期/时间类型.在本文中,我们将列出MySQL中所有的字段类型,并解释每种类型的含义.所占用的字节. ...

  2. Oracle数据库中字符串相关字段类型辨析

    本文来自李明子csdn博客(http://blog.csdn.net/free1985),商业转载请联系博主获得授权,非商业转载请注明出处! 1 引子 字符串类型的字段在各关系数据库中均占有重要地位. ...

  3. 不必Reindex,利用runtime_fields优雅地解决字段类型错误问题

    前言 作为程序员入职一家新公司,当你看到前任程序员写的代码的时候,你是不是经常有这样的感觉:我屮艸芔茻!这代码真他喵的烂! 问题 对于程序员来说,代码水平良莠不齐比较常见的事情,之所以代码质量不高,一 ...

  4. 原 hibernate与mysql字段类型对应关系

    原 hibernate与mysql字段类型对应关系 发表于8个月前(2015-04-17 08:56)   阅读(1102) | 评论(0) 2人收藏此文章, 我要收藏 赞0 1月16日厦门 OSC ...

  5. 转: 利用SQL SERVER2005的XML字段类型实现类似商品扩展属性

    今天自己翻了两页自己的BLOG,发现真是越来越懒了,已经好长时间没有写技术相关的日志了,记得刚开始写BLOG的时候还经常写写自己的技术积累的,现在除了发布ZJ-BLOG的程序更新信息外,好像全成了自己 ...

  6. SQL Server 批量转换指定字段类型为另一种类型

    SQL Server 批量转换指定字段类型为另一种类型存储过程: CREATE PROCEDURE convertFieldType AS DECLARE tb CURSOR FOR SELECT S ...

  7. Gridview数据控件的七种字段类型

    9.8  数据控件的七种字段类型(Fields Type)的应用 GridView共支持七种字段类型,字段原本应该叫"Column"比较恰当,但ASP.NET 2.0却采用另一个名 ...

  8. Access中字段类型及修改字段类型的SQL语句

    Access中字段类型及修改字段类型的SQL语句 Access中的数据类型 Access中有10中数据类型:文本.备注.数值.日期/时间.货币.自动编号.是/否.OLE对象.超级链接.查询向导. 1. ...

  9. SQL SERVER的字段类型说明

    SQL SERVER的字段类型说明 1.SQL SERVER的数据类型 数据类型是数据的一种属性,表示数据所表示信息的类型.任何一种计算机语言都定义了自己的数据类型.当然,不同的程序语言都具有不同的特 ...

最新文章

  1. windows中PyCharm的安装和使用
  2. Spring Integration学习资料
  3. JZOJ 5922. 【NOIP2018模拟10.23】sequence
  4. MySQL的show processlist:正在运行的线程
  5. Vue系列vue-router的动态路由使用(二)
  6. django3数据库设计之商城项目
  7. 除了工作怎么交朋友_老梁:交朋友要交比自己强的,结交和自己相似的人,不如没有朋友...
  8. 引用java8里的方法_Java8中方法引用的使用详解
  9. Linux 相关基础笔记
  10. PHP PDF转图片:设置图像的色彩空间 RGBCMYK互转
  11. 大数据与数据挖掘的基本概念,它们之间的内在联系是什么?
  12. c#调用摄像头进行二维码扫码
  13. 2022最新SCI影响因子TOP100榜单
  14. 萨班斯-奥克斯利法案 (SOX) 特权账号管理
  15. 佐治亚理工计算机科学,佐治亚理工学院计算机科学专业如何?
  16. 人民的名义1-55集全 已看完(观后感)
  17. python爬取微博数据存入数据库_python爬取微博并且存入数据库
  18. ios局部滚动出界解决办法
  19. F: Pond Skater(BFS)
  20. pytorch入门笔记

热门文章

  1. MySql数据库的下载安装及使用教程
  2. MySQL-如何分库分表?一看就懂
  3. 关于微信公众号jsapi支付传值的问题
  4. CSS3动画【归纳总结】
  5. java data_Java Data类
  6. #千锋逆战班,ssf# 在千锋“逆战”学习第 21天, 每个人生阶段都需要努力去扮好自己的角色,越努力越轻松,越坚强越幸运! 加油
  7. linux内核运行在实模式还是,Linux内核分析方法谈
  8. 调用WebService 实现在线双向翻译
  9. 网易极客战记-KITHGARD地牢--真正的挑战 (需解锁)
  10. ERROR:can’t read “File Watch(fileName)”:no such element in array