MySql数据库中字段数据类型详解(1/2)

MySQL中的列类型有三种:数值类、字符串类和日期/时间类。

从大类来看列类型和数值类型一样,都是只有三种。但每种列类型都还可细分。

下面对各种列类型进行详细介绍。

数值类的数据列类型

字段类型:
TINYINT:1字节非常小的正整数,带符号:-128~127,不带符号:0~255
SMALLINT:2字节小整数,带符号:-32768~32767,不带符号:0~65535
MEDIUMINT:3字节中等大小的整数,带符号:-8388608~8388607,不带符号:0~16777215
INT:4字节标准整数,带符号:-2147483648~2147483647,不带符号:0~4294967295
BIGINT:8字节大整数,带符号:-9223372036854775808~9233372036854775807,不带符号:0~18446744073709551615
FLOAT:4字节单精度浮点数,最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38
DOUBLE:8字节双精度浮点数,最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308
DECIMAL:M+2字节 以字符串形式表示的浮点数,它的取值范围可变,由M和D的值决定。

注意:带符号的意思就是可以用负号,可以通过设置UNSIGNED来改变。
      声明整型数据列时,我们可以为它指定个显示宽度M(1~255),如INT(5),指定显示宽度为5个字符,如果没有给它指定显示宽度,MySQL会为它指定一个默认值。显示宽度只用于显示,并不能限制取值范围和占用空间,如:INT(3)还是会占用4个字节的存储空间。
  所以,这个长度只是显示的长度,用于显示数据用的。没有其他任何作用。
    给字段指定ZEROFILL是补全的意思,这样上面设置的INT(3)显示长度就起作用了,如1就显示为001,另外它自动帮我们设置成UNSIGNED属性,也就是不能为负。
主键:给字段设置主键,主要是标示该字段的唯一性,说明这个字段的内容不能重复,如果是两个字段或者多个子都都设置主键则表示这些字段组合起来的数据是惟一的,是针对所有的字段的唯一性。

 

日期,时间型数据列类型

DATE 1000-01-01~9999-12-31 3字节(MySQL3.23版以前是4字节 ) 0000-00-00 TIME -838:59:59~838:59:59 3字节 00:00:00 DATETIME 1000-01-01 00:00:00~9999-12-31 23:59:59 8字节 0000-00-00 00:00:00 TIMESTAMP 19700101000000~2037年的某个时刻 4字节 00000000000000 YEAR YEAR(4):1901~2155 YEAR(2):1970~2069 1字节 0000

MySQL总是把日期和日期里的年份放在最前面,按年月日的顺序显示。

DATE、TIME、DATATIME数据列类型

DATE、TIME和DATATIME类型分别存放日期值、时间值、日期和时间值的组合。它们的格式分别是“CCYY-MM-DD”、“hh:mm:ss”、“CCYY-MM-DD hh:mm:ss”。

DATATIME里的时间值和TIME值是有区别的,DATATIME里的时间值代表的是几点几分,TIME值代表的是所花费的时间。当向TIME数据列插值时,需用时间的完整写法,如12分30秒要写成“00:12:30”。

TIMESTAMP数据列类型

TIMESTAMP数据列的格式是CCYYMMDDhhmmss,取值范围从19700101000000开始,即1970年1月1号,最大到2037年。它的特点是能把数据行的创建或修改时间记录下来:

如果把一个NULL值插入TIMESTAMP列,这个数据列就将自动取值为当前的日期和时间。

在创建和修改数据行时,如果没有明确对TIMESTAMP数据列进行赋值,则它就会自动取值为当前的日期和时间。如果行中有多个TIMESTAMP列,只有第一个会自动取值。

如果对TIMESTAMP设置一个确定的日期和时间值,则会使TIMESTAMP的自动取值功能失效。

TIMESTAMP默认的列宽是14,可指定列宽,以改变显示效果。但不论你指定的列宽如何,MySQL都是以4字节来存储TIMESTAMP值,也总是以14位精度来计算。

如果需要把创建时间和最近一次修改时间同时记录下来,可以用两个时间戳来记录,一个记录创建时间,一个记录修改时间。不过需记住两件事,一是要把记录修改时间的TIMESTAMP数据列放在最前面,这样才会自动取值;二是创建一条新记录时,要用now()函数来初始化创建时间TIMESTAMP数据列,这样,该TIMESTAMP数据列就不会再变化。

