数据库中数据类型和约束(整数类型、浮点数类型、字符类型、日期类型、二进制数据类型)

        数据库中的数据保存在数据表中,在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,比如:数据类型和约束。

        数据类型和约束保证了表中数据的准确性和完整性。

1、数据类型

        数据类型是指在创建表的时候为表中字段指定数据类型,只有数据符合类型要求才能存储起来,使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。

常用数据类型如下:

  • 整数:int,bit   【bit字节,只能是0和1】
  • 小数:decimal
  • 字符串:varchar,char
  • 日期时间: date, time, datetime
  • 枚举类型(enum)    【比如性别:只能选男或女】

数据类型说明:

  • decimal表示浮点数,如 decimal(5, 2) 表示共存5位数,小数占 2 位.
  • char表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为' ab ',3表示字符数
  • varchar表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab',3表示字符数
  • 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径.
  • 字符串 text 表示存储大文本,当字符大于 4000 时推荐使用, 比如技术博客.

2、数据约束

        约束是指数据在数据类型限定的基础上额外增加的要求.

常见的约束如下:

  • 主键 primary key: 物理上存储的顺序. MySQL 建议所有表的主键字段都叫 id, 类型为 int unsigned.
  • 非空 not null: 此字段不允许填写空值.
  • 惟一 unique: 此字段的值不允许重复.
  • 默认 default: 当不填写字段对应的值会使用默认值,如果填写时以填写为准.
  • 外键 foreign key: 对关系字段进行约束, 当为关系字段填写值时, 会到关联的表中查询此值是否存在, 如果存在则填写成功, 如果不存在则填写失败并抛出异常.

【id一般是主键,主键是标识数据记录,  通过id可以区分不同记录数据   , id是主键,是唯一的, 不能重复,   外键就是使用某个表中的主键数据,可以根据外键进行连表查询】

3、数据类型附录表

3.1 整数类型

类型字节大小有符号范围(Signed)无符号范围(Unsigned)
TINYINT(m)1-128 ~ 1270 ~ 255
SMALLINT(m)2-32768 ~ 327670 ~ 65535
MEDIUMINT(m)3-8388608 ~ 83886070 ~ 16777215
INT/INTEGER(m)4-2147483648 ~21474836470 ~ 4294967295
BIGINT(m)8-9223372036854775808 ~ 92233720368547758070 ~ 18446744073709551615

数值类型中的长度 m 是指显示长度,并不表示存储长度,只有字段指定 zerofill 时有用。

例如: int(3) ,如果实际值是 2 ,如果列指定了 zerofill ,查询结果就是 002 ,左边用 0 来 填充。 

3.2 浮点数类型

MySQL 数据类型
含义
float(m,d)
单精度浮点型 8 位精度 (4 字节 ) m 总个数, d 小数位
double(m,d)
双精度浮点型 16 位精度 (8 字节 ) m 总个数, d 小数位

3.3 字符类型

类型说明使用场景
CHAR(n)固定长度,小型数据,最多255个字符身份证号、手机号、电话、密码
tinytext
可变长度,最多 255 个字符
VARCHAR(n)可变长度,小型数据,最多65535个字符姓名、地址、品牌、型号
TEXT可变长度,最多65535个字符存储小型文章或者新闻
mediumtext
可变长度,最多 2 24 次方 -1 个字符
LONGTEXT可变长度, 极大型文本数据,最多232次方-1个字符

存储极大型文本数据

 char和varchar:

  • char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定长。
  • varchar可变长度,可以设置最大长度;适合用在长度可变的属性。
  • text不设置长度, 当不知道属性的最大长度时,适合用text。

按照查询速度: char最快, varchar次之,text最慢。

字符串型使用建议:

  • 经常变化的字段用varchar
  • 知道固定长度的用char
  • 尽量用varchar
  • 超过255字符的只能用varchar或者text
  • 能用varchar的地方不用text

3.4 日期类型

类型字节大小含义示例
DATE4
日期 YYYY-MM-DD
'2020-01-01'
TIME3
时间 HH:MM:SS
'12:29:59'
DATETIME8
日期时间 YYYY-MM-DD HH:MM:SS
'2020-01-01 12:29:59'
YEAR1'2017'
TIMESTAMP4
时间戳 YYYYMMDD HHMMSS
'1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC

3.5 二进制数据类型

  •  BLOB和TEXT存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob是以二进制方式存储,不分大小写。
  • BLOB存储的数据只能整体读出。
  • TEXT可以指定字符集,BLOB不用指定字符集。
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值