MySQL基础--数据类型和运算符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunshuo1231/article/details/79633821

数据类型和运算符

  1. 1.常见的数据类型介绍

整数类型

Mysql提供的主要整数类型有:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,并且可以添加AUTO_INCREMENT自增约束条件。

类型名称 说明 存储需求
TINYINT 很小的整数 1字节
SMALLINT 小整数 2字节
MEDIUMINT 中等大小的整数 3字节
INT 普通大小的整数 4字节
BIGINT 大整数 8字节
CREATE TABLE tb_emp1 ( id INT (11), NAME VARCHAR (25), deptId INT (11), salary FLOAT);

如上建表语句,其中id INT(11),表示该数据类型指定的显示宽度。

显示范围和数据类型的取值范围无关,显示范围是指明mysql最大显示数字的个数,如果位数小于指定的宽度,由空格填补,如果大于指定的显示宽度,只要在取值范围之内,用select语句查询出来的数据也是可以完全显示出来的。如果在建表时不指定宽度,系统会默认给出显示宽度。

浮点数类型和定点数类型

浮点数和定点数类型表示小数。其中,浮点数类型包含单精度浮点数FLOAT和双精度浮点数DOUBLE,定点数类型只有一种DECIMAL。浮点数和定点数都可以用(M,N)表示,其中M表示的总共的位数,N表示的是小数的位数。

数据类型 说明 存储需求
FLAOT 单精度浮点数 4字节
DOUBLE 双精度浮点数 8字节
DECIMAL 压缩的严格的定点数 M+2字节

无论是定点类型还是浮点类型,如果超出精度范围,都会被四舍五入处理。

比如:

CREATE TABLE tb_tmp2 ( x FLOAT(5,1), y FLOAT(5,1), z FLOAT(5,1)); INSERT INTO tb_tmp2 VALUES(5.12, 5.15, 5.123); SELECT * FROM tb_tmp2;

最后的查询结果:

如果在建表时不指定精度,则会按照默认的精度存储,由计算机的硬件和操作系统决定,DECIMAL默认为(10,1)。

在MYSQL中,DECIMAL是以字符串的形式存储的,对于精度比较高的,比如货币,科学数据,使用DECIMAL是最佳的选择。浮点数在进行加减和比较运算时容易造成问题,需要注意。

日期与时间类型

在mysql中表示日期和时间的类型主要有:DATETIME,DATE,TIMESTAMP,TIME和YEAR。

数据类型 日期格式 存储需求
YEAR YYYY 1字节
TIME HH:MM:SS 3字节
DATE YYYY-MM-DD 3字节
DATETIME YYYY-MM-DD HH:MM:SS 8字节
TIMESTAMP YYYY-MM-DD HH:MM:SS 4字节

YEAR:

1)4为字符串或者4位数字表示,范围:1901~2155,输入格式为'YYYY'或者YYYY。

2)以两位字符串表示YEAR,范围为'00'~'99',其中,'00'~'69'被转换为2000~2069,'70'~'99'转换为1970~1999。'0'和'00'的作用相同,超过取值范围的值被抓换成2000。

3)以两位数字表示的YEAR,范围为1~99,其中1~69转换成2001~2069,70~99被转换为1970~1999.。注意的是0会被转换成0000,而不是2000 。

CREATE TABLE tb_tmp3 ( y YEAR);INSERT INTO tb_tmp3 VALUES(2018),('2108');SELECT * FROM tb_tmp3;

结果为:

如果插入:

INSERT INTO tb_tmp3 VALUES(2166);

会报错:

[SQL]INSERT INTO tb_tmp3 VALUES(2166);[Err] 1264 - Out of range value for column 'y' at row 1

向表中插入两位数据的字符串

INSERT INTO tb_tmp3 VALUES('0'),('00'),('77'),('10'); SELECT * FROM tb_tmp3;

结果为:

向表中插入两位数字表示的YEAR:

INSERT INTO tb_tmp3 VALUES(00),(78),(11); SELECT * FROM tb_tmp3;

结果为:


未完待续

猜你喜欢

转载自blog.csdn.net/sunshuo1231/article/details/79633821