【MYSQL】数据类型

文章目录

  • TINYINT
  • BIT
  • FLOAT
  • DECIMAL
  • CHAR
  • VARCHAR
  • 日期和时间类型
  • ENUM 和 SET

TINYINT

数值类型:
TINYINT:1字节
SMALLINT:2字节
MEDIUINT:3字节
INT:4字节
BIGINT:8字节

数据范围:默认有符号,-128~127 超出这个范围的数据不会被存入表内。若要设置无符号,在属性后面加上unsigned。

由于这种特性,数据类型本身就是一种约束!

BIT

BIT(M)
可以指定 M 位数,M最大是64.

位类型显示的时候按照ASCII码值的方式,可能显示不出来,可以转成十进制来查看.

FLOAT

语法:

FLOAT [(m,d)] [unsigned] : m指定显示长度,d指定小数位数,占用空间4个字节

其中,小数部分必须是d位!若超过d位,则采取四舍五入的方式存取数据(在合法范围内 ).

float在数据过大的时候,有一些明显精度损失.

DECIMAL

decimal 和 float 很像,但表示的精度不同,decimal 精度的准确性要比float更好.使用浮点数的时候,若希望有较高精度,建议使用decimal

CHAR

语法:
char(L) : 固定长度L的字符串,L最大为255,单位是字符.

char类型的字符,和语言内的字符概念不一样,mysql中的字符就是一种符号,一个汉字也是一个字符.

VARCHAR

语法:

varchar(L) : 变长的字符串.最多存65535个字节,其中有1~3个字节来记录数据大小(动态调整)

在utf8编码中,L最大是21844;而在gbk编码下就是 (655-3)/2 .MySQL里一行也有字节大小上限!

日期和时间类型

date: 日期 'yyyy-mm-dd',占用三个字节

datetime : 时间日期格式 'yyyy-mm-dd HH:II:SS' 表示范围从1000~9999,占用8字节

timestamp : 时间戳(自动变化),占用四字节.

date:生日等不需要具体时间的日期.
datetime:主要是用于固定的时间.
timestamp:主要用于可能更新的时间.

ENUM 和 SET

语法:

enum('选项1','选项2','选项3',...);

set('选项1','选项2','选项3',...);

enum 只是提供了若干个选项的值,最终的单元格里只存储了选项中的一个,出于效率考虑,实际存储的是数字,这些选项的每个值对应1,2,3,4,…65535,所以当我们添加枚举的时候,也可以插入数字.

set 只是提供了若干个选项的值,最终的单元格里只存储了选项中的一个,出于效率考虑,实际存储的是数字,这些选项的每个值对应1,2,4,8,…64(位图,不是下标!!).

enum 和 set 不建议插入数字,不方便阅读.

集合查询

//函数
find_in_set(sub,str_list)

//说明
如果sub在sub_list中,返回下标;不在返回0.
sub是单个选项,str_list是用逗号分开的字符串.
若要筛选多个选项,可在查询语句使用and连接多个查询函数.

你可能感兴趣的:(MySQL探索之旅,mysql,数据库)