每一个常量、变量和参数都有数据类型、它用来指定一定的存储格式、约束和有效范围。MySQL提供了多种数据类型、主要有数值型、字符串类型、日期和时间类型。不同的MySQL版本支持的数据类型可能会稍有不同。

  数值类型:
  MySQL支持所有标准SQL 中的数值类型、其中包括了严格数值类型、近似数值数据类型、并在此基础上做了一些扩展、增加了三种不同长度的整型。

  在整数类型中、按照取值范围和存储方式不同、分为tinyint、smallint、mediumint、int和bigint这五种类型,如果超出类型范围的操作,会发生“Out of range” 错误提示。为了避免此类问题的发生,在选择数据类型的时候要根据应用的实际情况确定其取值范围,最后根据确定的结果去选择数据类型。

  对于整型数据,MySQL还支持在类型名称后面的小括号能指定显示宽度,例如 int(5) 表示当数值宽度小于5位的时候在数字前面填满宽度,如果不显示指定宽度则默认为int(11)。一般配合zerofill使用,zerofill就是用“0”填充的意思,也就是在数字位数不够的空间用字符“0”填满。

  所有的整数类型都有一个可选属性UNSIGNED(无符号),如果需要在字段里面保存非负数或者需要较大的上限值时,可以用此选项,他的取值范围时正常值得下限取0,上限取原值的2倍,例如tinyint有符号范围是-128~+127,而无符号范围是0~255。如果一个列指定为zreofill,则MySQL自动为该列添加UNSIGNED属性。

  整数类型还有一个属性,AUTO_INCREMENT。在需要产生唯一标识符或顺序值时,可以使用此属性,这个属性只能用于整数。ATUO_INCREMENT值一般从1开始,每行增加1。在插入NULL到一个AUTO_INCREMENT列时,MySQL插入一个比该列中当前最大值大1的值。一个表中最多只能有一个AUTO_INCREMENT列。对于任何想要使用AUTO_INCREMENT的列,应该定义为NOT NULL,并定义为PRIMARY KEY 或者为 UNIQUE键。

  小数类型,MySQL分为两种方式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),而定点数则只有decimal一种表示。定点数在mysql中以字符串的形式存放,比浮点数更准确,适合用来表示货币等精度高的数据。

  浮点数和定点数都可以在类型名称后加(M,D)的方式来表示“(M,D)”表示该值一共显示M位数字(整数位+小数位)其中D位位于小数点后面,M和D又称为精度和标度。需要注意的是浮点数后面跟“(M,D)”的用法是非标准用法,如果要用于数据库的迁移,则最好不要这么使用。float和double在不指定精度时,默认会按照实际的精度(由实际的硬件和操作系统来决定)来显示,而decimal在不指定精度时,默认的整数位为10,默认小数位为0。

  浮点数如果不写精度和标度,则会按照实际精度值来显示,如果有精度和标度,则会自动将四舍五入的结果插入,系统不会报错;定点数如果不写精度和标度,则按照默认值decimal(10,0)来进行操作,并且如果数据超越了精度和标度值,系统则会报错。

  BIT(位)类型,用于存放字段值,BIT(M)可以用来存放多位二进制数,M范围从1~64,如果不写则默认为1位。对于位字段,直接使用SELECT命令将不会看到结果,可以用bin()

(显示为二进制格式)或者hex()(显示为十六进制格式)函数来进行读取。

  日期时间类型:

  MySQL中有多种数据类型可以用于日期和时间的表示,不同的版本可能有所差异,这些数据类型主要区别如下:

  1.如果用来表示年月日,通常使用DATE来表示。字节:4,最小值:1000-01-01,最大值:9999-12-31

  2.如果用来表示年月日时分秒,通常使用DATETIME来表示。字节:8,最小值:1000-01-01 00:00:00,最大值:9999-12-31 23:59:59

  3.如果用来表示时分秒,通常使用TIME来表示。字节:4,最小值:-838:59:59,最大值:838:59:59

  4.如果需要经常插入或者更新时间为当前系统时间,则通常是用TIMESTAMP来表示。TIMESTAMP值返回后显示为“YYY-MM-DD HH:MM:SS”格式的字符串,显示宽度固定位19个字符,如果想要获得数字值,应在TIMESTAMP列添加“+0”。字节:4,最小值:19700101080001,最大值:2038年的某个时刻

  5.如果中表示年份,可以使用YEAR来表示,它比DATE占用更少的空间,YEAR有2位或4位格式的年,默认为4位格式。在4位格式中,允许的值:1901-2155和0000.在2位中,允许的值:70-69,表示1970-2069年。MySQL以YYYY格式显示年YEAR值(从5.5.27开始,2位格式的year已不被支持)。字节:1,最小值:1901,最大值:2155

  每个日期时间类型都有一个有效值范围,如果超出这个范围,在默认的SQLMode下,系统会进行错误提示,并将以零值来进行存储。

  TIMESTAMP还有一个重要特点,就是和时区相关。当插入日期时,会先转换为本地时区后存放;而从数据库取出时,也同样需要将日期转换为本地时区后显示。这样,两个不同时区的用户看到的同一个日期可能不一样。

