【MySQL】MySQL数据类型

这篇具有很好参考价值的文章主要介绍了【MySQL】MySQL数据类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【MySQL】MySQL数据类型,MySQL,mysql,adb,android

数值类型

【MySQL】MySQL数据类型,MySQL,mysql,adb,android

注: mysql不区分大小写

当定义数据类型后 ,插入的 数据需要遵循数据类型的约束。

创建一个有符号的数据类型 :

create table t1 (num int );

创建一个无符号的数据类型:

create table t2 (num int unsigned);

在添加数据时,如果超出数据类型所允许的范围,mysql服务会拦截命令语句。

bit 类型

bit[(M)] : 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。

create table tt4 ( id int, a bit(8));
insert into tt4 values(10, 10);

查看表,我们发现,a的数据10没有出现。
【MySQL】MySQL数据类型,MySQL,mysql,adb,android

再次插入,

insert into tt4 values(65,65);

查看
【MySQL】MySQL数据类型,MySQL,mysql,adb,android
发现a位置的65 变为了 ‘A’,我们可知:
bit字段在显示时,是按照ASCII码对应的值显示

同时,bit类型插入数值时也受其本身大小约束。

小数类型

float

float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节

小数:float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入

操作:

 create table t2(id int,num float(4,2));
 insert into t2 values(1,99.99);
 insert into t2(id,num) values(2,-99.99);
 insert into t2 values(2,99.994);

查看:
【MySQL】MySQL数据类型,MySQL,mysql,adb,android
插入99.996 等数字时,ERROR 1264 (22003): Out of range value ,mysql会约束你。

decimal

decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数

deciaml 和float 很像,但是有区别,它们的精度不一样。

decimal的精度更准确,因此如果我们希望某个数据表示高精度,选择decimal

字符串类型

char

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

注意: char的单位是字符,不是字节,一个字符可以表示任意一个在字符集里的字符,
一个汉字和一个英文字母都表示为一个字符

char(2) 表示可以存放两个字符。

varchar

varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节

varchar的L表示的是字节数。所以,varchar的最大长度和编码字符集有关系。

  1. varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。
  2. 当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符占用2字节

但是,我们看报错:
【MySQL】MySQL数据类型,MySQL,mysql,adb,android
row size too large,说明65535字节是表一行的最大长度,因此受表中定义的其它数据影响,达不到其最大长度。

varchar 的可变体现在,当设置了L长度后,插入的数据占据内存的大小等于数据的实际大小而不是你设置的规定的L,而char插入的大小就是设置的大小;

【MySQL】MySQL数据类型,MySQL,mysql,adb,android

日期和时间类型

date :日期 ‘yyyy-mm-dd’ ,占用三字节
datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss’表示范围从 1000 到 9999 ,占用八字节
timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss格式和 datetime 完全一致,占用 四字节

data 和datatime 都是固定的。
添加数据时,时间戳(timestamp)自动添加当前时间,修改数据时,时间戳也会自动修改为当前时间。

enum和set
enum:枚举,“单选”类型;

enum(‘选项1’,‘选项2’,‘选项3’,…);

该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是“数字”, 值依次对应如下数字:1,2,3,…

set:集合,“多选”类型;

set(‘选项值1’,‘选项值2’,‘选项值3’, …);

create table t5(
    -> name varchar(20),
    -> sex enum('男','女'),
    -> hobby set('学习','游戏','爬山','代码','恋爱')
    -> );

创建表结构,
正常插入 :

insert into t5 values('张三','男','学习');
insert into t5 values('李四','女','游戏');
insert into t5 values('王五','男','游戏,爬山');

【MySQL】MySQL数据类型,MySQL,mysql,adb,android

数字插入:

insert into t5 values('赵六',2,0);
insert into t5 values('赵六',2,1);
insert into t5 values('赵六',2,2);
insert into t5 values('赵六',1,4);
insert into t5 values('赵六',1,7);
insert into t5 values('赵六',1,31);

【MySQL】MySQL数据类型,MySQL,mysql,adb,android

可知,enum的下标从1开始,一一对应。
set的数字表示的是一个位图结构,当为0时,插入为空,当为31时,二进制表示为11111,所以选的是位图的前五个选项。

集合查询使用find_ in_ set函数:

查上表中爱好有学习的人的信息:

