列类型概述

数据库中的每个表都是由一个或多个列构成的。可以用 CREATE TABLE 语句创建一个表,创建表时要为每列指定一个类型。列的类型与数据类型相对应,但是比数据类型更为具体,用列类型描述表列可能包含的值的种类以及范围,列的值必须符合规定,不能包含对应的数据类型所允许的所有值。例如,CHAR(16)就规定了存储的字符串值必须是16位。当然不是你必须存储16个字符,而是指列在表中要占16个字符的宽度的。

MySQL的列类型是一种手段,通过这种手段可以描述一个表列包含什么类型的值,这又决定了 MySQL 怎样处理这些值。例如,数值值既可用数值也可用串的列类型来存放,但是根据存放这些值的类型,MySQL 对它们的处理将会有些不同。每种列类型都有几个特性如下:

  • 其中可以存放什么类型的值。
  • 值要占据多少空间,以及该值是否是定长的(所有值占相同数量的空间)或可变长的(所占空间量依赖于所存储的值)。
  • 该类型的值怎样比较和存储。
  • 此类型是否允许 NULL 值。
  • 此类型是否可以索引。

下面是创建一个表的例子:

CREATE TABLE teacher

(

id TINYINT UNSIGNED NOT NULL,

name CHAR(16) NOT NULL,

tele NUMERIC(8),

sex ENUM("F","M") DEFAULT "M"

)

由上面这个例子可以知道,创建列类型的语法是:

col_name col_type [col_attributes][general_attributes]

  • col_name 列的名字
  • col_type 列类型,控制存储在列中的数据类型
  • col_attributes 专用属性,只能应用于制定列,例如,我们还不知道的BINARY。如果你使用专用属性,必须在列的类型之后,列的通用属性之前。
  • general_attributes通用属性,可以应用在出少数列的任意列,例如上面提到了NULL、NOT NULL、和DEFAULT。

我们将简要地考察一下 MySQL列类型以获得一个总的概念,然后更详细地讨论描述每种列类型的属性。

MySQL的数字类型如表1-3所示,可以包括浮点类型和整数类型:

表1-3 MySQL的数字列类型


类型名


涵义


TINYINT


一个很小的整数


SMALLINT


一个小整数


MEDIUMINT


一个中等大小整数


INT、INTEGER


一个正常大小整数


BIGINT


一个大整数


FLOAT


一个小(单精密)浮点数字


DOUBLE

DOUBLE PRECISION

REAL


一个正常大小(双精密)浮点数字


DECIMAL

NUMERIC


一个未压缩(unpack)的浮点数字,“未压缩”意味着数字作为一个字符串被存储

MySQL的字符串类型如表1-4所示,串类型中不仅可以存储字符串,实际上任何二进制数据,例如,图象、音频、视频等,都可以存储在串类型中。

表1-4 MySQL的字符串列类型


类型名


涵义


CHAR


一个定长字符串


VARCHAR


一个变长字符串


TINYBLOB

TINYTEXT


最大长度为255(2^8-1)个字符的BLOB或TEXT列


BLOB

TEXT


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


MEDIUMBLOB

MEDIUMTEXT


最大长度为16777215(2^24-1)个字符的BLOB或TEXT列


LONGBLOB

LONGTEXT


最大长度为4294967295(2^32-1)个字符的BLOB或TEXT列


ENUM(‘value1‘,‘value2‘,...)


枚举:列只能赋值为某个枚举成员或NULL


SET(‘value1‘,‘value2‘,...)


集合:列可以赋值为多个集合成员或NULL

MySQL的日期与时间类型如表1-5所示。MySQL允许你存储某个“不严格地”合法的日期值,例如1999-11-31,原因我们认为它是应用程序的责任来处理日期检查,而不是SQL服务器。为了使日期检查更“快”,MySQL仅检查月份在0-12的范围,天在0-31的范围。

表1-5 MySQL的时间和日期列类型


类型名


涵义


DATE


一个日期,以‘YYYY-MM-DD‘格式来显示


TIME


