(01)建表的过程实际上是 声明字段 的过程
一. 列类型(字段):
存储同样的数据时,不同的列类型,所占据的空间和效率是不一样的,这就是建表时要考虑的意义。
二.MySQL三大列类型
数值型
整型
tinyint
占据空间:1个字节
存储范围:0 - 255, -128 - 127
smallint
占据空间:2个字节
储存范围:-32768 - 32768, 0 - 65535
int
占据空间:4个字节
储存范围:-2147483648 - 2147483647
0 - 4294967295
(02)先建立一张表
添加一条记录
age的范围在(-128 - 127)
增加一列
可以看出加入unsigned后, 表示为无符号类型, 范围在(0 - 255)之间
二. 小数型:
float(小数的总位数,小数点右边的位数)(浮点型)
例:float(6,2)表示:9999.99
定点型:decimal()
把整数部分和小数部分分开存储,比float精确
但float有时会有损精度
https://blog.csdn.net/lingmao555/article/details/48391763
中有具体讲解:
字符型
char型
char(6) 定长字符串
char 和 varchar 分别为定长型和变长型
char 优点:查询速度快
缺点:耗费内存
varchar 优点:耗费内存少
缺点:查询速度相对慢
char 与 varchar 的区别
可以看出varchar右侧有一个空格
说明了char类型,如果不够M个字符,内部用空格补齐。取出时把右侧空格删除,如果右侧有空格会自动删除
Text型: 文本类型,可以储存大的文本段,但搜索速度慢
(不需加默认值)
blob 为二进制类型,用来储存图像,音频等二进制信息
意义:二进制 0-255都有可能出现
比如一张图片有0xFF字节,在ascII表中认为非法,在入库时,被过滤了
时间类型
date类型
date 存储范围 1000-01-01 —— 9999-12-31
time类型 (范围:-838:59:59 —— 838:59:59)
datetime类型(储存范围: '1000-01-01 00:00:00 ——9999-12-31 23:59:59')
储存形式 YYYY-mm-dd HH:ii::ss