select * from t5 where find_in_set('学习',hobby);

【MySQL】MySQL数据类型,MySQL,mysql,adb,android
查表中爱好只有学习的人:

select * from t5 where hobby='学习';

【MySQL】MySQL数据类型,MySQL,mysql,adb,android文章来源地址https://www.toymoban.com/news/detail-764972.html

到了这里,关于【MySQL】MySQL数据类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySql004——MySQL 数据类型

    和Java中的数据类型一样,MySQL中的字段也有数据类型一说 👉👉👉👉👉最后,有兴趣的小伙伴可以点击下面链接,这里有我整理的MySQL学习博客内容,谢谢~ 🌹🌹🌹🌹🌹 《MySQL数据库学习》

    2024年02月14日
    浏览(29)
  • Mysql - Mysql的常用数据类型

    目录 参考文档:MySQL :: MySQL 5.7 参考手册 :: 11 种数据类型MySQL 数据类型 | 菜鸟教程 (runoob.com) Mysql的三大数据类型: 1、数值类型 2、字符串类型 3、日期和时间类型 一、数值类型 1、整数类型(精确值) - 整数、整数、小整数、小整数、小整数、整数、 MEDIUMINT, BIGINT

    2024年02月03日
    浏览(20)
  • 【MySQL学习笔记】(四)MySQL数据类型

    数值测试 注:在MySQL中,如果输入的数值不合法,会直接不允许插入。并不会像C/C++语言那样发生截断。这也说明了,凡是MySQL有的数值,必定是合法的。 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。 可以通过 UNSIGNED 来说明某个字段是无符号的无符号。

    2024年02月11日
    浏览(21)
  • 云原生数据仓库AnalyticDB Mysql(ADB分析型数据库)-DML语法之新增插入数据详解

    ADB分析型数据库,是阿里云平台上资源,原名叫云原生数据仓库AnalyticDB Mysql,俗称ADB分析型数据库,那么ADB的语法与mysql关系型数据库语法存在一定的差异。 本文为笔记,介绍ADB的DML语法的应用。 1. INSERT INTO INSERT INTO用于向表中插入数据,主键重复时会自动忽略当前写入数据

    2024年02月15日
    浏览(31)
  • 【MySQL】MySQL 数据类型,数值、日期和时间、字符串类型,创建数据表,删除数据表

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL 支持多种类型,大致可以分为三类:数值、日

    2024年02月15日
    浏览(53)
  • 【MySQL】拿来即用 —— MySQL中的数据类型

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 类型 类型举例 位类型 BIT 集合类型 SET 枚举类型 ENUM 定点数类型 DECIMAL 浮点类型 FLOAT、DOUBLE 日期时间类型

    2024年02月11日
    浏览(24)
  • 【MySQL】数据库数据类型

    看起来分为很多类型,例如数值类型,有一些看一眼就懂啦,所以不会全部介绍 进入 test_db数据库中,并创建表t1 ,其内部包含 tinyint类型的num 输入 desc t1; 查看t1表结构 tinyint类型为一个字节,有符号,所以 取值范围为 -128 到 127 向t1 表中分别插入 -128 、128 、1 输入 select * fr

    2024年02月08日
    浏览(37)
  • Mysql系列 - 第2天:详解mysql数据类型(重点)

    这是mysql系列第2篇文章。 环境:mysql5.7.25,cmd命令中进行演示。 介绍mysql中常用的数据类型 mysql类型和java类型对应关系 数据类型选择的一些建议 主要包括以下五大类 整数类型 : bit 、 bool 、 tinyint 、 smallint 、 mediumint 、 int 、 bigint 浮点数类型 : float 、 double 、 decimal 字符

    2024年02月11日
    浏览(31)
  • mysql数据库常见数据类型

    数据类型: MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 INT是INTEGER的同义词,DEC是DECIMAL的同义词。 BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、Inn

    2024年02月15日
    浏览(35)
  • 【MySQL】数据库的数据类型

    mysql 中的数据类型分类如下,其中红色字体的为常用的类型: mysql 中表的建立属性列: 列名称 数据类型 ,例如 num int ,它与我们平时写的语言数据类型是倒过来的! 接下来我们创建一个只有 tinyint 类型的表,然后分别插入 1 和 128,会发现 128 插入失败,因为越界插入了,

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包