mysql chr函数_Mysql数据库(二):详细,对新手非常友好

数据类型和运算符

Mysql数据类型介绍

Mysql支持多种数据类型,主要有数值类型、日期/时间类型和字符串类型

数值数据类型:包括证书类型TINYINT/SMALLINT/MEDIUMINT/INT/BIGINT,浮点小数数据类型FLOAT和DOUBLE,定点小数类型DECIMAL.

日期/时间类型:包括YEAR、Time、DATE、DATETIME和TIMESTAMP

字符串类型:包括CHAR/VARCHAR/BINARY/VARBINARY/BLOBTEXT/ENUM和SET

整数类型

提供的整数类型有:TINYINT/SMALLINT/MEDIUMINT/INT/BIGINT。整数类型的属性字段可以添加AUTO_INCREMENT自增约束条件。

类型名称

说明

存储需求

TINYINT

很小的整数

一个字节

SMALLINT

小的整数

2个字节

MEDIUMINT

中等大小的整数

3个字节

INT

普通大小的整数

4个字节

BIGINT

大整数

8个字节

不同整数类型的取值范围

数据类型

有符号

无符号

TINYINT

-128~127

0-255

SMALLINT

-32768~32768

0~65535

MEDIUMINT

-8388608~8388607

0~16777215

INT

-2147483648~2147483647

0~4294967295

BIGINT

-92233772036854775808~9223372036854775807

0~1844674407379551615

先来看一张表:

CREATE TABLE tb_emp1(

-> id INT(11),

-> name VARCHAR(25),

-> deptId INT(11),

-> salary FLOAT);

0ed55570f56e62eddd6be0a042f13515.png

id字段的数据类型为INT(11),后面的数字11,表示的是它的宽度是11位

再来看一个字段:age INT(4),该声明指出在age字段中数据一般显示4位数字的宽度

创建表tmp2,字段有A、B、C、D、E,数据类型依次为TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT

mysql> CREATE TABLE tb_emp2(

-> A TINYINT,

-> B SMALLINT,

-> C MEDIUMINT,

-> D INT,

-> E BIGINT);

279541ddda5c4ec276a9af6ec9450a8f.png

执行成功后,使用DESC查看表的结构;

015aea4fd7a5c86b52f071129f9aacbf.png

可以看到,系统将添加不同的默认显示宽度。

浮点数类型和定点数类型

Mysql中使用浮点数和定点数来表示小数。浮点类型有四种:单精度浮点类型(FLOAT)和双精度浮点类型(DOUBLE).定点类型只有一种:DECIMAL.浮点类型和定点类型都可以用(M,N)来表示,其中M为宽度,N为标度,是小数的位数。

类型名称

说明

存储需求

FLOAT

单精度浮点数

4个字节

DOUBLE

双精度浮点数

8个字节

DECIMAL(M,D),DESC

压缩的“严格”定点数

M+2个字节

DECIMAL类型不同于FLOAT和DOUBLE,DECIMAL实际以串存放的,DECIMAL可能的最大取值范围与DOUBLE一样,但其有效的取值范围由M和D的值决定。

FLOAT类型的取值范围如下:

有符号:-3.402823466E+38~-1.175494351E-38

无符号:0和1.175494351E-38~3.402823466E+38-

DOUBLE类型的取值范围如下:

有符号:-1.7976931348623157E+308~2.2250738585072014E-308

无符号:0和2.2250738585072014E-308~1.7976931348623157E+308

1.创建一张表tb_emp3:

8087de8693d1e564c217c992a0da2272.png

向表中添加数据:

8e872a6dcd952a3c316c257f295d9e4e.png

60be80a06e6e5f19c701c633c6c8a262.png

日期与时间类型

Mysql中有多种表示日期的数据类型,主要有DATETIME、DATE、TIMESTAMP、TIME和YEAR。例如,当只记录年信息的时候,用YEAR类型,而没有必要使用DATE.每一个类型都有合法的取值范围,当指定确定不合法的值系统将“零“值插入到数据库中。

日期类型

存储空间

日期格式

日期范围

datetime

8 bytes

YYYY-MM-DD HH:MM:SS

1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

timestamp

4 bytes

YYYY-MM-DD HH:MM:SS

1970-01-01 00:00:01 ~ 2038

date

3 bytes

YYYY-MM-DD

1000-01-01 ~ 9999-12-31

year

1 bytes

YYYY

1901 ~ 2155

YEAR类型

MySQL以YYYY格式检索和显示YEAR值。范围是1901到2155。

可以指定各种格式的YEAR值:

四位字符串,范围为’1901’到’2155’。

四位数字,范围为1901到2155。

两位字符串,范围为’00’到’99’。'00’到’69’和’70’到’99’范围的值被转换为2000到2069和1970到1999范围的YEAR值。

