二级mysql怎么考 mysql二级考试基础操作题怎么操作( 三 )


因为 VARCHAR 类型可以根据实际内容动态改变存储值的长度,所以在不能确定字段需要多少字符时使用 VARCHAR 类型可以大大地节约磁盘空间、提高存储效率 。
VARCHAR 类型在使用 BINARY 修饰符时与 CHAR 类型完全相同 。
TEXT 和 BLOB 类型
对于字段长度要求超过 255 个的情况下,MySQL 提供了 TEXT 和 BLOB 两种类型 。根据存储数据的大小,它们都有不同的子类型 。这些大型的数据用于存储文本块或图像、声音文件等二进制数据类型 。
TEXT 和 BLOB 类型在分类和比较上存在区别 。BLOB 类型区分大小写,而 TEXT 不区分大小写 。大小修饰符不用于各种 BLOB 和 TEXT 子类型 。比指定类型支持的最大范围大的值将被自动截短 。
日期和时间类型
在处理日期和时间类型的值时,MySQL 带有 5 个不同的数据类型可供选择 。它们可以被分成简单的日期、时间类型,和混合日期、时间类型 。根据要求的精度,子类型在每个分类型中都可以使用,并且 MySQL 带有内置功能可以把多样化的输入格式变为一个标准格式 。
类型 大小
(字节) 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ’-838:59:59’/’838:59:59’ HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 8 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳
DATE、TIME 和 TEAR 类型
MySQL 用 DATE 和 TEAR 类型存储简单的日期值 , 使用 TIME 类型存储时间值 。这些类型可以描述为字符串或不带分隔符的整数序列 。如果描述为字符串,DATE 类型的值应该使用连字号作为分隔符分开 , 而 TIME 类型的值应该使用冒号作为分隔符分开 。
需要注意的是,没有冒号分隔符的 TIME 类型值,将会被 MySQL 理解为持续的时间,而不是时间戳 。
MySQL 还对日期的年份中的两个数字的值,或是 SQL 语句中为 TEAR 类型输入的两个数字进行最大限度的通译 。因为所有 TEAR 类型的值必须用 4 个数字存储 。MySQL 试图将 2 个数字的年份转换为 4 个数字的值 。把在 00-69 范围内的值转换到 2000-2069 范围内 。把 70-99 范围内的值转换到 1970-1979 之内 。如果 MySQL 自动转换后的值并不符合我们的需要,请输入 4 个数字表示的年份 。
DATEYIME 和 TIMESTAMP 类型
除了日期和时间数据类型,MySQL 还支持 DATEYIME 和 TIMESTAMP 这两种混合类型 。它们可以把日期和时间作为单个的值进行存储 。这两种类型通常用于自动存储包含当前日期和时间的时间戳 , 并可在需要执行大量数据库事务和需 要建立一个调试和审查用途的审计跟踪的应用程序中发挥良好作用 。
如果我们对 TIMESTAMP 类型的字段没有明确赋值 , 或是被赋与了 null 值 。MySQL 会自动使用系统当前的日期和时间来填充它 。
复合类型
MySQL 还支持两种复合数据类型 ENUM 和 SET , 它们扩展了 SQL 规范 。虽然这些类型在技术上是字符串类型 , 但是可以被视为不同的数据类型 。一个 ENUM 类型只允许从一个集合中取得一个值;而 SET 类型允许从一个集合中取得任意多个值 。
ENUM 类型
ENUM 类型因为只允许在集合中取得一个值,有点类似于单选项 。在处理相互排拆的数据时容易让人理解,比如人类的性别 。ENUM 类型字段可以从集合中取得一个值或使用 null 值,除此之外的输入将会使 MySQL 在这个字段中插入一个空字符串 。另外如果插入值的大小写与集合中值的大小写不匹配,MySQL 会自动使用插入值的大小写转换成与集合中大小写一致的值 。

推荐阅读