mysql 字段类型说明


Posted in PHP onApril 27, 2007

MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式。

由MySQL支持的列类型列在下面。下列代码字母用于描述中:

M
指出最大的显示尺寸。最大的合法的显示尺寸是 255 。
D
适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30,但是应该不大于M-2。
方括号(“[”和“]”)指出可选的类型修饰符的部分。

注意,如果你指定一个了为ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性。

TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255。

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
一个小整数。有符号的范围是-32768到32767,无符号的范围是0到65535。

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。

INT[(M)] [UNSIGNED] [ZEROFILL]
一个正常大小整数。有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。

INTEGER[(M)] [UNSIGNED] [ZEROFILL]
这是INT的一个同义词。

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

一个大整数。有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到

18446744073709551615。注意,所有算术运算用有符号的BIGINT或DOUBLE值完成,因此你不应该使用大于9223372036854775807(63位)的有符号大整数,除了位函数!注意,当两个参数是INTEGER值时,-、+和*将使用BIGINT运算!这意味着如果你乘2个大整数(或来自于返回整数的函数),如果结果大于9223372036854775807,你可以得到意外的结果。一个浮点数字,不能是无符号的,对一个单精度浮点数,其精度可以是<= 24,对一个双精度浮点数,是在25 和53之间,这些类型如FLOAT和DOUBLE类型马上在下面描述。FLOAT(X)有对应的FLOAT和DOUBLE相同的范围,但是显示尺寸和小数位数是未定义的。在MySQL3.23中,这是一个真正的浮点值。在更早的MySQL版本中,FLOAT(precision)总是有2位小数。该句法为了ODBC兼容性而提供。

FLOAT[(M,D)] [ZEROFILL]
一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。M是显示宽度而D是小数的位数。没有参数的FLOAT或有<24 的一个参数表示一个单精密浮点数字。

DOUBLE[(M,D)] [ZEROFILL]
一个正常大小(双精密)浮点数字。不能无符号。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。M是显示宽度而D是小数位数。没有一个参数的 DOUBLE或FLOAT(X)(25 < = X < = 53)代表一个双精密浮点数字。

DOUBLE PRECISION[(M,D)] [ZEROFILL]
 

REAL[(M,D)] [ZEROFILL]
这些是DOUBLE同义词。

DECIMAL[(M[,D])] [ZEROFILL]
一个未压缩(unpack)的浮点数字。不能无符号。行为如同一个CHAR列:“未压缩”意味着数字作为一个字符串被存储,值的每一位使用一个字符。小数点,并且对于负数,“-”符号不在M中计算。如果D是0,值将没有小数点或小数部分。DECIMAL值的最大范围与DOUBLE相同,但是对一个给定的 DECIMAL列,实际的范围可以通过M和D的选择被限制。如果D被省略,它被设置为0。如果M被省掉,它被设置为10。注意,在MySQL3.22里, M参数包括符号和小数点。

NUMERIC(M,D) [ZEROFILL]
这是DECIMAL的一个同义词。

DATE
一个日期。支持的范围是'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列。 注:赋初值可在PHP中使用now()。

DATETIME
一个日期和时间组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MM:SS'格式来显示DATETIME值,但是允许你使用字符串或数字把值赋给DATETIME的列。

TIMESTAMP[(M)]
一个时间戳记。范围是'1970-01-01 00:00:00'到2037年的某时。MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式来显示TIMESTAMP值,取决于是否M是14(或省略)、12、8或6,但是允许你使用字符串或数字把值赋给TIMESTAMP列。一个 TIMESTAMP列对于记录一个INSERT或UPDATE操作的日期和时间是有用的,因为如果你不自己给它赋值,它自动地被设置为最近操作的日期和时间。你以可以通过赋给它一个NULL值设置它为当前的日期和时间。
TIME
一个时间。范围是'-838:59:59'到'838:59:59'。MySQL以'HH:MM:SS'格式来显示TIME值,但是允许你使用字符串或数字把值赋给TIME列。

YEAR[(2|4)]
一个2或4位数字格式的年(缺省是4位)。允许的值是1901到2155,和0000(4位年格式),如果你使用2位,1970-2069( 70-69)。MySQL以YYYY格式来显示YEAR值,但是允许你把使用字符串或数字值赋给YEAR列。(YEAR类型在MySQL3.22中是新类型。)

CHAR(M) [BINARY]
一个定长字符串,当存储时,总是是用空格填满右边到指定的长度。M的范围是1 ~ 255个字符。当值被检索时,空格尾部被删除。CHAR值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词。NATIONAL CHAR(短形式NCHAR)是ANSI SQL的方式来定义CHAR列应该使用缺省字符集。这是MySQL的缺省。CHAR是CHARACTER的一个缩写。

[NATIONAL] VARCHAR(M) [BINARY]
一个变长字符串。注意:当值被存储时,尾部的空格被删除(这不同于ANSI SQL规范)。M的范围是1 ~ 255个字符。 VARCHAR值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词值。 VARCHAR是CHARACTER VARYING一个缩写。

TINYBLOB
 
TINYTEXT
一个BLOB或TEXT列,最大长度为255(2^8-1)个字符。

BLOB
用于处理二进制文件,上传文件可以用到。

TEXT
一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符。

MEDIUMBLOB
 
MEDIUMTEXT
一个BLOB或TEXT列,最大长度为16777215(2^24-1)个字符。
LONGBLOB
 
LONGTEXT
一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。

ENUM('value1','value2',...)
枚举。一个仅有一个值的字符串对象,这个值式选自与值列表'value1'、'value2', ...,或NULL。一个ENUM最多能有65535不同的值。

SET('value1','value2',...)
一个集合。能有零个或多个值的一个字符串对象,其中每一个必须从值列表'value1', 'value2', ...选出。一个SET最多能有64个成员。

PHP 相关文章推荐
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
Nov 13 PHP
php获取301跳转URL简单实例
Dec 16 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
Sep 20 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
Symfony2学习笔记之模板用法详解
Mar 17 PHP
PHP完全二叉树定义与实现方法示例
Oct 09 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 14 PHP
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 #PHP
PHP和XSS跨站攻击的防范
Apr 17 #PHP
PHP与SQL注入攻击[三]
Apr 17 #PHP
PHP与SQL注入攻击[二]
Apr 17 #PHP
PHP与SQL注入攻击[一]
Apr 17 #PHP
使用Xdebug调试和优化PHP程序之[1]
Apr 17 #PHP
php下用GD生成生成缩略图的两个选择和区别
Apr 17 #PHP
You might like
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
PHP array_multisort() 函数的深入解析
2013/06/20 PHP
php常用ODBC函数集(详细)
2013/06/24 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
php常用的工具开发整理
2019/09/26 PHP
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
js电话号码验证方法
2015/09/28 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
深入浅析angular和vue还有jquery的区别
2018/08/13 jQuery
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
让Django支持Sql Server作后端数据库的方法
2018/05/29 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
python实现微信每日一句自动发送给喜欢的人
2019/04/29 Python
Python笔记之facade模式
2019/11/20 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
高中三年学习生活的自我评价
2013/10/10 职场文书
优秀大学生的自我评价
2014/01/16 职场文书
运动会领导邀请函
2014/02/05 职场文书
CAD制图人员的自荐信
2014/02/07 职场文书
优秀实习生感言
2014/03/01 职场文书
给校长的一封建议书
2014/03/12 职场文书
义诊活动通知
2015/04/24 职场文书