两位整数,范围为1到99。1到69和70到99范围的值被转换为2001到2069和1970到1999范围的YEAR值。请注意两位整数范围与两位字符串范围稍有不同,因为你不能直接将零指定为数字并将它解释为2000。你必须将它指定为一个字符串’0’或’00’或它被解释为0000。

函数返回的结果,其值适合YEAR上下文,例如NOW()。

非法YEAR值被转换为0000。

创建一张表,定义数据类型为YEAR的字段:

CREATE TABLE tb_emp4(y year);

468bbf8bcdddf7124b75012f22750a85.png

向表中插入数据:INSERT INTO tb_emp4 values (‘2020’);

90afd06eb80209ac0127c87976b6e546.png

2 TIME类型

MySQL以’HH:MM:SS’格式检索和显示TIME值(或对于大的小时值采用’HHH:MM:SS’格式)。TIME值的范围可以从’-838:59:59’到’838:59:59’。小时部分会因此大的原因是TIME类型不仅可以用于表示一天的时间(必须小于24小时),还可能为某个事件过去的时间或两个事件之间的时间间隔(可以大于24小时,或者甚至为负)。

格式说明:

'D HH:MM:SS.fraction’格式的字符串。还可以使用下面任何一种“非严格”语法:‘HH:MM:SS.fraction’、‘HH:MM:SS’、‘HH:MM’、‘D HH:MM:SS’、‘D HH:MM’、‘D HH’或’SS’。这里D表示日,可以取0到34之间的值。请注意MySQL还不保存分数。

‘HHMMSS’格式的没有间割符的字符串,假定是有意义的时间。例如,‘101112’被理解为’10:11:12’,但’109712’是不合法的(它有一个没有意义的分钟部分),将变为’00:00:00’。

HHMMSS格式的数值,假定是有意义的时间。例如,101112被理解为’10:11:12’。下面格式也可以理解:SS、MMSS、HHMMSS、HHMMSS.fraction。请注意MySQL还不保存分数。

函数返回的结果,其值适合TIME上下文,例如CURRENT_TIME。

超出TIME范围但合法的值被裁为范围最接近的端点。例如,’-850:00:00’和’850:00:00’被转换为’-838:59:59’和’838:59:59’。

创建表:CREATE TABLE tb_emp5(t TIME);

a89864b9bff0b12f7eab6df680a070ba.png

向表中插入数据:INSERT INTO tb_emp5 values (“10:05:04”),(“10:05:03”),(“10:05:02”);

513bb5f2b17cb00f75d36d9bd20099e8.png

select*from tb_emp5;

3b71d72aea3d32ade893c20f1422e0a4.png

3 DATA类型

此类型的字段,存储数据格式为:YYYY-MM-DD,它支持的范围为’1000-01-01’到’9999-12-31’。

首先创建表:CREATE tb_emp6;

c65d06a11bd58353815f2b198b594723.png

向表中添加数据:INSERT INTO tb_emp6 values (‘2020-08-29’),(‘2020-08-30’),(‘2020-08-31’);

99f5be161c3aa0bb1835cdd14aadc073.png

b6b67ccea28b3351c2cb627ebbac32e1.png

4 DATATIME类型

日期和时间的组合,存储格式为:YYYY-MM-DD HH:MM:SS,它支持的范围为’1000-01-01 00:00:00’到’9999-12-31 23:59:59’

首先创建一张表:CRETAE TABLE tb_emp7(dt DATETIME);

4ea58d09d9eea73dd82b872b2d748134.png

向表中插入数据:INSERT INTO tb_emp7 values (‘2020-08-25 01:01:01’),(‘2020-08-25 02:02:02’), (‘2020-08-25 03:03:03’);

456e1d937903a9600f28dcd8b6576f2c.png

5.TIMESTAMP

在MySQL上述三个大版本中,默认时间戳(Timestamp)类型的取值范围为’1970-01-01 00:00:01’ UTC 至’2038-01-19 03:14:07’ UTC,数据精确到秒级别,该取值范围包含约22亿个数值,因此在MySQL内部使用4个字节INT类型来存放时间戳数据:

在存储时间戳数据时,先将本地时区时间转换为UTC时区时间,再将UTC时区时间转- - 换为INT格式的毫秒值(使用UNIX_TIMESTAMP函数),然后存放到数据库中。

在读取时间戳数据时,先将INT格式的毫秒值转换为UTC时区时间(使用FROM_UNIXTIME函数),然后再转换为本地时区时间,最后返回给客户端。

先来创建一张表:CREATE TABLE tb_emp8(ts TIMESTAMP);

3a46ab3368caa637dfdce32a3471618c.png

向表中插入数据:INSERT INTO tb_emp8 VALUES (‘20200808080808’),(‘950505050505’),(‘20200808090909’),(now());

e9debad7a6f238a3b0abe0d1778afdac.png

8be6004b717daeddf619b1a3bb70ab60.png

下篇继续:

回顾上一篇,请看这里:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值