mysql 数据类型 及 查看表结构

mysql 数据类型 及 查看表结构

  • 一.数据类型
    • 1、整型
    • 2、浮点型(float和double)
    • 3、定点数(decimal)
    • 4、字符串(char,varchar,_text)
    • 5.二进制数据(_Blob)
    • 6.日期时间类型
    • 数据类型的属性
  • 二.查看表中字段数据类型
    • 1.以查询结果展示
    • 2.以sql语句展示(展示建表语句)

一.数据类型

1、整型

MySQL数据类型 含义(有符号) (无符号)
tinyint(m) 1个字节 范围(-128 ~ 127)(0 ~ 255)
smallint(m) 2个字节 范围(-32768 ~ 32767)(0 ~ 65535)
mediumint(m) 3个字节 范围(-8388608 ~ 8388607)(0 ~ 16777215)
int(m) 4个字节 范围(-2147483648 ~ 2147483647)(0 ~ 4294967295)
bigint(m) 8个字节 范围(±9.22*10的18次方)

取值范围如果加了unsigned(id tinyint unsigned),则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。
int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围。如int(5),等设置使用0填充时(clue_id int(5) unsigned zerofill NOT NULL DEFAULT '00000' COMMENT '车源号'),当数据位数小于5位如111则会前面补位展示成00111,当数据位数大于5位时如100000,则直接原样展示为100000.

设置数据类型为boolean布尔型时,在数据库中实际的存储形式为tinyint(1)

2、浮点型(float和double)

MySQL数据类型 含义
float(m,d) 单精度浮点型 8位精度(4字节) m代表总个数,d代表小数位
double(m,d) 双精度浮点型 16位精度(8字节) m代表总个数,d代表小数位

设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。

3、定点数(decimal)

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
decimal(m,d) 参数m<65 是总个数,d<30且 d

4、字符串(char,varchar,_text)

MySQL数据类型 含义
char(n) 固定长度,最多255个字符
varchar(n) 可变长度,最多65535个字符
tinytext 可变长度,最多255个字符
blob 二进制形式
tinytext 可变长度,最多255个字符(28 - 1)
text 可变长度,最多65535个字符(216 - 1)
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符

char和varchar比较:
1.char(n) 若存入字符数小于n,则以空格填充于其后以达到指定的长度,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255)[这个字节用于保存实际使用了多大的长度,当列声明的长度超过255则使用两个字节],所以varchar(4),存入3个字符将占用4个字节。 (因为 VARCHAR 类型可以根据实际内容动态改变存储值的长度,所以在不能确定字段需要多少字符时使用 VARCHAR 类型可以大大地节约磁盘空间、提高存储效率。)
3.char类型的字符串检索速度要比varchar类型的快。
4.长于指示器的值都会被裁短

varchar和text:
1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。
2.text类型不能有默认值。
3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

5.二进制数据(_Blob)

1._BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。
2._BLOB存储的数据只能整体读出。
3._TEXT可以指定字符集,_BLO不用指定字符集。

BLOB 是一个二进制大对象,可以容纳可变数量的数据。
有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储的最大长度不同:
①TinyBlob类型 最大能容纳255B的数据
②Blob类型 最大能容纳65KB的
③MediumBlob类型 最大能容纳16MB的数据
④LongBlob类型 最大能容纳4GB的数据

6.日期时间类型

MySQL数据类型 含义
date 日期 ‘2008-12-2’
time 时间 ‘12:25:36’
datetime 日期时间 ‘2008-12-2 22:06:44’
timestamp 自动存储记录修改时间

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。
新建表时,可增加下面两行,用于记录创建时间和更新时间。
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间'

TIMESTAMP(3)与 DATETIME(3)意思是保留3为毫秒数
TIMESTAMP(6)与 DATETIME(6)意思是保留6为微秒数
官方文档:https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html
MySQL 5.6.4 and up expands fractional seconds support for TIME, DATETIME, and TIMESTAMP values, with up to microseconds (6 digits) precision

https://www.yiibai.com/mysql/datetime.html
默认情况下,DATETIME的值范围为1000-01-01 00:00:00至9999-12-31 23:59:59。
DATETIME值使用5个字节进行存储。另外,DATETIME值可以包括格式为YYYY-MM-DD HH:MM:SS [.fraction]例如:2017-12-20 10:01:00.999999的尾数有小数秒。 当包含小数秒精度时,DATETIME值需要更多存储,如下表所示:

分数秒精度 存储(字节)
0 0
1,2 1
3,4 2
5,6 3

例如,2017-12-20 10:01:00.999999需要8个字节,2015-12-20 10:01:00需要5个字节,3个字节为.999999,而2017-12-20 10:01:00.9只需要6个字节,小数秒精度为1字节。

数据类型的属性

MySQL关键字 含义
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 主键
AUTO_INCREMENT 自动递增,适用于整数类型
UNSIGNED 无符号
CHARACTER SET name 指定一个字符集


二.查看表中字段数据类型

https://blog.csdn.net/god_wen/article/details/79271032

1.以查询结果展示

desc 表名;
show columns from 表名;
describe 表名;
命令执行结果如下:
mysql 数据类型 及 查看表结构_第1张图片

2.以sql语句展示(展示建表语句)

show create table 表名;
命令执行结果如下:
在这里插入图片描述

你可能感兴趣的:(mysql,mysql,数据类型)