一 数据类型
讲解'主要'的数据类型,不面面俱到,后续'遇到具体问题'再'查询'补充
扩展: 知识点的'深度和广度'以工作为'导向'
① int float
M : 表示'显示宽度',M的取值范围是(0, 255)
例如: int(5),当数据宽度'小于5位'的时候在数字前面需要用'字符填满'宽度
说明:
1、整型数据类型可以在'定义表结构时'指定所需要的'显示'宽度
2、如果'不指定',则系统为每一种类型指定'默'认的宽度值
最佳实践: 整数数据类型'不推荐'使用显示宽度属性
char(n) 固定长度,最多255个字符 --> 2^8
varchar(n) 固定长度,最多65535个字符 --> 2^16
+++++++++++++++++ char和varchar的'区别' +++++++++++++++++
1.char(n) "尾部空格"
[1]、若'实际'存入字符数'小于n',则以'空格'补于其后,查询之时再将'空格'去掉
[2]、所以char类型存储的字符串'末尾不能有空格',varchar不限于此。
2.char(n) '固定'长度
[1]、char(4)不管是存入几个字符,都将'占用'4个字节 --> '定长'
备注: 使用'uuid'作为主键,'那用char'
[2]、varchar是存入的'实际字符数+1'个字节(n<=255)'或'2个字节(n>255) --> '不定长'
备注: varchar多'占'一个字节是字符的'长度'
说明:所以varchar(4),'存入3个字符'将占用4个字节。
3.char类型的字符串'检索速度'要比varchar类型的快 --> '查找效率'
③ 日期、时间、时间戳
插入时间、更新时间、删除时间、下单时间、入职时间、离职时间
'重点'掌握:DATE、DATETIME、TIMESTAMP
二 关键字和约束
掌握: 关键字的'含义'和在创table语句中的'位置'
① COMMENT
说明: '字段'或列的'注释'是用属性 'comment' 来添加,目的是为了增强'可读性'
查看'已有表'的'所有字段的注释': show full columns from comment_ceshi;
/*
表的注释: 了解即可
*/
create table comment_tale(
field_name int comment '字段的注释'
)comment='表的注释';
查看'表'的注释: show create table comment_table;
② NOT NULL 非空约束
1、限定某个'字段/某列'的'值'不允许为空
备注: 空字符串''不等于NULL,0也'不等于'NULL
重点: 查询NULL值,必须使用'IS NULL'
③ UNIQUE 唯一约束
用来'限制'某个'字段/某列'的值'不能重复'
通俗: UNIQUE 约束可以'防止'两条记录在'某个字段'上出现'重复值'
特点:
1、同一个表可以有'多个'唯一约束
2、唯一约束可以是'某一个列的值唯一',也可以'多个列组合'的值唯一
3、唯一性约束允许'列值为空'
4、在创建唯一约束的时候,如果'不给'唯一约束命名,就'默认和列名'相同
细节:MySQL会给'唯一约束的列'上'默认'创建一个'唯一索引'
/*
定义表的唯一约束 '多列联合'
*/
CREATE TABLE Employees (
employee_name CHAR(50) NOT NULL,
social_num INTEGER,
phone INTEGER,
UNIQUE (employee_name, social_num)
// 使用CONSTRAINT语法定义唯一约束(可指定约束名)
// CONSTRAINT name_num UNIQUE (employee_name, social_num)
);
④ PRIMARY KEY 主键约束
说明: 用来'唯一标识'表中的'一行'记录
特点:
1、主键约束相当于'唯一约束+非空约束'的组合,主键约束列'不允许重复',也'不允许'出现'空值'
2、一个表'最多只能 only '有一个主键约束
3、主键约束对应着表中的'一列或者多列'
4、如果是'多列组合的复合主键约束',那么这些列'都不允许'为空值,并且'组合的值'不允许重复
5、当创建'主键约束'时,系统'默认'会在所在的列或列组合上'建立'对应的'主键索引'
⑤ AUTO_INCREMENT 自增长约束
说明: 某个字段的值'自增'
特点:
1、一个表最多'只能有一个'自增长列
2、当需要产生'唯一标识符或顺序值'时,可设置自增长
3、自增长列约束的'列'必须是'键列(主键列,唯一键列)'
4、自增约束的列的数据类型必须是'整数'类型
默认'等价':IDENTITY(1,1)
set @@global.auto_increment_offset =1;
set @@auto_increment_offset =1
⑥ DEFAULT 默认值约束
说明: 给某个'字段/某列'指定'默认值'
效果: 一旦设置默认值,在'插入数据'时,如果此字段'没有显式赋值',则赋值为'默认值'
细节: 默认值约束一般'不在唯一键'和'主键'列上加
⑦ FOREIGN KEY 外键
限定'某个表'的'某个字段'的'引用完整性'
特点:
1、'从表'的'外键列',必须'引用/参考'主表的主键'或'唯一约束的列
2、在创建'外键约束'时,如果'不'给外键'约束命名',默认名'不是列名',而是'自动'产生一个外键名
例如: student_ibfk_1,也可以指定'外键约束名' --> "推荐"
3、创建'CREATE'表时就指定外键约束的话,先创建'主'表,再创建'从'表
4、删表时,先删'从表'或'先删除外键约束',再删除主表
5、从表的外键列与主表被参照的列名字可以'不相同',但是'数据类型必须一样',逻辑意义一致
6、在'从表'中指定外键约束,并且一个表可以建立多个外键约束
7、当创建'外键约束'时,系统默认会在'所在的列上'建立对应的'普通'索引
特点: '索引名'是外键的约束名,删除外键约束后,必须'手动删除'对应的索引
说明: 关于该'外键约束',到'级联查询'的时候才讲解
⑧ 遗留
set 一些变量 --> 变量的含义?
正则、glob
创建表的深入探讨
sql 语句 和'交互式'工具 --> navicat