一个日期和时间组合,以‘YYYY-MM-DD HH:MM:SS‘格式来显示


DATETIME


最大长度为255(2^8-1)个字符的BLOB或TEXT列


TIMESTAMP


一个时间戳,

以YYYMMDDHHMMSS格式来显示

时间: 2024-08-01 15:53:32

列类型概述的相关文章

MySQL支持的列类型

MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述.概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式. 由MySQL支持的列类型列在下面.下列代码字母用于描述中: M 指出最大的显示尺寸.最大的合法的显示尺寸是 255 . D 适用于浮点类型并且指出跟随在十进制小数点后的数码的数量.最大可能的值是30,但是应该

一些列类型还有属性

列类型 数值型 int tinyint 1字节 -128 127 smallint 2字节 mediumint 3字节 int 4字节 bigint 8字节 unsigned 表示无符号位 小数型 float 4字节 38 double 8字节 308 decimal货币型 decimal(m,d) md最大65 d最大是30 整数35 字符串 char() 默认是1,最大取值255 varchar 最大值是65535个字符 实际能存储的字符的个数: 1.字符集, 2.MySQL一条记录长度65

数据表的列类型

列类型 文本类型 enum(枚举类型) 语法: enum(值列表); 说明: 值是使用逗号分隔多个值 值列表中的值的个数最多是65535个 作用是规范数据,节省空间. 类比于form表单中的单选按钮 示例: 示例: 原理: ???? set集合类型 语法: ????set(值列表); 说明: 值是使用逗号分隔多个值 值列表中的值的个数最多是64个 作用是规范数据,节省空间. 类比于form表单中的多选按钮 字段的数据型是一个字符串,相当于将值列表中的多个值拼接成一个字符串,值的顺序可以是任意 示

Redis研究(四)—散列类型

散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型. 散列类型不能嵌套其他的数据类型.一个散列类型键可以包含至多2^32-1个字段. 一.介绍 散列类型适合存储对象:使用对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值. 如果要关系数据中存储汽车对象: 数据是以二维表的形式存储的,这就要求所有的记录都有同样的属性,无法单独为某条记录增减属性.如果想要为ID为1的汽车增加生产日期属性,就需要把数据表更改

mysql之数据表列类型和列约束一

mysql数据表在定义列时,需要确定列的数据类型,以及列的相关属性或是说约束,那么mysql的列类型大致可分为如下: 列类型可分为如下: 1.数值类型 又分为整数和小数 2.时间和日期类型 3.字符类型 稍微有C基础的同学应该不是很陌生,这里呢我不会讲解太多,稍微解释一下就行. 整数部分 整数部分要注意的地方就是字节以及有符号和无符号的区别 我们知晓1byte=8bit 那么2的8次方就是0-255之间 有进制转换的同学应该知道了,那么有符号和无符号是指他需要1位来标识正负数,所以要减去1位,自

MyBatis 中无效的列类型 整形

在使用Mybatis时,不同的xml配置文件,有的会提示:无效的列类型: 通过观察,如果是参数是Map类型或者Java Object类型,如果Map或者Object里面的属性类型不一致,如有些属性是String类型,有些属性是Integer类型,那么MyBatis解析的时候,就会出现问题,类型无法识别. 当然,如果传入参数不是Map或者Java Object,而是多个参数列表的形式,如果参数类型一致,那么不会出现问题,如果参数类型不一致,如既有String类型,也有Integer类型,那么解析的

框架中无效的列类型异常分析

org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #5 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的

Mybatis:使用bean传值,当传入值为Null时,提示“无效的列类型”的解决办法

问题描述: 在使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='pxh',

Mysql列类型

数值型 整型: tinyint:微小的列类型,1个字节,默认有符号,存储范围:-128--127 可选属性:tingyint(M) unsigned zerofill M:宽度(在0填充(zerofill)时才有效),只是显示效果,不影响实际数据的存储范围;unsigned:无符号类型 注意:如果某列是zerofill,那么则是unsigned. smallint:2个字节 mediumint:3个字节 int:4个字节 bigint:8个字节 举例: 创建一个表: 1 create table