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-基础数据类型内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

本文标题: mysql8.0.19基础数据类型详解

本文地址: http://www.cppcns.com/shujuku/mysql/303992.html

mysql8.0日期类型_mysql8.0.19基础数据类型详解相关推荐

  1. mysql8.0日期类型_MySQL8.0中的日期类数据及其函数

    1.日期类数据类型 类型ZERO值有效值其他 DATE '0000-00-00' '1000-01-01'~'9999-12-31' 允许使用字符串或数字向date类型的列赋值 TIME '00:00 ...

  2. MySQL5日期类型DATETIME和TIMESTAMP相关问题详解

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/280284 MySQ ...

  3. Redis入门 - 数据类型:5种基础数据类型详解

    Redis所有的key(键)都是字符串.我们在谈基础数据结构时,讨论的是存储值的数据类型,主要包括常见的5种数据类型,分别是:String.List.Set.Zset.Hash Redis入门 - 数 ...

  4. Redis基础——数据类型详解

    命令参考:http://doc.redisfans.com/ 简介 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - valu ...

  5. Python基础数据类型详解:字典(补充)

    字典的嵌套: 举一个简单的例子 wangfeng = { "name'' : "汪峰" "age" :18 "wife": {&q ...

  6. 100天精通Python丨基础知识篇 —— 05、7大基础数据类型详解(变量、列表、集合、字典、元组)

    <100天精通Python专栏 - 快速入门到黑科技>是由 CSDN 内容合伙人丨全站排名 Top 4 的硬核博主 不吃西红柿 倾力打造,专栏分为基础知识篇和黑科技应用篇.基础知识篇以理论 ...

  7. mysql压缩包安装教程8.0.19,win10安装zip版MySQL8.0.19的教程详解

    win10安装zip版MySQL8.0.19的教程详解 一. 下载后解压到想安装的目录 二. 在安装目录中添加配置文件my.ini [mysqld] # 设置3306端口 port=3306 # 设置 ...

  8. 用Advanced Installer制作DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版详解

    关于 DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...

  9. 华娱水浒无双1java,魔兽争霸3真水浒无双1.0正式版开局单刷完美通关图文详解

    魔兽争霸3真水浒无双1.0正式版开局单刷怎么打?有什么技巧?很多玩家可能还不太清楚,下面小编为大家带来了魔兽争霸3真水浒无双1.0正式版开局单刷完美通关图文详解,感兴趣的玩家一起来看看吧! 魔兽争霸3 ...

最新文章

  1. 嵌入式系统学习笔记之ftp
  2. 大数据实战项目之海量人脸特征检索解决方案演进
  3. Kotlin成为正式的Android编程语言
  4. java怎么看具体被挂起的线程_Java线程的挂起、恢复和终止
  5. Delphi中实现ListView滚动条的换肤方案
  6. 虚短”“虚断”两板斧,搞定运算放大器 11张大图详(转)
  7. 数据结构:八大数据结构分类
  8. 软件众包外包平台汇总
  9. 史上最简单的LSTM文本分类实现:搜狗新闻文本分类(附代码)
  10. 网站icp备案服务器ip,域名已有icp备案更换服务器
  11. 网页游戏外挂辅助AMF模拟通讯必备
  12. .Net framework3.5装不上解决之道错误代码 0x800F0906、0x800F081F
  13. 流式布局使用鸿洋大神写的库:com.hyman:flowlayout-lib:1.1.2
  14. 求集合的所有非空子集
  15. CSS3中设置动画播放时间
  16. python dict排序_python 字典(dict)按键和值排序
  17. 九、软件开发进度月报-模板
  18. C语言结构体指针(指向结构体的指针)详解
  19. 献给30岁之前为前途迷茫彷徨的男人们的忠告
  20. Kotlin重载操作符和约定声明规则

热门文章

  1. 盐城大数据产业园人才公寓_盐城市大数据产业园获评大众创业万众创新示范基地...
  2. php表格无限扩展,php 无限级缓存的类的扩展
  3. AcWing 798. 差分矩阵
  4. C Primer Plus第二章总结
  5. 华南农业大学c语言上机实验答案,华南农业大学C语言上机实验答案.doc
  6. MySQL半一致性读导致语句级Binlog复制错误1111
  7. Callable接口与runable和Thread类
  8. 注解Annotation
  9. TestNG学习(一)
  10. Django admin组件源码流程