【mysql】mysql中的数据类型知多少?

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【mysql】mysql中的数据类型知多少?

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

MySQL数据类型

mysql主要包括以下五大类:

整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT

浮点数类型:FLOAT、DOUBLE、DECIMAL

字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB

日期类型:Date、DateTime、TimeStamp、Time、Year

其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等。

整形

INT                                 整形                         4个字节    有符号范围(-21亿 ~ 21亿左右)  无符号(0~42亿) 大整型值
TINYINT                             一个非常小的整数       1个字节    有符号范围(-128~127) 无符号(0~255) unsigned   小整型值
SMALLINT                            一个小整数
MEDIUMINT                           一个中间大小的整数
INT or INTEGER                      一个正常大小的整数
BIGINT                              一个大的整数


FLOAT                               一个小的 (单精度) 浮点数,不能是无符号的那种
DOUBLE, DOUBLE PRECISION, REAL     一个正常大小 (双精度) 的浮点数,不能使无符号的那种

DECIMAL

DECIMAL, NUMERIC decimal无论写入数据中的数据是多少,都不会存在精度丢失问题,这就是我们要引入decimal类型的原因, decimal类型常见于银行系统、互联网金融系统等对小数点后的数字比较敏感的系统中

小数位超过长度时,四舍五入

整数位超过长度时,报错

flo五入

float 小数位默认保留5位,double 小数位默认保留16位,decimal 默认保留整数,四舍五入

create table t5(f1 float , f2 double , f3 decimal);

insert into t5 values(1.7777777777777777777777777,1.7777777777777777777777777,1.7777777777777777777777777);

decimal 默认是10位总长度,不保留小数,保留整数,存在四舍五入

insert into t4 values(1.7,1.7,1.7); error 整数位最多保留2位 , 小数位最多保留3位;存在四舍五入

可以少,但不能多

date

DATE                             一个日期
DATETIME                         一个日期和时间的组合
TIMESTAMP                         一个时间戳
TIME                             一个时间
YEAR                             一个用两位或者4位数字格式表示的年份(默认是4位)


date  YYYY-MM-DD 年月日 (节假日,纪念日)
time  HH:MM:SS   时分秒 (体育竞赛,记录时间)
year  YYYY       年份   (历史,酒的年份)
datetime  YYYY-MM-DD HH:MM:SS  年月日 时分秒 (上线时间,下单时间)
create table t1(d date, t time , y year , dt datetime);
insert into t1 values("2020-11-3","9:19:30","2020","2020-11-3 9:19:30");
insert into t1 values(now(),now(),now(),now());

create table t2(dt datetime , ts timestamp);
insert into t2 values(20201103092530 , 20201103092530);
insert into t2 values(null,null); # 区别 timestamp 自动更新时间(以当前时间戳) datetime没有   MySQL8.0 timestamp插入null也不会更新当前时间,也是空
insert into t2 values(20390102101010 , 20390102101010); error # 超越2038 

可见,timestamp插入null时,插入的真是null

两者都允许为空,默认值也都为空

select current_timestamp; 获取当前时间戳,相当于now();

Timestamp和datetime的异同

相同点:

1.可自动更新和初始化,默认显示格式相同YYYY-MM-dd HH:mm:ss

不同点:

2. timestamp的时间范围是:‘1970-01-01 00:00:01’ UTC to ‘2038-01-19 03:14:07’ UTC ,自动时区转化,实际存储毫秒数,4字节存储

3. datetime的时间范围:‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’ ,不支持时区,8字节存储

char

CHAR 一个固定长度的字符串,存储时总是在其固定长度的空间里右对齐 255个 创建时,指定长度,默认设为1

超过长度插入不进去

varchar

VARCHAR 一个可变长度的字符串 0 - 21844个字符,创建时必须指定字符长度,不然创建失败

字符串 char(字符长度) varchar(字符长度)

char(11) 定长:固定开辟11个字符长度的空间(手机号,身份证号),开辟空间的速度上来说比较快,从数据结构上来说,需谨慎,可能存在空间浪费. max = 255

varchar(11) 变长:动态最多开辟11个字符长度的空间(评论,广告),开辟空间的速度上来说相对慢,从数据结构上来说,推荐使用,不存在空间浪费 max > 255

text 文本类型:针对于文章,论文,小说. max > varchar

create table t7(c char(11), v varchar(11) , t text);

