文章目录
一、整型、非整形
1.整型
int、INT
tinyint<smallint<int<bigint (90%)
2.浮点型
(有精度损失的小数)
float<double
带精度的小数
decimal,numeric
3.字符串类型、二进制数据
3.1char vs varchar
char(4)长度为4个字符(不是字节)的数据类型,定长
varchar(4)最多长度为4个字符(不是字节)的数据类型,变长
典型使用char场景:身份证(有字符且定长)、性别(男、女)
剩余场景使用varchar更合适
varchar(有上限)
字符串更长的情况:text smalltext < text <longtext
字符串单引号和双引号都可以
一片文章 ,标题:varchar,正文:text
二进制数据(图片、声音)
3.2二进制数据类型
blob(Binary Large Object)较大的二进制对象
blob < longblob
3.时间类型
date 日期 年月日
time 时间 时分秒
datetime 日期+时间 年于日时分秒
timestamp 时间戳:约等于datetime 年月日时分秒
优点:占用空间较小
缺点:1970.1.1 ~2036-12-31
凡是涉及到时间,都有一个很重要的概念:时区(timezone)
我们的时区:东+8时区、北京时间 “Asia/Shanghai”
数据中表示时间,用一定格式的字符产区表现时间,严格按照该格式去写
“2021-11-20 10:07:18”
重点掌握: int/varchar/blob/date/time/datetime
二、约束(constraint)
用来约定该字段(列)数据的范围,支持哪些数据,不支持那些数据
PK Primary 主键
关系型数据库要求:对于一张表,必须有主键
主键,一条记录的唯一标识,不能重复
通过主见,一定可以确定唯一一条记录
*(抽象成一条记录时),标准意义上,身份证是pk
以银行卡为例,卡号是其pk
实际中还会存在一些复合主键,用过几个字字段的联合,来唯一确定一条记录
实操中,建议主键(pk)使用整形(int、bigint)
配合AI(自动增长)来使用,不会重复
NN :Not Null 勾选上不能为Null,反之,不勾选,允许为NULL
UQ UniQue 唯一的,不能重复
B Binary 二进制显示方式
UN Unisigned 无符号
ZF ZeroFill 用0填充显示
AI Auto Increment 自增
dfault、express该字段的默认值
Comment 该字段的描述
三、关于数据库中null的理解
一条记录中的某个字段为null,一般代表该字段不可知,不可记录
允许nnull&&没有设定default,default就是null
允许null&&设定了default,以设定的default为准
不允许null&&设定了default,以设定的default为准
不允许null&&没有设定default时,没有默认值。