我们知道MySQL支持大量的列类型,每种类型都有特定的用处,擅长用各种贴合实际的类型不仅能大量节省数据库占用的空间,对于后续的查询、储存、维护都会带来极大的便利。因此,本次会对mysql中可用类型的作一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。

1、bit

bit属于位字段类型,其范围是1~64,如果不指定值默认为1,当bit(1)时其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如yes/no、true/false 、on/off。

当bit(value)的value值大于1时则以二进制存储,存储时如下:

注意:bit是一种很省空间的数据类型,如果能够满足需求应该尽量多用。另外在插入时,如果是true/false会被自动转换成1/0,查询时会返回1/0。

2、tinyint整型

tinyint数据类型能存储从0~255 之间的整数,如果tinyint添加了无符号(unsigned)属性,则范围变成-128~+127。如果你只打算存储有限数目的数值时建议使用tinyint,这种数据类型在数据库中占用1 个字节.

注意:tinyint相对是比较安全的,不接受恶意脚本内容的嵌入。

3、smallint整型

smallint 数据类型带符号的范围是-32768到32767,无符号的范围是0到65535。这种数据类型对存储一些常限定在特定范围内的数值型数据非常有用。这种数据类型在数据库里占用2 字节空间.

注意:smallint型相对也是比较安全的,不接受恶意脚本内容的嵌入。

4、int整型

int 数据类型带符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节。

注意:int是数据库常用的字段。推荐使用

5、decimal精确数值

decimal[(M,[D])] 或者数据类型能用来存储从-10的38次幂-1到10的38次幂-1的固定精度和范围的数值型数据。使用这种数据类型时,必须指定范围和精度。 由M(整个数字的长度,包括小数点,小数点左边的位数,小数点右边的位数,但不包括负号)和D(小数点右边的位数)来决定,M缺省为10,D缺省为0。

6、numeric精确数值

numeric(M,D)数据类型与decimal 相似。

7、smallmoney货币型

smallmoney 数据类型用来表示钱和货币值。这种数据类型能存储从-214748.3648 到214748.3647 之间的数据,精确到货币单位的万分之一。

8、money货币型

money数据类型用来表示钱和货币值。这种数据类型能存储从-9220亿到9220 亿之间的数据,精确到货币单位的万分之一 。

9、float近似数值型

float 数据类型是一种近似数值类型,供浮点数使用。说浮点数是近似的,是因为在其范围内不是所有的数都能精确表示。浮点数可以是从-1.79E+308到1.79E+308 之间的任意数。

10、real近似数值型 

real 数据类型像浮点数一样,是近似数值类型。它可以表示数值在-3.40E+38到3.40E+38之间的浮点数。

11、date时间类型

date时间数据类型来表示日期和时间。这种数据类型存储数据格式为:YYYY-MM-DD,它支持的范围为'1000-01-01'到'9999-12-31',并且允许使用字符串或数字为此列复制。

12、datetime日期时间类型

datetime数据类型用来表示日期和时间。它的存储格式为:YYYY-MM-DD HH:MM:SS,它支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59',并且允许使用字符串或数字进行分配值, 精确到三百分之一秒或3.33毫秒 。

13、timestamp特殊数据类型

timestamp 数据类型是一种特殊的数据类型,他是一个时间戳,用来创建一个数据库范围内的唯一数码。 它支持的范围是1970-01-01 00:00:00到2037年,一个表中只能有一个timestamp列。每次插入或修改一行时,timestamp列的值都会改变。尽管它的名字中有“time”, 但timestamp列不是人们可识别的日期。在一个数据库里,timestamp值是唯一的。

注意:

如果插入的时间小于1970-01-01 00:00:00即19700101000000,会抛出[Error Code: 1292, SQL State: 22001]  Data truncation: Incorrect datetime value: '10831212121212' for column 'crt_date' at row 1。

如果插入的时间大于2037年,则会抛出  [Error Code: 1292, SQL State: 22001]  Data truncation: Incorrect datetime value: '20381212121212' for column 'crt_date' at row 1。

14、time时间类型