insert into t7 values(“11111”,“11111”,“11111”);

insert into t7 values(“你好啊你好啊你好啊你好”,“你好啊你好啊你好啊你好”,“你好啊你好啊你好啊你好”);

concat

可以把各个字段拼接在一起

使用语法:

字段与要拼接的描述之间要有逗号,描述文字要加引号

select concat(‘描述文字’,字段,‘描述文字’,字段) from 表;

select concat(c,"<=>",v,"<=>",t) from t7;

TINYBLOB

TINYBLOB, TINYTEXT 一个BLOB或者TEXT列,最大长度255 (2^8 - 1)个字符

BLOB, TEXT 一个BLOB或者TEXT列,最大长度 65535 (2^16 - 1)个字符

MEDIUMBLOB, MEDIUMTEXT             一个BLOB或者TEXT列,最大长度 16777215 (2^24 - 1)个字符
LONGBLOB, LONGTEXT                 一个BLOB或者TEXT列,最大长度4294967295 (2^32 - 1) 个字符
ENUM                             一个枚举类型
SET                                 一个集合

show processlist 能看到所有库以及用户正在执行的sql

数据库内部方法

select user() #查看当前用户

select concat() #把各字段拼接起来

select database() #查看当前所用数据库

select now() #查看当前系统时间

枚举和集合

enum 枚举 : 从列出来的数据当中选一个 (性别)

set 集合 : 从列出来的数据当中选多个 (爱好) 可以去重

create table t8( 
id int , 
name varchar(10) ,
sex enum("男性","兽性","人妖") , 
money float(5,3) , 
hobby set("吃肉","抽烟","喝酒","打麻将","嫖赌")  
);


正常写法

insert into t8(id,name,sex , money , hobby) values(1,"张保障","兽性",2.6,"打麻将,吃肉,嫖赌");

插入集合的方法:是在一个字符串下,用逗号隔开

自动去重

insert into t8(id,name,sex , money , hobby) values(1,"张保障","兽性",2.6,"打麻将,吃肉,嫖赌,嫖赌,嫖赌,嫖赌,嫖赌,嫖赌");


异常写法 : 枚举和集合类型,不能选择除了列出来的数据之外的其他值 error 报错

insert into t8(id,name,sex , money , hobby) values(1,"张保障","人妖12",2.6,"打麻将,吃肉,嫖赌12");


2.png

超过设计的数据类型范围,不让插入



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL 数据库
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
33 5
|
1月前
|
存储 关系型数据库 MySQL
MySQL支持多种数据类型
MySQL支持多种数据类型
90 3
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据类型详解及实例应用
MySQL数据类型详解及实例应用
|
1月前
|
存储 关系型数据库 MySQL
什么是mysql的数据类型?
什么是mysql的数据类型?
44 2
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据类型
MySQL数据类型
50 2
|
5月前
|
存储 关系型数据库 MySQL
MySQL数据库的数据类型、语法和高级查询
MySQL数据库的数据类型、语法和高级查询
66 0
|
6月前
|
SQL 存储 关系型数据库
RDS for MySQL的SQL分类与数据类型
小明需在MySQL中管理商品信息,使用SQL完成业务操作。SQL分为DQL(查询)、DML(增删改)、DDL(定义)、DCL(权限控制)和TCL(事务)五大类。DDL用于创建、修改和删除数据库结构,DML处理数据,DCL控制权限,TCL管理事务,DQL则用于查询数据。MySQL有多种数据类型,如数值型(整数、小数)、日期型和字符串型等,选择合适的数据类型是高效开发的关键。
64 0
|
3月前
|
关系型数据库 MySQL Linux
数据类型和运算符(MySQL服务器的安装,MySQL客户端,数据类型,运算符,MySQL的语法规范)
无论是对于初学者还是有经验的开发者,了解MySQL的安装、客户端使用、数据类型、运算符和语法规范都是至关重要的。这不仅有助于高效地管理和查询数据,而且对于设计和实现数据库解决方案来说是基础工作。通过深入学习和实践这些知识,您可以更好地发挥MySQL数据库的强大功能。
32 2
|
3月前
|
存储 关系型数据库 MySQL
MySQL 中的 BLOB 数据类型深入解析
【8月更文挑战第31天】
377 0
|
3月前
|
存储 关系型数据库 MySQL
下一篇
无影云桌面