MySQL的数据类型(一)的更多相关文章

  1. MySQL数据库3 - MySQL常用数据类型

    一. MySql常用数据类型 数据类型:整数(tinyint smailint int bigint) 定点数 decimal(p,s) ------ 小数点位置固定的       ---> 数 ...

  2. Mysql常用数据类型

    Mysql常用数据类型 数字: 字符串: 时间:

  3. MySQL日期数据类型、时间类型使用总结

    MySQL日期数据类型.时间类型使用总结 MySQL日期数据类型.MySQL时间类型使用总结,需要的朋友可以参考下.   MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型    ...

  4. MySQL日期数据类型、MySQL时间类型使用总结

    MySQL:MySQL日期数据类型.MySQL时间类型使用总结 MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ------------ --- ...

  5. MySQL数据库数据类型之集合类型SET测试总结

    MySQL数据库提供针对字符串存储的一种特殊数据类型:集合类型SET,这种数据类型可以给予我们更多提高性能.降低存储容量和降低程序代码理解的技巧,前面介绍了首先介绍了四种数据类型的特性总结,其后又分别 ...

  6. mysql 的数据类型

    mysql 的数据类型(描述的是字段)三大类:一.整型:1.tinyint(M),其中M是显示宽度,需要配合zerofill,就是前面0填充,存储单位为1个字节(8位),无符文是最大能存储范围0000 ...

  7. MySQL的数据类型(转)

    MySQL的数据类型 1.整数 TINYINT: 8 bit 存储空间 SMALLINT: 16 bit 存储空间 MEDIUMINT: 24 bit 存储空间 INT: 32 bit 存储空间 BI ...

  8. mysql之数据类型

    一.概述:  所谓建表,就是声明列的过程: 数据是以文件的形式放在硬盘中(也有放在内存里的) 列:不同的列类型占的空间不一样 选列的原则:够用又不浪费: 二.mysql的数据类型: 整形:Tinyin ...

  9. MySQL/MariaDB数据类型

    1.为什么要定义MySQL数据类型 定义MySQL数据类型其实就是为了对数据进行分类,实现对不同的分类进行不同的处理 1.使系统能够根据数据类型来操作数据. 2.预防数据运算时出错.例如,通过强大的数 ...

  10. mysql的数据类型和字段属性

    本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长度 字段属性 空\不为空值:NULL.NOT NULL 主键:primary ...

随机推荐

  1. 2018-12-20 第二章Java 预习作业

    一.什么是变量?如何使用变量? 答:变量是在程序运行中其值可以改变的量,它是Java程序的一个基本存储单元. 变量的语法格式如下: [访问修饰符]变量类型 变量名[=初始值]: 二.java中基本数据 ...

  2. Redis过期设置

    Redis支持按key设置过期时间,过期后值将被删除(在客户端看来是补删除了的) 用TTL命令可以获取某个key值的过期时间(-1表示永不过期) 127.0.0.1:6379> set name ...

  3. print控制台输出带颜色文字方法

    在python开发的过程中,经常会遇到需要打印各种信息.海量的信息堆砌在控制台中,就会导致信息都混在一起,降低了重要信息的可读性.这时候,如果能给重要的信息加上字体颜色,那么就会更加方便用户阅读了. ...

  4. 学习canvas

    canvas简介 ​ <canvas> 是 HTML5 新增的,一个可以使用脚本(通常为JavaScript)在其中绘制图像的 HTML 元素.它可以用来制作照片集或者制作简单(也不是那么 ...

  5. 在asp.net中如何使用Session

    2.那么在asp.net中到底该怎么使用Session呢? Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换 ...

  6. linux定期任务cron

    做个给服务器定期检测的python程序,要python跑起来自己检测时间再执行?我想到了用cron服务. 遇到了个问题python没写绝对路径,没有执行,改了绝对路径就好了.其实人家配置文件开头写了个 ...

  7. c++链表实现学生成绩管理系统(简易版)

    #include<iostream> using namespace std; typedef struct student{ int id;//学号 string sex; string ...

  8. 【量产工具修复】U盘插上没反应,格式化提示有写保护

    最近在实验室发现师兄留下的U盘,插上电脑后打不开,弹出格式化界面,格式化的时候又提示该u盘“被写保护无法格式化”,于是打算采用量产的方法. 第一步:使用chipgenius监测u盘的芯片制造商和型号 ...

  9. Linux中如何安装配置Mysql和SVN服务端

    目标Linux系统为centOS 一.安装登陆mysql   1.直接以root用户运行:yum install mysql 和yum install mysql-server等带安装完成. 2.安装 ...

  10. day6-基础 装饰器,生成器,迭代器

    1.装饰器 定义:给其他函数装饰(添加附加功能)的函数 原则:1.不能修改被装饰的函数的源代码.    2.不能修改北庄施的函数的调用方式 实现所需要求:1.函数即便量    2.高阶函数 3.嵌套函 ...