time数据类型用来表示日期和时间,他以'HH:MM:SS'格式检索和显示TIME值(或对于大的小时值采用'HHH:MM:SS'格式)。TIME值的范围可以从'-838:59:59'到'838:59:59'。小时部分会因为大的原因是TIME类型不仅可以用于表示一天的时间(必须小于24小时),还可能为某个事件过去的时间或两个事件之间的时间间隔(可以大于24小时,或者甚至为负)。

15、year年类型

year用来表示年,他以YYYY格式检索和显示year值,范围是1901到2155,支持2/4位标准值

year在不同类型中的值不同:

  1. 四位字符串,范围为'1901'到'2155'。
  2. 四位数字,范围为1901到2155。
  3. 两位字符串,范围为'00'到'99'。'00'到'69'和'70'到'99'范围的值被转换为2000到2069和1970到1999范围的year值。
  4. 两位整数,范围为1到99。1到69和70到99范围的值被转换为2001到2069和1970到1999范围的year值。请注意两位整数范围与两位字符串范围稍有不同,因为你不能直接将零指定为数字并将它解释为2000。你必须将它指定为一个字符串'0'或'00'或它被解释为0000。

注意:函数返回的结果,其值适合year上下文,例如now()。
           非法year值被转换为0000。

16、smalldatetime日期时间类型

smalldatetime 数据类型用来表示从1900年1月1日到2079年6月6日间的日期和时间,精确到一分钟 。

17、cursor特殊数据类型

cursor 数据类型是一种特殊的数据类型,它包含一个对游标的引用。这种数据类型用在存储过程中,而且创建表时不能用。

18、Uniqueidentifier特殊数据类型

Uniqueidentifier数据类型用来存储一个全局唯一标识符,即GUID。GUID确实是全局唯一的。这个数几乎没有机会在另一个系统中被重建。可以使用NEWID 函数或转换一个字符串为唯一标识符来初始化具有唯一标识符的列 。

19、char字符型

char数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,你必须指定列长。当你总能知道要存储的数据的长度时,此数据类型很有用。例如,当你按邮政编码加4个字符格式来存储数据时,你知道总要用到10个字符。此数据类型的列宽最大为8000 个字符。

20、varchar字符型

varchar数据类型,同char类型一样,用来存储非统一编码型字符数据。与char 型不一样,此数据类型为变长。当定义一列为该数据类型时,你要指定该列的最大长度。 它与char数据类型最大的区别是,存储的长度不是列长,而是数据的长度。

21、text字符型

text 数据类型用来存储大量的非统一编码型字符数据。这种数据类型最多可以有231-1或20亿个字符。

22、字符数据类型Char,Varchar 和 Text比较

  字符数据的类型包括 Char,Varchar 和 Text。

  字符数据是由任何字母、符号和数字任意组合而成的数据。

  Varchar 是变长字符数据,其长度不超过 8KB。Char是定长字符数据,其长度最多为 8KB。超过 8KB 的ASCII 数据可以使用Text数据类型存储。例如,因为 Html 文档全部都是 ASCII 字符,并且在一般情况下长度超过 8KB,所以这些文档可以 Text 数据类型存储在SQL Server 中。

23、nchar统一编码字符型

nchar 数据类型用来存储定长统一编码字符型数据。统一编码用双字节结构来存储每个字符,而不是用单字节(普通文本中的情况)。它允许大量的扩展字符。此数据类型能存储4000种字符,使用的字节空间上增加了一倍。

24、nvarchar统一编码字符型

nvarchar 数据类型用作变长的统一编码字符型数据。此数据类型能存储4000种字符,使用的字节空间增加了一倍。

25、ntext 统一编码字符型

ntext 数据类型用来存储大量的统一编码字符型数据。这种数据类型能存储230 -1或将近10亿个字符,且使用的字节空间增加了一倍。

26、binary 二进制数据类型

binary数据类型用来存储可达8000 字节长的定长的二进制数据。当输入表的内容接近相同的长度时,你应该使用这种数据类型。

27、varbinary二进制数据类型

varbinary数据类型用来存储可达8000 字节长的变长的二进制数据。当输入表的内容大小可变时,你应该使用这种数据类型。

