我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【MySQL】MySQL 数据类型

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【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 函数

写在最后:


我们以 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。

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

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 。

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 存的是什么他就是什么。

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 是变长的(用多少,开辟多少)

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

1)建表

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

2)查看表

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

3)插入值

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

4)查看插入结果

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

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;

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

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

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

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

这样我们就可以:

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

 成功找到了。

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

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

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

来源地址:https://blog.csdn.net/Locky136/article/details/132135402

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【MySQL】MySQL 数据类型

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【MySQL】MySQL数据类型

文章目录 一、数据类型的分类二、tinyint类型2.1 创建有符号数值2.2 创建无符号数值 三、bit类型三、浮点类型3.1 float3.2 decimal类型 四、字符串类型4.1 char类型4.2 varchar
2023-08-22

MySQL 数据类型

1、数值型类型                    范围、小数位数TINYINT(-128,127)SMALLINT正负3w+MEDIUMINT正负800w+INT正负21亿+BIGINT正负900千万亿+FLOAT  单精度10的-38次方DOUBLE 
MySQL  数据类型
2018-12-08

mysql数据类型

1.整型(整数类型)create table t2(id int(5) unsigned zerofill);注意:  ①int后面的5表示的是显示宽度(就是你select * from t2;时看到的数字最大长度为5),而不是数据库存储时的宽度,一般在创建表
mysql数据类型
2020-10-18

MySQL数据类型 - JSON数据类型 (4)

JSON值的比较和排序JSON值可以使用=,=,,!=,和运算符进行比较。JSON值尚不支持以下比较运算符和函数:●BETWEEN●IN()●GREATEST()●LEAST()要想使用上面这些列出的比较运算符和函数,一个解决方法是将JSON值转换为原生MyS

	MySQL数据类型 - JSON数据类型 (4)
2016-08-23

MySQL数据类型 - JSON数据类型 (2)

JSON值的规范化、合并和自动包装当一个字符串被解析并发现是一个有效的JSON文档时,它也会被规范化。这意味着,具有与稍后在文档中找到的键(从左到右)重复的键的成员将被丢弃。JSON_OBJECT()调用生成的对象值只包含第二个key1元素,因为该键名在之前值

	MySQL数据类型 - JSON数据类型 (2)
2019-09-03

MySQL数据类型 - JSON数据类型 (3)

最右边的数组元素。MySQL支持last关键字,作为数组中最后一个元素的索引的同义词。last - N 形式的表达式可用于相对寻址和范围定义,如下所示:如果不是针对数组计算路径,则求值结果与将该值包装在单个元素数组中的结果相同:可以使用带有JSON列标识符和J

	MySQL数据类型 - JSON数据类型 (3)
2021-03-13

MySQL数据类型 - 数据类型默认值

数据类型默认值数据类型规范可以有显式或隐式的默认值。数据类型规范中的DEFAULT值子句显式指示列的默认值。示例:SERIAL DEFAULT VALUE是一种特殊情况。在整数列的定义中,它是NOT NULL AUTO_INCREMENT UNIQUE的别名。

	MySQL数据类型 - 数据类型默认值
2021-04-15

MySQL数据类型(精)

数据类型(精)MySQL中的数据类型整型类型类型介绍可选属性M显示宽度不会影响类型的实际宽度设置字段f1,f2,f3f1 INT,f2 INT(5),f3 INT(5) ZEROFILL#不足宽度时,会自动补0;并且自动变成UNSIGNED添加数据INSERT
MySQL数据类型(精)
2021-02-11

MYSQL的数据类型

基本数据类型:整数(int),小数(double),固定长度字符(char),可变长度字符(varchar),文本(text),二进制大对象(blog)
MYSQL的数据类型
2016-03-05

【MySQL】数据库的数据类型

数据类型 一、数据类型分类二、数值类型1. tinyint2. bit3. 小数类型(1)float(2)decimal 三、字符串类型1. char2. varchar3. varchar 和 char 比较 四、日
【MySQL】数据库的数据类型
2023-12-23

03、MySql的数据类型

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。1、数字类型 类型大小范围(有符号)范围(无符号)用途TINYINT1 字节(-128,127)(0,255)小整数值S
03、MySql的数据类型
2021-08-14

编程热搜

目录