方括号中的属性可以在DDL语句中控制COLUMN的详细属性
一、整数型
1.INT[(width)][UNSIGNED][ZEROFILL]
MySQL用4 bytes存储INT型数据,其值在-2,147,483,648到2,147,483,647之间,如果选择了UNSIGNED类型,那么值在0到4,294,967,295。INT和INTEGER可以互换。(width)指定了数字的位数,如果实际的值超出了这个位数,那么(width)会被忽略。如果是UNSIGEND,通过指定ZEROFILL会由0在左侧占位补足
2.BOOLEAN
也可以写为BOOL或BIT,需要1个byte空间,用来存储boolean value,false(zero)或者true(nonzero),等价于TINYINT(1)
3.TINYINT[(width)][UNSIGNED][ZEROFILL]
需要一个byte空间,值的范围在-127到128或0到255
4.SMALLINT[(width)][UNSIGNED][ZEROFILL]
需要2bytes空间,值的范围在-32768到32767或者0到65535
5.MEDIUMINT[(width)][UNSIGNED][ZEROFILL]
需要3个byte,范围在-8,388608到8,388,607或者0到16,777,215
6.BIGINT[(width)][UNSIGNED][ZEROFILL]
需要8个byte,范围在-9,223,372,036,854,775,808到9,223,372,036,854,775,807或0到18,446,744,073,709,551,615
二、浮点数型
1.DECIMAL[(width[,decimals])][UNSIGNED][ZEROFILL]
也可以使用关键字DEC,NUMERIC,FIXED。在5.0.3版本以前,是作为string来存储的。从5.0.3版本以后,采用二进制存储,对每9位数字用4bytes存储。和INT不同,DECIMAL能存储的值是由(width,decimal)来确定的,超过的值会保存为指定范围内最接近的值。在5.0.3版本以前,正数的存储范围还可以比指定的范围在整数部分多1位
2.FLOAT[(width,decimals)][UNSIGNED][ZEROFILL] or FLOAT[(precision)][UNSIGNED][ZEROFILL]
默认的,FLOAT是一个4byte的单精度浮点值。当precision在0到24之间时,FLOAT就采用默认形式,当precision在25到53之间时,相当于DOUBLE。width不影响数据存储,只影响显示
3.DOUBLE[(width,decimals)][UNSIGNED][ZEROFILL]
默认为8byte双精度浮点值,width同样只影响显示。也可以写为REAL或DOUBLE PRECISION
三、时间和日期
1.DATE
存储和显示的范围在1000-01-01到9999-12-31之间,MySQL始终以YYYY-MM-DD的格式显示数据
输入可以采用以下格式
(1)YYYY-MM-DD or YY-MM-DD
如果以YY输入,70-99被解释为1970-1999,00-69被解释为2000-2069
(2)YYYY/MM/DD, YYYY:MM:DD, YY/MM/DD
可以使用任何标点(punctuation characters)作为分割符
(3)YYYY-M-D, YYYY-MM-D, or YYYY-M-DD
(4)YYYYMMDD or YYMMDD
如果输入的日期超出了范围,MySQL会保存为0000-00-00(zero date)。另外,从5.0.2版本开始,对无效日期,也会保存为zero date
2.TIME
存储的范围在-838:59:59到838:59:59,即34天,22小时,59分,59秒。如果输入值超出了范围,会被存储为最接近的值。如果在某个部分无效,会被存储为00:00:00
输入可以用以下格式
(1)DD HH:MM:SS, HH:MM:SS; DD HH:MM, HH:MM; DD HH; SS
(2)H:M:S, 可以为1-3位数字
(3)HHMMSS, MMSS, SS
3.TIMESTAMP
以YYYY-MM-DD HH:MM:SS的格式存储和显示一个日期-时间对。存储的范围从1970-01-01 00:00:00到2037年的某个时间。但这个类型具体的含义在MySQL的各个版本中都略有不同。TIMESTAMP可以在INSERT或UPDATE表时,被一同自动更新为当前时间。但对每张表,只有一个TIMESTAMP是可以自动更新的。如果有多个TIMESTAMP型的COLUMN,需要将其他的COLUMN置一个constant default(such as DEFAULT 0)。如果要在INSERT时自动设置,需要在建表时指定为DEFAULT CURRENT_TIMESTAMP,如果需要在UPDATE时也自动更新,需要在建表时指定为ON UPDATE CURRENT_TIMESTAMP。如果两者都要,则都要指定。
DEFAULT NULL对表中的第一个TIMESTAMP,会被解释为DEFAULT CURRENT_TIMESTAMP,对后面的TIMESTAMP, 会被解释为DEFAULT 0。
输入可以采用以下格式
(1)YYYY-MM-DD HH:MM:SS or YY-MM-DD HH:MM:SS,可以采用其他标点作分隔符
(2)YYYYMMDDHHMMSS or YYMMDDHHMMSS
4.YEAR[(digits)]
需要1个byte,digits可以为2或4,默认为4。2digits存储的范围为70到69,即1970-2069;4digits存储的范围1901-2155,也包括0000,无效值都会被转化为0000
5.DATETIME
也是时间-日期对,同TIMESTAMP相比只是没有了自动更新的特性。范围从1000-01-01 00:00:00到9999-12-31 23:59:59。如果用一个date赋值,time部分会被设为00:00:00;如果用一个time赋值,date部分会被设为0000-00-00。输入可以采用的形式与TIMESTAMP相同
四、字符
1.CHAR[(width)]
width默认为1,最大值为255,超过255会被转化为最小的TEXT。可以定义CHAR(0),只能包含NULL或者""(empty string)两种值,它只需要一个bit来存储。另外,字符串中的trailing spaces都会被忽略掉。
2.VARCHAR[(width)]
变长字符串,width最大为65,535,在5.0.3版本前为255。另外需要1到2个byte来存储字符串长度。超过长度限制会被转为最小的TEXT。在存储是trailing spaces同样会被去掉
3.BINARY(width) and VARBINARY(width)
与CHAR或VARCHAR等效,只不过是以二进制存储。从4.1.2版本引入,在4.1.2以前版本,可以通过在CHAR或VARCHAR后面指定BINARY关键字获得这一特性
4.BLOB
以二进制形式存储大型数据,最大长度为65535bytes。对字符串不会去除trailing spaces,不允许DEFAULT clause
5.TEXT
存储大型string,最大长度也是65535bytes。同BLOB相比,TEXT有字符集属性,排序是大小写无关的
6.TINYBLOB and TINYTEXT
最大长度255bytes的BLOB和TEXT
7.MEDIUMBLOB and MEDIUMTEXT
16,777,215bytes的BLOG和TEXT
8.LONGBLOB and LONGTEXT
最大长度4gigabytes的BLOG和TEXT,有效长度取决于server的内存配置等
9.ENUM('value1'[,'value2'[, ... 'valuen]])
string的枚举,最多包含65535个不同的枚举值。在输入和显示时都是string,但数据库内部存储实际是INTEGER。另外,ENUM还可以包含NULL(stored as NULL)和empty string ''(stored as 0),其他有效的枚举值则为1,2,...n。通过声明NOT NULL,是ENUM拒绝接受NULL。另外,无效的枚举值会被保存为''
10.SET('value1'[,'value2'[, ... 'valuen]])
输入和显示是string,数据库内部同样以INTEGER存储。最多存储64个元素,无效的元素也会被保存为''。SET和ENUM的区别是ENUM只能保存枚举值中的一个,而SET可以同时保存多个元素
分享到:
相关推荐
### MySQL学习笔记—索引详解 #### 索引的重要性 在MySQL中,索引扮演着极其重要的角色,尤其在处理大数据量时更是如此。合理的索引设计不仅可以大幅提升查询性能,还能有效降低服务器资源消耗。根据给定的信息,...
MySQL中的索引是一种数据库优化工具,它极大地提高了数据查询的速度,尤其在大数据量的表中。每个表最多可以有16个索引,且每个索引的总长度至少为256字节,但大多数存储引擎允许更高的限制。 首先,我们要理解索引...
### MySQL核心技术学习笔记 #### 一、为什么要学习数据库 学习数据库的重要性主要体现在以下几个方面: 1. **持久化数据到本地**:数据库能够将应用程序产生的数据持久化存储在磁盘上,即使系统重启也不会丢失...
4. **数据类型**: MySQL支持多种数据类型,包括整数类型(如INT)、浮点数类型(如FLOAT)、字符串类型(如VARCHAR)、日期和时间类型(如DATE、TIME)等,选择合适的数据类型至关重要。 5. **操作数据**: SQL的...
每一列都有特定的数据类型,如整数、字符串、日期时间等。 3. SQL语句: - SELECT:用于从表中检索数据,可以指定多个字段,并使用WHERE子句进行条件筛选。 - INSERT:插入新记录到表中,指定表名和要插入的值。 ...
2. 数据类型:MySQL支持多种数据类型,如整数类型(INT、BIGINT等)、浮点数类型(FLOAT、DOUBLE)、字符串类型(VARCHAR、CHAR)、日期时间类型(DATE、TIME、TIMESTAMP)等,选择合适的数据类型对于存储和检索数据...
- DDL(数据定义语言):用于创建和管理数据库对象,如库和表,以及定义数据类型和约束。 - TCL(事务控制语言):涉及事务处理,确保数据一致性。 - 视图:创建虚拟表,简化复杂的查询。 - 变量:在MySQL中使用变量...
这份“MySQL学习笔记”将引导我们深入理解其核心概念和实用技能。 一、MySQL简介 MySQL是一个开源、免费的数据库系统,由瑞典的MySQL AB公司开发,后被Oracle公司收购。它的设计目标是速度、可移植性和简洁性,支持...
### MySQL基础知识概览 #### 一、数据库概念与SQL语言 - **数据库**: 可以理解为一个存储...以上概述了MySQL的基础概念、安装配置流程以及常见的数据类型。希望这些内容能够帮助您更好地理解和掌握MySQL的基础知识。
MySQL Connector/J是类型4的纯Java驱动,无需依赖本地库,因此具备平台无关性。 2. **MySQL Connector/J 5.1.36**: - 这个版本的驱动支持MySQL 5.0到5.6版本的数据库服务器。 - 它包含了一些性能改进和bug修复,...
- 优化查询:避免全表扫描,使用索引,合理设计数据类型和表结构。 - 优化存储引擎:InnoDB提供事务处理和外键支持,MyISAM适合读取密集型应用。 - 优化参数配置:调整内存使用、连接数限制、缓冲区大小等。 - ...
MySQL 学习笔记 MySQL 安装 MySQL 的安装非常简单,首先需要下载 MySQL 的安装包,下载路径是 https://dev.mysql.com/downloads/mysql/,可以选择要在什么平台使用 MySQL,然后点击下载。下载后直接解压到一个...
首先,"mysql学习笔记.doc"很可能是核心的学习资料,它可能包含了MySQL的基础概念、安装与配置、SQL语言基础、数据类型、数据库设计、表的创建与管理、索引、视图、存储过程、触发器、事务处理、备份与恢复、性能...
MySQL 是一款广泛使用的开源关系型数据库管理系统,其学习笔记涵盖了多个关键知识点。以下是对这些知识点的详细解释: 1. **MySQL 体系架构** - **网络连接层**:处理客户端的连接请求,包括连接管理、认证和安全...
### MySQL学习笔记知识点详解 #### 一、数据库概述 数据库是指按照特定的数据结构来组织、存储和管理数据的集合体。随着信息技术的进步和社会需求的增长,数据库已经从最初的简单存储发展成为用户所需的各种复杂...
mysql入门学习笔记整理,如何创建数据库、查看数据库,删除数据库,创建表和对表字段类型操作、约束、mysql数据类型整理
这份“MYSQL学习资源及笔记-入门必备”压缩包文件显然包含了帮助初学者掌握MySQL基础知识的各种资料。下面,我们将深入探讨MySQL的一些核心概念和关键知识点。 1. **MySQL基础知识** - **数据库与表**:MySQL中的...
### MySQL学习笔记1-数据库基础.md #### 一、数据库基础 1. **数据库的概念与作用** - **数据的存储、管理和查询**:数据库是一个长期存储在计算机内的、有组织的、可共享的数据集合。它能够有效地组织、管理、...
3. **JSON支持**:MySQL 8.0增强了对JSON数据类型的处理能力,允许在关系数据库中存储和查询非结构化数据。 4. **在线DDL**:允许在不中断服务的情况下执行数据定义语言(DDL)操作,如创建或修改表。 5. **InnoDB...
理解JOIN操作、索引和事务处理也是MySQL学习的重要部分。 【JavaScript与jQuery】 JavaScript是一种在客户端运行的脚本语言,常用于网页交互和动态效果。`var_dump()`在JavaScript中对应的可能是`console.log()`,...