【韩顺平老师讲MySQL】数据类型详解
文章目录
- P12.列类型有哪些?
- P13.列类型之整型和浮点型
- P14.位类型
- P15.小数类型
- P16.17.字符串类型
- P18.日期类型
- P19.创建表的练习
P12.列类型有哪些?
MySQL中常用的数据类型就是MySQL的列类型,整体来看:
类型虽然有很多,但是常用的就只有这么几个:[哪些是重要的]
- 整型:int
- 小数类型:double decimal
- 文本类型:char varchar text
- 日期类型:datetime,timestamp
P13.列类型之整型和浮点型
常用的是int
类型选择基本规则:在满足需求的情况下,尽量选择占用空间小的类型
打开表查询插入结果:(只能插入-128)
CREATE TABLE t3 (
id TINYINT);# 无符号的
CREATE TABLE t3 (
id TINYINT UNSIGNED);# 有符号的
P14.位类型
# 添加数据
说明:
- bit字段显示的时候,按照位的方式显示
- 查询的时候,依然可以用使用 添加的数值来查询
- 如果某一个值只有0和1,可以考虑用bit(1),节约空间
- 位类型,M指定位数,默认为1,范围1-64
- 使用不多
P15.小数类型
常用的是double和decimal
这里重点讲decimal:
decimal可以支持更加精确的小数位
M是小数位数(精度)的总和,D是小数点(标度)后面的位数
如果D是0,则值没有小数点和分数部分,可以看成整型里的数据类型
M最大是65,D最大是30
没写的话,M默认为10,D默认是0
建议:如果希望小数的精度高,推荐使用decimal
P16.17.字符串类型
字符串的基本使用:
char(size) size的范围是0-255,也就是mysql中只能最大写char(255)
固定长度字符串,最大255字符
varchar(size) size范围0-65535字节,在utf8中对应21844字符(字符*3=字节),也就是mysql中只能最大写varchar(21844)
可变长度字符串 最大65532字节(utf8字符集编码最大21844字符,1-3个字节用于记录大小)
注释快捷键:
char(4) 4代表的是字符(而不是字节)(对应多少个字节取决于你用的字符集—-比如utf8字符集中:字符*3=字节)
但是varchar 的65535是字节,等于21844个字符
无论中文还是英文,都最多只能放4个字符
不区分中文还是英文
也就是说:如果char(4)中的4我如果放的都是中文,就是4个字符,对应4*3个字节(一个中文–一个字符就是三个字节)
如果我放的都是英文,也是4个字符,对应的却是4个字节(一个英文字母–字符就是一个字节)
关于定长和可变:
char(4)是定长,1就是说,即使你插入‘aa’,也会占用分配的4个字符的空间,这是一次性开辟的空间,像一个不可伸缩的盒子
varchar(4)是可变的,就是或,如果你插入‘aa’,实际占用的是实际占用的空间,而不是4个字符,是实时分配的,像一个可以伸缩的盒子.(但是老韩说明:varchar本身还需要占用1-3个字节来记录存放内容的长度信息,1-3是因为实际数据大小的长度信息不一定的)
关于什么时候用char?什么时候用varchar?
可能你以为varchar已经很完美了,a.范围大 b.可变长度,节约空间
但是实际上char既然存在就有自己的道理:
选择依据:
- 如果数据是定长的话,推荐使用char,比如md5的密码,邮编,手机号,身份证号,查询速度:char>varchar
- 如果一个字段的产犊不确定,我们使用varchar,比如留言,文章
P18.日期类型
主要讲timestamp:
-- 如果希望login_time自动更新,需要配置信息TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
CREATE TABLE t12 (
看到这里,你是不是看到上面的login_time的时间我没有插入信息,但是他自动记录了插入这条记录时的时间.这就是timestamp的用法.(ps:注意时间信息的插入都要带单引号,并且注意格式—::::😃 YYYY-MM-DD HH:mm:ss
P19.创建表的练习
题目: