侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

mysql8.0.19基础数据类型详解

数据库  /  管理员 发布于 6年前   274

mysql基础数据类型

mysql常用数据类型概览

![1036857-20170801181433755-146301178](D:\笔记\mysql\复习\1036857-20170801181433755-146301178.png)1. 数字: 整型:tinyinit int bigint 小数: float :在位数比较短的情况下不精准 double :在位数比较长的情况下不精准 0.000001230123123123 存成:0.000001230000 decimal:(如果用小数,则用推荐使用decimal) 精准 内部原理是以字符串形式去存 2. 字符串: char(10):简单粗暴,浪费空间,存取速度快 root存成root000000 varchar:精准,节省空间,存取速度慢 sql优化:创建表时,定长的类型往前放,变长的往后放 比如性别 比如地址或描述信息 >255个字符,超了就把文件路径存放到数据库中。 比如图片,视频等找一个文件服务器,数据库中只存路径或url。3. 时间类型: 最常用:datetime 4. 枚举类型与集合类型

数值类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HAIxWM9Z-1585063057990)(D:\笔记\mysql\复习\1036857-20170801181433755-146301178.png)]

1、整数类型

  • 整数类型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
  • 作用:存储年龄,等级,id,各种号码等
整型类型测试 默认是有符号的mysql> create table t1(money tinyint); #注意,创建表时最后一个字段后面不能有逗号,错误写法mysql> create table t1(money tinyint,);mysql> insert into t1 values(11);Query OK, 1 row affected (0.28 sec)mysql> select * from t1;mysql> insert into t1 values(-10);Query OK, 1 row affected (0.11 sec)mysql> select * from t1;mysql> insert into t1 values(-200);Query OK, 1 row affected, 1 warning (0.10 sec)mysql> select * from t1;设置了数据类型,会有一个约束效果,只能表示自己范围内的数创建 无符号数值类型 的写法:mysql> create table t2(id tinyint unsigned);

2、浮点型

  • 浮点类型:float double
  • 作用:存储薪资、身高、温度、体重、体质参数等
测试mysql> create table t3(id float(60,30)); # 60代表小数位+整数位总数Query OK, 0 rows affected (1.70 sec) # 30表示小数位最高30位mysql> create table t4(id double(60,30));Query OK, 0 rows affected (0.88 sec)mysql> create table t5(id decimal(60,30)); # decimal能够存储精确值的原因在于其内部按照字符串存储。Query OK, 0 rows affected (0.96 sec)mysql> insert into t3 values(1.1111111111111111111111);Query OK, 1 row affected (0.13 sec)mysql> insert into t4 values(1.1111111111111111111111);Query OK, 1 row affected (0.22 sec)mysql> insert into t5 values(1.1111111111111111111111);Query OK, 1 row affected (0.09 sec)mysql> select * from t3;mysql> select * from t4;mysql> select * from t5;
1.创建表 create table t2(f1 float(5,2),f2 float,f3 double(5,2),f4 double);float(5,2) 保留两位小数 并且四舍五入double(5,2)2.写入数据insert into t2 values(5.2336,5.2336,5.336,5.2336);3.查看表中数据 select * from t2;4.指定写入数据insert into t2(f2,f4) values(5.1783682169875975,5.1783682169875975);insert into 表名(字段1,字段3) values (值1,值3);1.创建t3表create table t3(f1 float,d1 double,d2 decimal(30,20),d3 decimal);2.查看表结构desc t3;3.写入数据 insert into t3 values(5.1783682169875975179,5.1783682169875975179,5.1783682169875975179,5.1783682169875975179);int--------不约束长度,最多表示10位数float(m,n)m-----一共多少位  n-----小数部分多少位 

日期类型

  • 类型:DATE,TIME,DATETIME ,IMESTAMP,YEAR
  • 作用:存储用户注册时间,文章发布时间,员工入职时间,出生时间,过期时间等
mysql> create table t6(d1 year ,d2 date,d3 datetime);Query OK, 0 rows affected (1.75 sec)mysql> insert into t6 values(now(),now(),now());Query OK, 1 row affected, 1 warning (0.12 sec)mysql> select * from t6;

字符串类型

char和varchar性能对比:    以char(5)和varchar(5)来比较,加入我要存三个人名:sb,ssb1,ssbb2    char:      优点:简单粗暴,不管你是多长的数据,我就按照规定的长度来存,5个5个的存,三个人名就会类似这种存储:sb ssb1 ssbb2,中间是空格补全,取数据的时候5个5个的取,简单粗暴速度快      缺点:貌似浪费空间,并且我们将来存储的数据的长度可能会参差不齐    varchar:      varchar类型不定长存储数据,更为精简和节省空间      例如存上面三个人名的时候类似于是这样的:sbssb1ssbb2,连着的,如果这样存,请问这三个人名你还怎么取出来,你知道取多长能取出第一个吗?        varchar在存数据的时候,会在每个数据前面加上一个头,这个头是1-2个bytes的数据,这个数据指的是后面跟着的这个数据的长度,1bytes能表示2**8=256,两个bytes表示2**16=65536,能表示0-65535的数字,所以varchar在存储的时候是这样的:1bytes+sb+1bytes+ssb1+1bytes+ssbb2,所以存的时候会比较麻烦,导致效率比char慢,取的时候也慢,先拿长度,再取数据。      优点:节省了一些硬盘空间,一个acsii码的字符用一个bytes长度就能表示,但是也并不一定比char省,看一下官网给出的一个表格对比数据,当你存的数据正好是你规定的字段长度的时候,varchar反而占用的空间比char要多。ValueCHAR(4)Storage RequiredVARCHAR(4)Storage Required''' '4 bytes''1 byte'ab''ab '4 bytes'ab'3 bytes'abcd''abcd'4 bytes'abcd'5 bytes'abcdefgh''abcd'4 bytes'abcd'5 bytes              缺点:存取速度都慢          对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的CHAR列不一定比使用可变长度VARCHAR列性能要好。因而,主要的性能因素是数据行使用的存储总量。由于CHAR平均占用的空间多于VARCHAR,因此使用VARCHAR来最小化需要处理的数据行的存储总量和磁盘I/O是比较好的。
适合使用char:身份证号、手机号码、QQ号、username、password、银行卡号适合使用varchar:评论、朋友圈、微博1.创建表create table t6(c1 char(1),v1 varchar(1),c2 char(8),v2 varchar(8));2.写入数据insert into t6 values('alexq','alexq','alexq','alexq');3.查询表中数据select * from t6;

枚举和集合类型

enum:单选行为------枚举类型只允许从值集合中选取单个值,而不能一次取多个值1.创建表create table t8(id int, name char(18),gender enum('male','female'));2.写入数据insert into t8 values(1,'alex','不详'); ---------不详无法写入3.查询表中数据select * from t8;4.写入数据insert into t8 values(1,'alex','male');-------------male可以写入5.查询表中数据select * from t8;2.写入数据insert into t8 values(1,'alex','female');------------female可以写入3.查询表中数据select * from t8;
set: 多选行为可以**允许值集合中任意选择1或多个元素进行组合**。对超出范围的内容将不允许注入,而对重复的值将进行自动去重。1.创建表create table t9(id int,name char(18),hobby set('抽烟','喝酒','洗脚','按摩','烫头'));2.写入数据insert into t9 values(1,'太白','烫头,抽烟,喝酒,按摩‘);3.查询表中数据select * from t8;4.写入数据insert into t9 values(1,'大壮','洗脚,洗脚,洗脚,按摩,按摩,打游戏‘);5.查询表中数据select * from t8;

总结

到此这篇关于mysql8.0.19-基础数据类型的文章就介绍到这了,更多相关mysql8.0.19-基础数据类型内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


  • 上一条:
    简单了解MySQL union all与union的区别
    下一条:
    Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错的解决方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 分库分表的目的、优缺点及具体实现方式介绍(0个评论)
    • DevDB - 在 VS 代码中直接访问数据库(0个评论)
    • 在ubuntu系统中实现mysql数据存储目录迁移流程步骤(0个评论)
    • 在mysql中使用存储过程批量新增测试数据流程步骤(0个评论)
    • php+mysql数据库批量根据条件快速更新、连表更新sql实现(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2017-06
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-05
    • 2018-10
    • 2018-11
    • 2020-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2021-02
    • 2021-04
    • 2021-07
    • 2021-08
    • 2021-11
    • 2021-12
    • 2022-02
    • 2022-03
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客