【MySQL】MySQL 数据类型

目录

1. tinyint 类型

2. bit 类型

3. 小数类型

1、float 类型

2、decimal 类型

3. 字符串类型

1、char 类型 

2、varchar 类型

4. 日期类型

5. enum和set

1、枚举和集合类型语法

2、枚举和集合类型的查找

6、find_in_set 函数

写在最后:


1. tinyint 类型

我们以 tinyint 类型为例子,介绍 int 系列的类型。

1)我们先建一个简单的表:

create table if not exists t1(num tinyint
);

2)然后我们直接观察三连查看一下这个表:

操作包含:

desc t1;
show tables;
show create table t1;

3)接下来就是插入操作:

tinyint 的取值范围是 -128 ~ 127,我们现在就来插入一些值试试:

insert into t1 values (-128);
insert into t1 values (127);
insert into t1 values (0);
insert into t1 values (1);
insert into t1 values (-1);

然后我们再查看一下我们刚刚插入的数据:

select * from t1;

如果我们插入一个不正确的值呢:

MySQL 会直接报错,不让我们插入。

接下来我们再建一个表,创建一个无符号的类型:

create table if not exists t1(num tinyint unsigned
);

他的数据范围是 0 ~ 255。

所以如果我们插入负数那肯定是会报错的:

2. bit 类型

1)老规矩,还是从建表开始:

create table if not exists t3(id int,online bit(1)
);

2)查看表:

3)插入数据:

insert into t3 (id, online) values (123, 1);
insert into t3 (id, online) values (123, 2);

 插入了 2 就报错了,因为它只支持一个比特位:

我们可以修改他的值:

alter table t3 modify online bit(10);

我们可以看到这里修改成功了:

如果我们建表的时候不带 bit 的大小,他默认是 1 。

3. 小数类型

1、float 类型

 1)老样子,从建表开始学习:

create table if not exists t5(id int,salary float(4, 2)
);

2)查看一下表:

3)尝试插入数据:

insert into t5 (id, salary) values (1, 99.99);
insert into t5 (id, salary) values (1, 199.99);

float 类型的括号里面,第一个是他的位数,我们选了 4 所以最多 4 位,

第二个是他的精度,我们选了 2 所以他的小数位最多 2 位。 

这里要注意的是,因为精度要求的是两位,所以整数部分也只能是两位。

这里又有一种和神奇的现象,就是精度部分是按照四舍五入进行计算的,

所以 99.994 是允许插入这样的数的。

我们在建表的时候,在 float 类型后面也可以加上 unsigned 让他成为无符号。          

如果是默认使用的 float ,就是自己设定,那他会有一定的精度损失。(大约是 7 位)

2、decimal 类型

在使用上面,他跟 float 类型一模一样。

但是他对于 float 有着独特的优势,这里我就直说了:

float 在存一些数字比较大的数的时候,会出现精度丢失的问题,

但是 decimal 存的是什么他就是什么。

3. 字符串类型

1、char 类型 

1)建表

create table if not exists t8(id int,name char(2)
);

2)插入数据:

我们就能知道 char (2) 就是字符长度最长是 2。

注意:char 最大只能是 255。

2、varchar 类型

1)建表

create table if not exists t7(id int,name varchar(6)
);

2)插入

可以看到他最大能插入的长度是 6 。注意 varchar 最长支持 21845。

那 char 和 varchar 看起来一样,他们的区别是什么?

char 是定长(一开始就开辟好),varchar 是变长的(用多少,开辟多少)

4. 日期类型

有三种常见的日期类型:date,datetime,timestamp

1)建表

create table if not exists t9(t1 date,t2 datetime,t3 timestamp
);

2)查看表

时间戳有个默认值,应该是当前的时间戳。

3)插入值

我们可以看到,这样是插入成功的

4)查看插入结果

 t3 自动显示了当前的时间。

5. enum和set

1、枚举和集合类型语法

enum 枚举值是单选类型

set 集合类型是多选类型

1)建表

create table if not exists t10(username varchar(20),sex enum('男', '女'),hobby set('写代码', '睡觉', '打游戏')
);

2)查看表

3)插入值 

然后:

我们可以看到我们插入的值。

这里要注意的是,以后再 sex 位置插入时,只能插入他给的枚举值,而枚举值从 1 开始,所以也可以通过插入枚举值来代表我们插入的值,比如说插入 1 就是插入 男。 

我们再来试试能不能给集合插入多个值:

我们可以看到是可以插入多个值的。这里要注意的是,如果什么都不插入,就会是  NULL,如果插入 0 就会是一个空串,但是集合中的数字跟枚举的不同,我们可以把这个集合中的 3 个值想象成一个二进制 000,最低位代表的是第一个值,所以插入 1 就是 001,插入写代码:

如果插入的是 3 ,插入的就应该是 写代码和睡觉:

可以看到确实是这样。 

总结:枚举是下标,集合是位图。

2、枚举和集合类型的查找

 先来根据枚举值查找:

select * from t10 where sex=1;
select * from t10 where sex=2;

集合其实也是这样找:

select * from t10 where hobby=1;
select * from t10 where hobby=3;
select * from t10 where hobby=7;

那如果我们想要筛选出,比如说爱好有睡觉的都找出来,那该怎么找?

因为我们上面的查找都是严格的匹配,有没有更灵活的方式呢?

6、find_in_set 函数

实际上,在 MySQL 里面是可以执行函数的:

find_in_set 只能查找一个元素是否在对应的集合里面。

这样我们就可以:

select * from t10 where find_in_set('睡觉', hobby);

 成功找到了。

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/66794.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2004-2021年全国31省市场分割指数数据(原始数据+计算过程+最终结果+方法说明)

2004-2021年全国31省市场分割指数数据(原始数据计算过程最终结果方法说明) 1、时间:2004-2021年 2、来源:统计年鉴和国家统计局 3、指标:市场分割指数、食品类商品零售价格指数(上年100)、饮料、…

2023年国赛数学建模思路 - 案例:FPTree-频繁模式树算法

文章目录 算法介绍FP树表示法构建FP树实现代码 建模资料 ## 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法,就是频繁模式树算法&#xff0c…

Kafka基本概念

文章目录 概要整体架构broker和集群ProducerConsumer和消费者组小结 概要 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多生产者、多订阅者,基于 zookeeper协调的分布式日志系统(也可以当做MQ系统)&#xff…

一文解析超标量处理器

一、引言 处理器(central process unit,简称CPU)是手机的核心部件,其主要功能是取指令并译码执行。CPU主要包括控制器和运算器两个部件,它对在手机中的所有硬件资源(如存储器,输入输出单元)进行…

设计师常用的UI设计软件推荐

如今,随着互联网时代设计岗位的演变,近年来出现了一位新兴而受欢迎的专业UI设计师。对于许多对UI设计感兴趣或刚刚接触UI设计的初学者来说,他们不禁想知道,成为一名优秀的UI设计师需要掌握哪些UI软件?今天,…

Docker自动化部署安装(十)之安装SonarQube

这里选择的是: sonarqube:9.1.0-community (推荐使用) postgres:9.6.23 数据库(sonarqube7.9及以后便不再支持mysql,版本太低的话里面的一些插件会下载不成功的) 1、docker-sonarqube.yml文件 version: 3 services:sonarqube:container_name: sonar…

基于dbn+svr的交通流量预测,dbn详细原理

目录 背影 DBN神经网络的原理 DBN神经网络的定义 受限玻尔兹曼机(RBM) DBN+SVR的交通流量预测 基本结构 主要参数 数据 MATALB代码 结果图 展望 背影 DBN是一种深度学习神经网络,拥有提取特征,非监督学习的能力,是一种非常好的分类算法,本文将DBN+SVR用于交通流量预测…

使用Java根据表名导出与导入Sql

前言 很粗糙啊,有很多可以优化的地方,而且也不安全,但是临时用还是OK的,我这个是公司里面的单机软件,不联网。 嗨!我是一名社交媒体增长黑客,很高兴能帮助您优化和丰富关于批量作业导出和导入…

LeetCode 31题:下一个排列

目录 题目 思路 代码 题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序…

12 注册登录

12 注册登录 整体概述 使用数据库连接池实现服务器访问数据库的功能,使用POST请求完成注册和登录的校验工作。 本文内容 介绍同步实现注册登录功能,具体涉及到流程图、载入数据库表、提取用户名和密码、注册登录流程与页面跳转的代码实现。 流程图&a…

手机的发展历史

目录 一.人类的通信方式变化 二.手机对人类通信的影响 三.手机的发展过程 四.手机对现代人的影响 一.人类的通信方式变化 人类通信方式的变化是一个非常广泛和复杂的话题,随着技术的进步和社会的发展,人类通信方式发生了许多重大的变化。下面是一些主…

掌握Python的X篇_32_使用python编辑pdf文件_pdfrw

本篇介绍利用python操作pdf文件,我们平时也会有合并和拆分pdf的需求,此时我们就可以使用本节内容。 文章目录 1. pdfrw的安装2. 切分pdf文件3. pdfrw官网及实现一版四面的实例 1. pdfrw的安装 pip install pdfrw官网地址:https://github.co…