前言 ´・ᴗ・`
- 本篇内容将会帮助你学习几乎所有数据库用到的数据类型 并告诉你哪些常用 哪些看看就好
几个基本数据类型
注意varchar(5) 指的是5个字符 不是字节!!事实上一般都是字符 字节也只有我们之前的LENGTH()函数(这么反人类 )
代码 | 解释 |
---|---|
int | 整形 |
double float | 浮点型 |
char | 固定长度的字符串 |
varchar | 可变长度的字符串 |
text | 较长的字符串 |
date | 日期 |
time | 时间 |
timestamp | 时间戳 |
我们归纳一下…
- 字符串型
- 短字符串
- 可变 varchar(n)
n: 1~65535
节省空间
CPU性能耗损大(要计算)
适合字符体积变化很大的场合 - 固定 char(n)
n:1~255
节约CPU性能
空间浪费
适合固定长度的场合
- 可变 varchar(n)
- 长字符串
- blob 音频 图片 视频
- text 长字段(博文比如)
- 短字符串
- 数值型
- 整数 INT
- 小数
- 浮点数 double
- 定点数 decimal
用于精确度稳定的场合 比如钱
- 日期型
- 时间戳 timestamp
受时区影响 - 时间 datetime
不受时区影响 - date 日期
- time 具体时间时分秒
- 时间戳 timestamp
- 枚举型 ENUM
时间戳 vs datetime
我们可以创一个表格 一列是时间戳 一个是datetime
CREATE TABLE table1(
t1 DATETIME,
t2 TIMESTAMP
);
然后 INSERT INTO table1 VALUES(NOW(),NOW());
table1 就是那刚刚创立的表格
然后 我们利用SET time_zone='+10:00'
更改我们的时区为东10区
我们是东八区 不信的话你就:
SHOW VARIABLES LIKE 'time_zone';
枚举型 ENUM
ENUM enumerate
我们可以限定数据 比如限定有线的情况 性别 男 女:
CREATE TABLE table1(c1 ENUM('男','女'))
整形
其实常用的就是INT(n) n指的是字符 n位数也就是
下面是其他整形类型的大小:
如果insert的数据超过这个范围 就是报out of range 错误
名称 | 字节数 | 最大范围 |
---|---|---|
Tinyint | 1 | 2^8 |
Smallint | 2 | 2^8*2 |
Mediumint | 3 | 2^8*3 |
Int/integar | 4 | 2^8*4 |
Bigint | 8 | 2^8*8 |
另外提一下两个关键字:
-
UNSIGNED 就是无符号 一般默认是有符号的
无符号 就是数据大小拓展一倍(原来两倍)
为啥是两倍?没有符号位嘛 -
ZEROFILL 也就是 filled with zeros 让0填充空位 比如123 -> 00000123 当INT(8)
浮点数 定点数
浮点数 顾名思义 小数点浮动的数值 比如从123.4 -> 123.400 然而定点数就只能是123.4 你加上0.01 还是123.4
这就是钱 特别适合定点数——都是000.00的形式 小数位数固定
详细来说 涉及 计算机组成原理 操作系统
计算机中的数除了整数之外,还有小数。如何确定小数点的位置呢?通常有两种方法:
一种是规定小数点位置固定不变,称为定点数。
另一种是小数点的位置不固定,可以浮动,称为浮点数。
- 通常用定点数来表示整数和纯小数,分别称为定点整数和定点小数。
- 对于既有整数部分、又有小数部分的数,一般用浮点数表示。
为啥?方便计算啊!
能用定点数 当然定点CPU计算更少
不能用定点 那就出大招——浮点运算
定点数运算:
如果同样的小数点位置 直接相加就好了
但是不同小数点位置呢?
浮点数计算可以解决 定点数计算 记录小数点位置的大问题
所以一般 我们实际使用 就用定点纯小数 定点整数 运算方便
不是纯小数或者整数的 就浮点解决
总结 ´◡`
这一节在上一节的基础上 深入讲了讲数据类型 其实用的时候看一下就行 不需要记忆 只需要记住常用的:)
下一站我们来学习另一种修饰列属性的方法——约束
下一站:数据库学习之MySQL (二十五)—— DDL(三)约束 - 列级约束 表级约束 语法
- 本文专栏
MySQL专栏 - 我的其他专栏 希望能够帮到你 ( •̀ ω •́ )✧
- 手把手带你学后端(服务端)
- python这么火 想要深入学习python 玩一下简单的应用嘛?
python应用
- 谢谢大佬支持! 萌新有礼了:)