YEAR

YEAR是一种单字节的数据列类型,YEAR(4)的取值范围是1901~2155,YEAR(2)的取值范围是1970~2069,但只显示最后两位数。MySQL能自动把两位数字年份转换成四位数字的年份,如97和14分被转换成1997和2014。转换规则是这样的:

年份值00~69将被转换成2000~2069;

年份值70~99将被转换成1970~1999。

00被转换成0000,而不是2000。因为数值00也就是0,而0值是YEAR的一个合法取值。 BLOB和TEXT

BLOB是二进制字符串,TEXT是非二进制字符串。两者都可存放大容量的信息。

首页 1 2 末页

时间: 2024-07-30 13:03:46

MySql数据库中字段数据类型详解(1/2)的相关文章

mysql数据库中字段都是被加密了怎么查看

问题描述 mysql数据库中字段都是被加密了怎么查看 唉 新手实习生.. 有个项目数据库中的很多字段都是是sfsaf-dfasfdadfasf-fasdfas类似这种,不知道该怎么查询数据内容? 解决方案 这你要问你boss,是用什么加密的

MongoDB数据库中索引(index)详解_MongoDB

索引:特殊的数据结构,存储表的数据的一小部分以实现快速查询 优点: 1.大大减少了服务器需要扫描的数据量 2.索引可以帮助服务器避免排序或使用临时表 3.索引可以将随机io转换为顺序io 索引评估:三星(非常好) 一星:索引如果能将相关的记录放置到一起 二星:索引中数据的存储顺序与查找标准中顺序一致 三星:如果索引中包含查询中所需要的全部数据:(覆盖索引) DBA书:关系型数据库索引设计与优化 索引类别: 顺序索引 散列索引:将索引映射至散列桶上,映射是通过散列函数进行的 评估索引的标准: 访问

MySQL数据库之锁的详解

锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素.从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂.本章我们着重讨论MySQL锁机制的特点,常见的锁问题,以及解决MySQL锁问题的一些方法或建议. MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著

MySql数据库AdoDB函数实例详解(1/3)

1.GetAll方法我们可以使用GetAll方法代替Execute()方法,该方法返回的结果为一个二维关联数据,这样可以使用foreach或for循环语句处理,非常方便.另外,GetAll取得的数组与Smarty模板的foreach配合得非常好. 我们一起看下面的脚本例子:  代码如下 复制代码 <?php include_once("libs/adodb/adodb.inc.php"); // 创建一个mysql连接实例对象 $db = NewADOConnection(&qu

MySQL数据库备份和恢复详解

本文讨论 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型:MyISAM 和 Innodb,文中设计的 MySQL 版本为 5.0.22.      目前 MySQL 支持的免费备份工具有:mysqldump.mysqlhotcopy,还可以用 SQL 语法进行备份:BACKUP TABLE 或者 SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件.MyISAM 表是保存成文件的形式,因此相对比较容易备份

MySQL数据库InnoDB索引原理详解实践教程【图】

InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档).本着高效学习的目的,本篇以介绍InnoDB为主,少量涉及MyISAM作为对比. 这篇文章是我在学习过程中总结完成的,内容主要来自书本和博客(参考文献会给出),过程中加入了一些自己的理解,描述不准确的地方烦请指出. 1 各种树形结构 本来不打算从二叉搜索树开始,因为网上已经有太多相关文章,但是考虑到清晰的图示对理解问题有很大帮助,也为了保证文章完整性,最后还是加上了这部分. 先看看几种树形结构: 1 搜索二叉树

Mysql数据库配置文件my.cnf详解

basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的目录. datadir = path 从给定目录读取数据库文件. pid-file = filename 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); Init-V脚本需要使用这个文件里的进程ID结束mysqld进程. socket = filename 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(仅适用

基于mysql数据库的密码问题详解_Mysql

今儿在做实验用到mysql数据库时,用户密码忘记了,让我也是找了半天:现在给大家介绍下我自己的方法:用到了mysql自身的函数来测试的. 复制代码 代码如下: mysql> select user,password,host from user;+------+------------------+-----------+| user | password         | host      |+------+------------------+-----------+| root | 7

MySQL中CURRENT_TIMESTAMP数据类型详解

例 1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()  代码如下 复制代码 mysql> select current_timestamp, current_timestamp(); +---------------------+---------------------+ | current_timestamp | current_timestamp() | +---------------------+------------