mysql 类型_MySQL数据类型
MySQL与SQLServer的数据类型大同小异。因此,可以忽略与SQLServer相同的地方,在SQLServer的基础上学习。
一、整型的显示宽度
MySQL数据类型与SQLServer有些不同,其定义的基本形式如下:
整型类型(显示宽度)
注意,正确的理解,其实是显示宽度,因为整型的显示宽度,对数值大小无影响,只是当设置了zerofill的时候,在显示的时候补0而已。
从上面的显示我们看到,设置了宽度为8,并且zerofill了,这样在查询的时候,会在前面自动补0。宽度可以不设置,因为整数数据类型都有默认的显示宽度,不设就采用默认的。
另外,即使设置了显示宽度,也能赋超过显示宽度的值,整型的显示宽度仅仅用于显示补0。
二、浮点型与定点型
MySQL中可以指定浮点数和定点数的精度
数据类型(M,D)
M:精度,数据的总长度;
D:标度,小数点后的长度;
这种类型MySQL里有3种如:Float(6,2)、Double(6,2)、Decimal(6,2);
其区别在于:
当不指定精度时,Float、Double默认会保存实际精度,而Decimal默认是整数;
当标度不够时,都会四舍五入,但Decimal会警告信息。
三、日期与时间类型
MySQL日期时间所有种类如下:
类型
字节数
取值范围
零值
YEAR
1
1901~2155
0000
DATE
4
1000-01-01~9999-12-31
0000:00:00
TIME
3
-838:59:59~838:59:59
00:00:00
DATETIME
8
1000-01-01 00:00:00~9999-12-31 23:59:59
0000-00-00 00:00:00
TIMESTAMP
4
1970-01-01 08:00:01~2038-01-19 11:14:07
00000000000000
DATE类型前面可以加个D,D表示天即24小时,如往DATE类型插入 '2 15:20:20';
另外TimeStamp类型与DateTime在无输入的情况下要注意下:
TimeStamp使用Current_TimeStamp()而DateTime使用NOW(来获取当前时间);
输入NULL时,系统会输入系统当前日期与时间;
无任何输入时,系统会输入系统当前日期与时间;
四、字符串类型
在MySQL中,字符串类型包括CHAR、VARCHAR、BLOB、TEXT、ENUM、SET。
1、CHAR与VARCHAR
其定义方式为:
字符串类型(M)
这个M是长度的意思,插入该列的字符串长度将不允许超过M所指定的长度。另外,由于MySQL在建库时就指定了字符集,因此就不存在nchar、nvarchar、ntext这种数据类型了。
char最长可取255;
varchar最长可取65535;
2、TEXT
TEXT分为4种,与SQLServer不同:
类型
允许的长度
存储空间
TINYTEXT
0~255字节
值的长度+2字节
TEXT
0~65535字节
值的长度+2字节
MEDIUMTEXT
0~167772150字节
值的长度+3字节
LONGTEXT
0~4294967295字节
值的长度+4字节
3、ENUM类型
ENUM类型(枚举类型),与C#的概念一样,在定义时指定取值范围。
属性名 ENUM('值1','值2','值3'...'值n')
ENUM有NOT NULL属性,其默认值为取值列表的第一个元素;
ENUM无NOT NULL,则ENUM类型将允许插入NULL,并且NULL为默认值;
CREATE TABLE Test4(Sex ENUM('男','女'));INSERT INTO Test4 VALUES('男');INSERT INTO Test4 VALUES('爷'); --这行报错
SELECT * FROM Test4;
4、SET类型
在创建表时,就指定SET类型的取值范围。
属性名 SET('值1','值2','值3'...,'值n')
它与ENUM的区别在什么地方呢?
基本上就是多选的ENUM。
5、二进制类型
二进制类型是在数据库中存储二进制数据的数据类型。二进制类型包括BINARY、VARBINARY、BIT、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB。
类型
取值范围
BINARY(M)
字节数为M,允许长度为0~M的定长二进制字符串
VARBINARY(M)
允许长度为0~M的变长二进制字符串,字节数为值的长度加1
BIT(M)
M位二进制数据,M最大值为64
TINYBLOB
可变长二进制数据,最多255个字节
BLOB
可变长二进制数据,最多2的16次方-1个字节
MEDIUMBLOB
可变长二进制数据,最多2的24次方-1个字节
LONGBLOB
可变长二进制数据,最多2的32次方-1个字节
1、BINARY和VARBINARY
两者唯一的差别在于BINARY当长度不够时会补\0。
2、BIT类型
BIT类型与SQLServer里的就差别大了。 其定义方式为:
BIT(M)
其中"M"指定了该二进制的最大字节长度为M,M的最大值为64。如BIT(4)就是数据类型为BIT类型,长度为4。其能够存储的值为0-15。因为变成二进制后,15的值为1111。
在查询BIT类型的数据时,要用BIN(字段名+0)来将值转换为二进制显示。
CREATE TABLE Test6(BB BIT(4));INSERT INTO Test6 VALUES(12);SELECT BIN(BB+0) FROM Test6;
上面的结果以二进制显示,最大的长度为4。
3、BLOB类型
BLOB类型是一种特殊的二进制类型。BLOB可以存储数据量很大的二进制数据,如图片,视频等。BLOB类型包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们之间的区别也只是最大长度不同。
五、数据类型的选择
整型:根据要显示的最大值决定;
浮点型:要显示小数。如果要精确到小数点后10位,就选择DOUBLE,而不应该选择FLOAT。DECIMAL精度较高,浮点数会出现误差,如果精度较高,则应选择定点数DECIMAL;
字符串型:定长与变长的区别,CHAR类型占用空间比较大,但是处理速度比VARCHAR快,如果长度变化不大,如身份证号码那种,最好选择CHAR类型。而对于评论字符串,最好选择VARCHAR;
时间:根据需要显示的类型咯,特别是TIMESTAMP,如果需要显示的时间与时区对应,就应该选择TIMESTAMP;
ENUM类型和SET类型:长度不同,ENUM类型最多可以由65535个成员,而SET类型最多只能包含64个成员。且ENUM只能单选,而SET类型可以多选;
TEXT类型和BLOB类型:TEXT只能存储字符数据,而BLOB可以存储二进制数据。如果是纯文本,适合TEXT。如果是图片等适合存二进制;
六、问题总结
1、存储路径的问题
MySQL中,如果路径中使用"\"符号时,这个符号会被过滤。解决的办法是路径中用"/"或"\\"来代替"\"。这样MySQL就不会自动过滤路径中的分隔符。
2、MySQL中的布尔类型
MySQL中没有Bool或Boolean类型,但是为了支持SQL标准,也可以定义Bool或Boolean类型的,但是Bool或Boolean类型最后转换成的是TinyInt(1),也就是说,在MySQL中,布尔类型实际上是TinyInt(1)。
3、MySQL中如何存储JPG图片或MP3音乐
一般情况下,数据库中不直接存储图片和音频文件,而是存储图片或音频文件的路径,如果在特殊情况下需要在MySQL数据库中存储图片和音频文件,可以选择BLOB类型;
mysql 类型_MySQL数据类型相关推荐
- mysql 类型_MySQL 数据类型有哪些?
学会自定义表中每一个字段(列)的数据类型,对学习SQL数据库以及性能调优有着很大的帮助! 数据类型是啥?它可以用来表示某个 字段(列) 的数据内容格式是数字(例123)还是字符(例"一二三& ...
- mysql long类型_MySQL数据类型笔记
引言 作为一个做Java后端的开发者,无论是在自己平时项目学习实战还是工作中的真实项目,都离不开和数据库打交道.而MySQL作为当今最流行的关系型数据库之一,也成为了我们必须掌握的一门技术.最近在工作 ...
- datetime对应的java类型_MySQL数据类型笔记
引言 作为一个做Java后端的开发者,无论是在自己平时项目学习实战还是工作中的真实项目,都离不开和数据库打交道.而MySQL作为当今最流行的关系型数据库之一,也成为了我们必须掌握的一门技术.最近在工作 ...
- 定义blob类型_MySQL 数据类型
MySQL 支持的数据类型很多,选用正确的数据类型至关重要.下面介绍常用的数据类型以及相应的优缺点. 一 整数类型 以上数据类型有可选的unsigned 属性,表示不允许出现负值,但可以使上限提高一倍 ...
- mysql 数据表创建字段类型_MySQL 数据类型简介 创建数据表及其字段约束
数据类型介绍 MySQL 数据类型分类 整型 浮点型 字符类型(char与varchar) 日期类型 枚举与集合 具体数据类型见这篇博客 MySQL表操作中的约束 primary key 主键约束 非 ...
- mysql 优化 类型_MySQL数据类型的优化选择
整数类型: Tinyint-8 Smallint-16 Mediumint-24 Int-32 Bigint-64 实数类型(带有小数部分的数字) Float-4/double-8:浮点 Decima ...
- mysql数据库中的int类型_mysql数据类型
mysql数据类型-int int 的有符号和无符号的区别 有符号的int可以插入负值,无符号的int不可以插入负值 整型的每一种都分无符号(unsigned)和有符号(signed)两种类型(flo ...
- mysql 负数类型_MySQL数据类型详解
MySQL数据类型,可以被分为3类:数值类型.日期和时间类型以及字符串(字符)类型 方括号("["和"]")指出可选的类型修饰符的部分 M 指出最大的显示尺寸. ...
- mysql mediumint是什么类型_MySQL 数据类型一览
整理了一下mysql中数据类型 1.数值类型 tinyint 从 -2^7 (-128) 到 2^7 - 1 (127) 的整型数据.存储大小为 1 个字节. unsigned 是从 0 到 255 ...
最新文章
- HDU - 4417 Super Mario(主席树/线段树+离线)
- C# 函数 传入 C++动态库中 做回调函数
- debian执行php网页,如何在Debian上安装和使用PHP Composer
- 两个list取交集_利用jieba计算两个句子的相似度
- TPAMI 2021 华为诺亚悉尼大学陶大程团队提出多功能卷积,助力轻量级网络
- 公务员计算机基本操作知识培训,计算机基础知识:计算机中窗口的基本操作
- JavaEE下宠物领养网站的设计与实现
- 视频教程-QT/C++从新手到老手系列之QT基础篇-其他
- 计算机前摄像头怎么录视频教程,电脑摄像头录制视频_电脑摄像头录像怎么录...
- 面向对象编程三大特性------封装、继承、多态
- 一名淘宝店长运营店铺靠谱指南
- 【光学】基于matlab相互垂直的光波叠加仿真【含Matlab源码 2071期】
- 抽签的实现-微信小程序-----从数据到云环境搭建到导出(一)
- Data truncation: Data too long for column 'xxx' at row 1
- python情感分析中文_Python有趣|中文文本情感分析
- 使用Fiddler抓公众号数据
- CSS文字超出用省略号...鼠标悬停显示全部文字
- 如何通俗理解 beta分布、汤普森采样和狄利克雷分布
- Dubbox框架简介
- [Ynoi2015]纵使日薄西山