28、image二进制数据类型

image数据类型用来存储变长的二进制数据,最大可达231-1或大约20亿字节。

29、二进制数据类型binary、varbinary、image比较

  二进制数据包括 binary、varbinary和 image

  binary数据类型既可以是固定长度的(Binary),也可以是变长度的。

  Binary[(n)] 是 n 位固定的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储窨的大小是 n + 4 个字节。

  varbinary[(n)] 是 n 位变长度的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储窨的大小是 n + 4个字节,不是n 个字节。

  在 image数据类型中存储的数据是以位字符串存储的,不是由 SQL Server 解释的,必须由应用程序来解释。例如,应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。

30、enum枚举数据类型

enum,实现将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个。

枚举的使用方式

定义:enum(可能出现的元素列表); //如enum(‘男’,‘女’)

使用:存储数据,只能存储上面定义好的数据

意义在于:

1, 限定值的可能性!

2, 速度快,比普通的字符串速度快!

原因是枚举型 是利用 整数进行管理的,能够2个字节进行管理!

每个值,都是一个整数标识,从第一个选项开始为1,逐一递增!

管理时整数的形式,速度比字符串快!

一共有2 个字节,0-65535,因此可以有 65535个选项可以使用!

创建示例:

create table my_enum(

  gender enum('男','女','保密')

)charset utf8;

作用之一:规范数据格式,数据只能是规定的数据中的其中一个

作用之二:节省存储空间(枚举通常有一个别名:单选框),枚举实际存储的是数值,而不是字符串本身

在mysql中,系统也是自动转换格式的,而且基本与PHP一样(尤其是字符串转数字)

插入方式:

insert into my_enum values('男'),('保密');

insert into my_enum values (‘1’),(‘2’),(‘3’),(‘1’+’2’);

注意:插入为数字时索引从1开始,不是0

枚举原理:枚举在进行数据规范的时候(定义的时候),系统会自动建立一个数字与枚举元素的对应关系(关系放到日志中);然后在进行数据插入的时候,系统自动将字符转换成对应的数字存储,然后在进行数据提取的时候,系统就自动将数字转换成字符串显示。

31、Unicode数据类型Char,Varchar 和 Text比较

  Unicode 数据类型包括 Nchar,Nvarchar 和Ntext。

  在 Microsoft SQL Server 中,传统的非 Unicode 数据类型允许使用由特定字符集定义的字符。在 SQL Server安装过程中,允许选择一种字符集。使用 Unicode 数据类型,列中可以存储任何由Unicode 标准定义的字符。在 Unicode 标准中,包括了以各种字符集定义的全部字符。使用Unicode数据类型,所战胜的窨是使用非 Unicode 数据类型所占用的窨大小的两倍。

  在 SQL Server 中,Unicode 数据以 Nchar、Nvarchar 和 Ntext 数据类型存储。使用这种字符类型存储的列可以存储多个字符集中的字符。当列的长度变化时,应该使用Nvarchar 字符类型,这时最多可以存储 4000 个字符。当列的长度固定不变时,应该使用 Nchar 字符类型,同样,这时最多可以存储4000 个字符。当使用 Ntext 数据类型时,该列可以存储多于 4000 个字符。

