MySQL数据库表的列类型
1. MySQL支持多种列类型:
数值类型、日期/时间类型、字符串(字符)类型。
1. 数值类型:
BIT[(M)],位字段类型;
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
TINYINT[(M)],很小的整数。带符号的范围是-128到127。无符号的范围是0到255。
BOOL,BOOLEAN,是TINYINT(1)的同义词。zero值被视为假。非zero值视为真。是TINYINT(1)的同义词。
SMALLINT[(M)],小的整数。带符号的范围是-32768到32767。无符号的范围是0到65535。
MEDIUMINT[(M)],中等大小的整数。带符号的范围是-8388608到8388607。无符号的范围是0到16777215。
INT[(M)],INTEGER[(M)],普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。
BIGINT[(M)]
FLOAT[(M,D)],DOUBLE[(M,D)],DECIMAL[(M[,D])],等等
2. 日期和时间类型:
DATE,日期。支持的范围为'<chsdate year="1000" month="1" day="1" islunardate="False" isrocdate="False" w:st="on">1000-01-01</chsdate>'到'<chsdate year="9999" month="12" day="31" islunardate="False" isrocdate="False" w:st="on">9999-12-31</chsdate>'。MySQL以'YYYY-MM-DD'格式显示DATE值
DATETIME,日期和时间的组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值
TIMESTAMP[(M)],时间戳。TIMESTAMP值返回后显示为'YYYY-MM-DD HH:MM:SS'格式的字符串,显示宽度固定为19个字符。
TIME,时间。范围是'-838:59:59'到'838:59:59'。MySQL以'HH:MM:SS'格式显示TIME值
YEAR[(2|4)],两位或四位格式的年。默认是四位格式。在四位格式中,允许的值是1901到2155和0000。在两位格式中,允许的值是70到69,表示从1970年到2069年。MySQL以YYYY 格式显示YEAR值
3. 字符串类型:
1)字符串数据类型的列定义可以包括指定字符集的CHARACTER SET属性
c1 CHAR(20) CHARACTER SET utf8
2)常见的字符串类型
CHAR,单个char表示CHAR(1)的同义词,字符长度为1
CHAR(M),固定长度字符串,当保存时在右侧填充空格以达到指定的长度。M表示列长度。M的范围是0到255个字符。注释:当检索CHAR值时尾部空格被删除。
BINARY(M),BINARY类型类似于CHAR类型,但保存二进制字节字符串而不是非二进制字符串。
VARCHAR(M),变长字符串。M 表示最大列长度。M的范围是0到65,535。(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定。最大有效长度是65,532字节)。注释:MySQL 5.1遵从标准SQL规范,并且不删除VARCHAR值的尾部空格。
注意:MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255(根据不同版本数据库来定)。在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字 节,也就是说,在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以使用可变长的varchar来存放,这样就能有效的减少数据库文 件的大小。
VARBINARY(M),VARBINARY类型类似于VARCHAR类型,但保存二进制字节字符串而不是非二进制字符串。但是 VARBINARY(M)中M的取值范围却不同0 <= M <= 255
TINYBLOB,最大长度为255(28–1)字节的BLOB列。
BLOB[(M)],最大长度为65,535(216–1)字节的BLOB列。
MEDIUMBLOB,
LONGBLOB
TINYTEXT
TEXT[(M)]
MEDIUMTEXT
LONGTEXT
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
ENUM('value1','value2',...),枚举类型。只能有一个值的字符串
SET('value1','value2',...)
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
关于列类型更详细信息参考:http://dev.mysql.com/doc/refman/5.1/zh/column-types.html
4.着重分析字符串类型:
1)CHAR和VARCHAR类型的不同:
CHAR为固定长度;VARCHAR为可变长度
2)BINARY和VARBINARY类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。
也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
3)BLOB和TEXT类型
a. BLOB:
二进制大对象,可以容纳可变数量的数据。
有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。
BLOB 列被视为二进制字符串(字节字符串)。
BLOB列没有字符集,并且排序和比较基于列值字节的数值值。
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
b. TEXT:
有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求.
TEXT列被视为非二进制字符串(字符字符串)。
TEXT列有一个字符集,并且根据字符集的 校对规则对值进行排序和比较。
<!--[if !supportLists]-->· <!--[endif]-->在TEXT或BLOB列的存储或检索过程中,不存在大小写转换。
<!--[if !supportLists]-->· <!--[endif]-->在大多数方面,可以将BLOB列视为能够足够大的VARBINARY列。
<!--[if !supportLists]-->· <!--[endif]-->可以将TEXT列视为VARCHAR列。
<!--[if !supportLists]-->· <!--[endif]-->BLOB和TEXT在以下几个方面不同于VARBINARY和VARCHAR:
1. 当保存或检索BLOB和TEXT列的值时不删除尾部空格。(这与VARBINARY和VARCHAR列相同)。
请注意比较时将用空格对TEXT进行扩充以适合比较的对象,正如CHAR和VARCHAR。
2. 对于BLOB和TEXT列的索引,必须指定索引前缀的长度。对于CHAR和VARCHAR,前缀长度是可选的。
VARCHAR、BLOB和TEXT类是变长类型。每个类型的存储需求取决于列值的实际长度(用前面的表中的L表示),而不是该类型的最大可能的大小。
最后需要了解:
11.5.列类型存储需求
分享到:
相关推荐
MySql数据库的列类型(字段类型).MySql数据库的列类型(字段类型).MySql数据库的列类型(字段类型).MySql数据库的列类型(字段类型).
MySql数据库的列类型(字段类型).pdf
MySql数据库的列类型(字段类型)[参考].pdf
一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action包类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...
详细介绍了mysql的不同列表类型,mysqler们可以大补一下.
1、在Java开发中,常常需要将数据库表列字段换成Java实体类字段。但是手动实现这个转换过程比较慢,且容易出错,影响开发效率。为了解决这个问题,开发了这个Java实体类字段生成工具类。 2、该工具类可以将数据库表...
熟悉MySQL环境的使用,掌握在MySQL中创建数据库和表的方法,理解MySQL支持的数据类型、数据完整性在MySQL下的表现形式,练习MySQL数据库服务器的使用,练习CREATE TABLE,SHOW TABLES,DESCRIBE TABLE,ALTER TABLE...
BIGINT 大整数,带符号的范围是-9223372036854775808到9223372036854775807 ...BLOB 最大长度为65,535(216–1)字节的BLOB列 BOOL 是TINYINT(1)的同义词。zero值被视为假。非zero值视为真 CHAR 固定长度字符串
一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action包类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...
本代码是通过java连接mysql数据库,然后获取当前数据库的所有表,以及所有表的属性(包括列名,列类型等)
Mysql数据库设计 数据库设计 MYSQL数据库设计 串转义序列 \0 NUL(ASCLL 0) \' \" \b 退格 \n 新⾏ \r 回车 \t 制表符 \\ 反斜杠 数值列类型 TINYINT 1字节 ⾮常⼩的整数 有符号值:-128⾄127 ⽆符号值:0⾄255 ...
对数据库中的表进行操作前,需要先使用该数据库:use 数据库名; 1、创建表 语法:create table 表名(数据类型 字段名,数据类型 字段名......); 可以使用comment 或 -- (空格)添加注释: 2、显示表 显示当前数据库...
mysql 数据库 从列类型到优化等很详细
4.MySQL的数据类型和建库策略详解 5.MySQL多表操作和备份处理 6.MySQL索引分类和各自用途 7.MySQL中的字符串比较函数 8.MySQL中字符串函数详细介绍 9.都出深入SELECT语句的查询功能 10.浅谈MySQL存储引擎选择InnoDB...
(列名 数据类型 [not null | null] [default 列默认值] [primary key]...) engine = 存储引擎 语法说明: []表示可选项,|表示二选一 if not exists ,加一个判断,只有该表不存在时才执行 engine=存储引擎,mysql...
一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...
课程大纲: 第1课 数据库与关系代数 综述数据库、关系代数、查询优化技术 综述数据库调优技术 预计时间1小时 第2课 数据库查询优化技术总揽 ...真正认识、掌握MySQL的查询优化技术,大步流星步入查询优化的高手之列。
数据库资料:1.创建数据库 create database 数据库名 2.查看数据库(查看所有的)...列名 数据类型 ) 是否允许为空: 如果该列设置不允许为空,那么填写数据时必须填写,否则报错 5.向表中插入数据:insert into 表名
mysql数据库创建学生表 这个SQL语句会创建一个名为 "Students" 的表,其中包括以下列: • StudentID: 学生的唯一标识,使用 AUTO_INCREMENT 进行自动递增,作为主键。 • FirstName: 学生的名字,限制为最大长度为...
为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,...