mysql 数据类型 查询_MySQL数据类型

一. 数据类型介绍

表内存放的数据要有不同的类型,每种数据类型都要自己的宽度,而且宽度是可以选择的.

二. mysql常用数据类型 :

1. 数字

①. 整型 : tinyint  int  bigint

②. 小数 :

float : 在位数比较短的情况下不精准

double : 在位数比较长的情况下不精准

decimal : 任何为数都精准  //内部是以字符串形式去存储, 推荐使用

2. 字符串

①. char : 简单粗暴, 浪费空间, 存取速度快

②. varchar : 精准, 节省空间, 存取速度慢

③. sql优化 : 创建表时, 定长的类型往前放, 变长的类型往后放

④. 数据>255个字符时, 就把文件的路径放到数据库中.

3. 时间类型

①. datetime

4. 枚举类型和集合类型

①. enum  枚举, 多个选项选择一个

②. set  集合, 多选

三. 数值类型

※ . 紧跟数值类型后面的数字是显示宽度, 而不是存储宽度. 默认的显示宽度是在最大值的基础上 + 1 .

※ . 无符号参数 : unsigned

※ .  不足规定显示宽度是使用0补位 : zerofill

1. tinyint [ n ] [ undigned ] [ zerofill ]

①. 小整数, 数据类型用于保存一些范围的整数数值范围 :

②. 有符号取值范围 :    即带负号, 允许有负数

-128 ~ 127

③. 无符号取值范围 :    即不带负号,不允许有负数

0 ~ 255

2. int

①. 整数, 数据类型用于保存一些范围的整数数值范围 :

②. 有符号取值范围 :    即带负号, 允许有负数

-2147483648 ~ 2147483647

③. 无符号取值范围 :    即不带负号,不允许有负数

0 ~ 4294967295

3. bigint

①. 整数, 数据类型用于保存一些范围的整数数值范围 :

②. 有符号取值范围 :    即带负号, 允许有负数

-9223372036854775808 ~ 9223372036854775807

③. 无符号取值范围 :    即不带负号,不允许有负数

0 ~ 18446744073709551615

4. float [ (M, D) ] [ unsigned ] [ zerofill ]

①. 单精度浮点数(非准确小数值),M的全长,最大值为255,D是小数点后的位数,最大值为30.

②. 有符号取值范围 :    即带负号, 允许有负数

-3.402823466E+38 ~ 1.175494351E-38,

1.175494351E-38 ~ 3.402823466E+38

③. 无符号取值范围 :    即不带负号,不允许有负数

1.175494351E-38 ~ 3.402823466E+38

④. 精准度随着小数位数的增加而越来越不准确.

5. double [ (M, D) ] [ unsigned ] [ zerofill ]

①. 双精度浮点数(非准确小数值),M的全长,最大值为255,D是小数点后的位数,最大值为30.

②. 有符号取值范围 :    即带负号, 允许有负数

-1.7976931348623157E+308 ~ 2.2250738585072014,

2.2250738585072014E-308 ~ 1.7976931348623157E+308

③. 无符号取值范围 :    即不带负号,不允许有负数

2.2250738585072014E-308 ~ 1.7976931348623157E+308

④. 精准度随着小数位数的增加而越来越不准确. 但是精度比float要高.

6. decimal [ M, D ] [ undigned ] [ zerofill ]

①. 准确的小数值, M为整数部分的总个数(负号不算),最大值为65.D是小数点后的位数,最大值为30.

②. 无论小数有多少位, 精度始终准确.

四. 日期类型

1. date   年月日的形式

取值范围 : YYYY-MM-DD (1000-01-01 ~ 9999-12-31)

2. time  时分秒的形式

取值范围 : HH:MM:SS ("-838:59:59" ~ "-838:59:59")

3. datetime  年月日 时分秒的形式

取值范围 : YYYY-MM-DD HH:MM:SS (1000-01-01 00:00:00 ~ 9999-12-13 23:59:59)

4. year  年形式

取值范围 : YYYY (1901~ 2155)

5. timestamp  年月日时分秒形式

取值范围 : YYYYMMDD HHMMSS (1970-01-01 00:00:00~2037)

五. 字符类型

※ . char和varchar类型后括号内的参数是指字符的长度

1. char类型 : 定长,简单粗暴,浪费空间,存取速度块

字符长度范围 : 0 ~ 255 (一个中文是一个字符,是utf8编码的3个字节)

存储char类型的值时,如果插入的值字符数小于指定字符数,会在插入字符右侧填充空格满足长度.

37d05a5dd0fc80930b2060adeae4a058.png

查询表时,查出的结果会自动删除尾部的空格,如果不想将空格删除需要对mysql设置模式 : set sql_mode = " PAD_CHAR_TO_FULL_LENGTH ";

389d069a6bacb9b49c05f61a65e985f6.png

查询mysql的默认查询模式命令 : select @@sql_mode;

a0ad27ac4026ddff9291ca4e73c33804.png

2. varchar类型 : 变长,精准,节省空间,存取速度慢

字符长度范围 : 0 ~ 65535(如果大于21845会提示用其他类型. mysql行最大限制为65535字节,字符编码为utf8);

varchar类型的存储数据为真实的数据,不会使用空格填充. 如果存储的数据中含有空格,空格也会被保存在表内

varchar类型会在真实数据前加1~2字节的前缀,该前缀用来表示真实数据的字节数,(1~2字节最大表示65535个字节,正好满足mysql对一行的最大字节数)

如果真实的数据<255字节则需要1字节的前缀(1字节 = 8bit  2**8最大表时数字为255)

如果真实的数据>255字节则需要2字节的前缀(2字节 = 16bit  2**16最大表示数字为65535)

3. 查询某一数据的字节或字符数

字节数 : length()

6a86d7f52b0c8fc7d2205b312e0e7acd.png

字符数 : char_length()

87166df9b6c0d18d48a4a62318752ea2.png

六. 枚举和集合类型

一个字段的值只能在给定的范围内选择

enum 单选 在给定的一个范围内选择一个值, 如 : 性别等

如果单选字段值插入了多个或不是给定范围内的值,会忽略

set 多选 在给定的范围内选择多个, 如 : 爱好等

如果set字段值插入了超出范围的的值,会报错.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值