MySQL的学习入门三

一、MySQL数据类型

MySQL中的数据类型是强类型。

1.1 数值型

1、整型

整型占用字节数范围
整型占用字节数范围
tinyint1-128 ~ 127(-2^7 ~ 2^8 - 1
smallint2-32768 ~ 32767(-2^15 ~ 2^16 - 1
mediumint3-8388608 ~ 8388607(-2^23 ~ 2^24 - 1
int4-2147483648 ~ 2147483647(-2^31 ~ 2^32 - 1
bigint8-9223372036854775808 ~ 92233720368547758087(-2^63 ~ 2^64 - 1

例,一个班级的学生数,我们可以直接使用tinyint,因为正常不超过127,我们就尽可能范围设置小。范围越小占用资源越少。
在这里插入图片描述

2、无符号整型
无符号整型(unsigned )就是没有负数,无符号整数是整数的两倍。例:
在这里插入图片描述
我们修改表字段属性,改为无符号整型,可以看到可以存储原来整型的两倍。
可以看到表中tinyint(3)那么这个3是什么意思呢,其实是这个整型支持最小显示宽度,如果位数不足用0填充。显示宽度默认不起作用,例:
在这里插入图片描述
那可以明显的看到这边位数不足3,可是也没有0填充,那是必须结合zerofill才起作用:
在这里插入图片描述

1.2 浮点型

浮点型占用字节数范围
float (单精度型)4-3.4E + 38 ~ 3.4E+38
double (双精度型)8-1.8E + 308 ~ 1.8E + 308

1、浮点型的声明:float(M, D), double(M, D)

M: 总位数 D: 小数位数
在这里插入图片描述

如果不指定小数位数,float (单精度型) 默认是小数点后面6位,double (双精度型) 默认是小数点后面17位,

2、小数(定点数)
原理,将整数和小数部分分开存储。
语法: decimal(M, D)
例:
在这里插入图片描述

1.3 字符型

在数据库中没有字符串的概念,只有字符。

数据类型描述
char定长字符
varchar可变长度字符
tinytext2^8-1 = 255
text2^16 - 1 = 65535
mediumtext2^24 - 1
longtext2^32 - 1

char和varchar的区别:

  1. char(4) 给你四个空间,你存了一个空间,还是占用四个空间,char最长不超过255。
  2. varchar(4) 如果存2个空间,那么会回收2个空间,varchar理论上最长65536,但实际上达不到,因为有的字符是多字节字符。char(4)和varchar(4)都不能超过4。例:

在utf8编码下,一个字节占用3个字符:
在这里插入图片描述
在gbk编码下,一个字节占用2个字符:
在这里插入图片描述
一个表记录的所有字段的总长度不能超过65535个字节,text数据类型不受此限制。

1.4 枚举类型(enum)

从集合中只能选择一个值作为数据。
例:
在这里插入图片描述
可以看到约束数据。只能选择其中的一种。

枚举型是通过整型数字来管理的,从1开始,依次加1递增。例:
在这里插入图片描述

1.5 集合类型(set)

从集合中可以选择多个值作为数据。
在这里插入图片描述
插入的顺序不一样,但是显示的顺序按原来设置集合的顺序。

那么可以试试如果插入的值不在范围内:
在这里插入图片描述
可以发现报错了。
集合和枚举一样都是给每个元素分配一个固定的值,分配规则:从前往后以2的0,1,2,3,4,…次方。
例:
在这里插入图片描述
可以发现:

PHPJAVAVue
124

所以加起来就是7。

1.6 日期类型

数据类型描述
datetime日期时间,占8个字节 (YYYY-MM-DD hh:mm:ss)范围(1000-01-01 00:00:00 ~ 9999-12-31 23:59:59)
date日期占用3个字节 (YYYY-MM-DD)
time时间占用3个字节
year年份占用1个字节
timestamp时间戳,占用4个字节
  1. datetime和date
    datetime格式:( YYYY-MM-DD hh:mm:ss )
    年·月·日 小时:分钟:秒。date格式:(YYYY-MM-DD)在这里插入图片描述

  2. timestamp(时间戳)
    datetime类型和timestamp类型表现上是一样的,他们的区别在于:
    datetime从1000到9999,而timestamp从1970年~2038(timestamp占用4个字节,和整型的范围一样,2038年01月19日11:14:07以后的描述就超过了4个字节的长度)
    在这里插入图片描述

  3. year
    只能表示1901~2155之间的年份,因为只占用1个字节,只能表示255个数
    在这里插入图片描述

  4. time
    表示时间,也可以表示时间间隔,范围是: -838:59:59 ~ 838:59:59
    在这里插入图片描述
    time支持以天的方式来表示时间间隔:
    在这里插入图片描述

1.7 布尔型

MySQL不支持布尔型,但是true和false在数据库中对应的是1和0。
在这里插入图片描述

1.8 练习题

  1. 电话号码一般使用什么数据类型存储?
    varchar,数字类不进行计算的一般用varchar
  2. 手机号码用什么数据类型?
    char,定长
  3. 性别一般使用什么数据类型存储?
    char, tinyint,enum都可以
  4. 人的年龄信息一般使用什么数据类型?
    tinyint
  5. 照片信息一般使用什么数据类型存储?
    binary,不过我们在实际中一般存储照片的地址,varchar。
  6. 薪水一般使用什么数据类型存储?
    decimal

二、MySQL列属性

2.1 是否为空

null 表示字段值可以为空
not null 表示字段不能为空

2.2 默认值(default)

如果一个字段没有插入值,可以默认设置一个指定值。
在这里插入图片描述

2.3 自动增长(auto_increment)

字段值从1开始,每次递增1,自动增长的值就不会有重复,适合用来生成唯一的id,在MySQL中只要是自动增长列必须是主键。

在这里插入图片描述在这里插入图片描述

2.4 主键(primary key)

主键:唯一标识表中的记录的一个或一组列称为主键。
主键的特点:主键不能为空,不能重复,一个表只能有一个主键。
作用:

  1. 保证数据的完整性。
  2. 加快查询的速度。

选择主键的原则
最少性:尽量选择单个建作为主键。
稳定性:尽量选择数值更新少的列作为主键。
添加主键:
在这里插入图片描述
删除主键:
在这里插入图片描述
添加主键数据:
在这里插入图片描述
当主键重复会报错,当设置的主键为auto_increment写入null后会自动增长,每次加1。
需要注意的是,当我们删除一个字段后,重新再添加一个字段,那么这个id会在原来被删除的主键上加1,例:
在这里插入图片描述
如果是truncate删除的话,那么重新插入数据,主键会从1开始:
在这里插入图片描述

2.5 唯一键(unique)

唯一键:

  1. 不能重复,可以为空。
  2. 一个表可以有多个唯一键。
    例:
    在这里插入图片描述
    添加唯一键的写法和添加主键的写法一样,只不过 primary key 改为unique。例:
    在这里插入图片描述
    删除唯一键,由于唯一键可能有多个,所以不能想主键那样直接去删除,是通过唯一键的名字去删除唯一键。
    语法 show create table 表名\G 查看唯一键名字:
    在这里插入图片描述
    然后通过 alter table 表名 drop index 唯一键名字;
    在这里插入图片描述

2.6 备注(comment)

给每个字段,一个说明性文本。
在这里插入图片描述
在这里插入图片描述

在学习的MySQL的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你华还是你华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值