32、日期和时间数据类型Datetime、Smalldatetime比较

  日期和时间数据类型包括 Datetime 和 Smalldatetime两种类型

  日期和时间数据类型由有效的日期和时间组成。例如,有效的日期和时间数据包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。前一个数据类型是日期在前,时间在后一个数据类型是时间在前,日期在后。在 Microsoft SQL Server中,日期和时间数据类型包括Datetime 和 Smalldatetime 两种类型时,所存储的日期范围是从 1753 年 1 月 1 日开始,到9999 年12 月 31 日结束(每一个值要求 8 个存储字节)。使用 Smalldatetime 数据类型时,所存储的日期范围是 1900年 1 月 1日 开始,到 2079 年 12 月 31 日结束(每一个值要求 4 个存储字节)。

  日期的格式可以设定。设置日期格式的命令如下:

  Set DateFormat {format | @format _var|

  其中,format | @format_var 是日期的顺序。有效的参数包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默认情况下,日期格式为MDY。

  例如,当执行 Set DateFormat YMD 之后,日期的格式为年 月 日 形式;当执行 Set DateFormat DMY 之后,日期的格式为日 月 年形式。

mysql表字段详解相关推荐

  1. mysql user表字段详解_Mysql User表权限字段说明全介绍

    下文对Mysql User表权限字段进行了全部的详细说明,供您参考学习,如果您对Mysql User表权限字段不是很了解,不妨一看,相信对您会有所启迪. Select_priv:确定用户是否可以通过S ...

  2. MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)

    MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测) 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过 ...

  3. Mysql加锁过程详解(3)-关于mysql 幻读理解

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  4. 数据库mysql_row_MYSQL数据库mysql found_row()使用详解

    <MYSQL数据库mysql found_row()使用详解>要点: 本文介绍了MYSQL数据库mysql found_row()使用详解,希望对您有用.如果有疑问,可以联系我们. mys ...

  5. MySQL表字段字符集不同导致的索引失效问题

    MySQL表字段字符集不同导致的索引失效问题 转自:MySQL表字段字符集不同导致的索引失效问题 1. 概述 昨天在一位同学的MySQL机器上面发现了这样一个问题,MySQL两张表做left join ...

  6. mysql status改变_mysql 配置详解mysql SHOW STATUS 详解

    1. back_log 指定MySQL可能的连接数量.当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很短)检查连接并且启动一个新线程. back_log ...

  7. Mysql存储引擎详解(MyISAM与InnoDB的区别)

    Mysql存储引擎详解(MyISAM与InnoDB的区别) 存储引擎     MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平 ...

  8. MySQL的Limit详解(转载)

    MySQL的Limit详解 问题:数据库查询语句,如何只返回一部分数据? Top子句 TOP 子句用于规定要返回的记录的数目.对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 在SQL Se ...

  9. Mysql加锁过程详解(2)-关于mysql 幻读理解

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

最新文章

  1. SAP WM初阶LQ02报错 - Movement Type 901 for manual transfer orders does not exist -
  2. Windows 服务器开机自启动
  3. python字典中找最小值_从包含元组值的字典中查找最小值和最大值
  4. 构建可靠的前端异常监控服务-采集篇
  5. TrimPath - Js模板引擎
  6. YII2操作mongodb笔记(转)
  7. 令人窒息!iPhone充电时自燃烧毁房子,到底是谁的锅?
  8. c语言acm测试数据,求数据帝帮忙测试一下代码,已被南洋理工大学的oj搞蒙..
  9. css + div + js 制作HTML tab control
  10. mfc调取摄像头显示并截图_用OpenCV在MFC Dialog中Picture控件上显示摄像头采集实时视频...
  11. C语言之生成汇编代码(十)
  12. IDEA离线安装maven helper插件
  13. 2020年最新Django经典面试问题与答案汇总(上)-大江狗整理
  14. linux命令清理磁盘空间,Linux如何使用命令行清理磁盘来增加空间
  15. inkscape裁剪
  16. xp计算机调亮度,老xp系统怎么调亮度台式电脑(教你XP系统如何调节亮度)
  17. android 微信好友,朋友圈分享
  18. 大学计算机实验报告虚拟机,安装虚拟机的实验报告(共10篇).docx
  19. 程序员过高工资导致加班?应该降低程序员工资?网友:放过其他苦逼的程序员吧
  20. 16个免费高质量无版权图片视频网站分享,可以商用!

热门文章

  1. 【图片新闻】以色列著名军火商Rafael公司发布令人震撼的未来装甲战争假想视频
  2. Xshell入门必看
  3. Java修改JTable单元格背景色
  4. Java项目:JSP在线水果销售商城
  5. 百度:AI技术哪家强,度厂科大最在行?
  6. 鲜花静态HTML网页作业作品 大学生鲜花网页设计制作成品 简单DIV CSS布局网站
  7. 让线程按顺序执行8种方法(转载)
  8. PetStore项目总结
  9. 你应该在你的域名中使用www吗?
  10. 电商网站怎么挑选高防服务器防御恶意攻击