列的数据类型
整型
类型 | 取值范围 |
---|---|
tinyint | -128 - 127 |
smallint | -32768 - 32767(几万) |
mediumint | -8388608 - 8388607(几百万) |
integer | -2147484468 - 2147483647(几十亿) |
bigint | -9223372036854775808 - 9223372036854775807(天文数字) |
小数类型
decimal[精度,小数位数]
小数位数是定数;数值是什么就是什么,不会进行类似于四舍五入,不会存储近似值。
浮点类型
float[长度,小数位数]
double[长度,小数位数]
float的小数位数不是固定的;超出存储范围,近似值进行存储。
小结:
- decimal用来存精确值、定数。
- float存储可以四舍五入的。
位类型
bit[(长度)]
场景:
字符串类型
- char 0-255
- varchar 0-65535 (长度指的是字符的长度。最常用varchar)
- long varchar:2^24-1
- longtext:4G个字符
日期类型
- date 3字节
- datetime 8字节
- time 3字节
- timestamp 4字节
- year[(2) | (4)] 1字节
二进制大对象类型
- binary: 255个字符
- varbinary :65535个字符
- blob: 65535字符 ,比如存储照片
- long varbinary: 2的24次方减1个字符
- long blob: 2的32次方-1个字符
数字列上的列选项
- unsigned:无符号的,表示只允许正数。
- zerofill:填充0
- auto_increment:自动增长。只适应于整数类型。一个表中只有一个列可以是自动增长的。
临时表
临时表是一张表,用来临时保存一些数据。它只对创建它的用户可见。当会话结束时,MySQL自动删除临时表。
保存这些数据的时候,尽量少的占用资源,删除数据的时候,尽量少的占用资源。
临时表的核心:建立和删除表以及里面的数据时,消耗资源非常小。
例:创建临时表sumpenalties,保存所有罚款的总和。
CREATE TEMPORARY TABLE sumpenalties(
total DECIMAL(10,2)
);
CTAS举例
if not exit :强制不显示出错消息。
根据已有的表创建新表
结构一样。
create table copy_teams LIKE teams;(空表,不带数据)
create table copy_teams_1 AS select * from teams;(带数据)
--》PS:这个SELECT可以非常非常的复杂