1小时复习MySQL(2)

来源:互联网 发布:jpz45加强后数据105炮 编辑:程序博客网 时间:2024/06/05 10:50

数据类型

在创建表时,实际上已经使用到了数据类型概念
数据类型 在设定表格时 输入数据前需要设定 设定方式相同 略
主要分为三种: 整数类型 日期和时间类型 字符串类型

整数类型
主要有 TINYINT SMALLINT MEDIUMINT INT BIGINT
整数类型的区别是容纳最大数据的位数不同,最小的TINYINT 为255位INT 最大值可为4294967295位

浮点数类型 与 定点数类型
单精度浮点数 FLOAT 双精度浮点数 DOUBLE 对数字的存储需求不同
FLOAT 4个字节
DOUBLE 8个字节
示例
FLOAT(A,B) a是总共有几位 b是小数点后面有几位

DECIMAL定点数 存储空间由A决定,为A+2个字节
浮点数或定点数 超出精度会进行四舍五入处理

日期数据类型
YEAR 类型
可以使用4位数字格式或者4位字符串格式的数字范围为1901 到 2155
如果仅输入两位数字的话 0-69会转化为2000-2069 70-99会转化为1970-1999

TIME类型
TIME类型用在只需要时间数据的地方
格式为”HH:MM:SS” 取值范围为-838:59:59 ~ 838:59:59 小时数如此多的原因是
TIME类型可以不仅仅表示一天的时间 你可以使用 D HH:MM:SS格式输入多天的时间
则输入值为D*24+HH 注意 MM和SS的数值不能超过59的 超过数据输入则出错

DATE类型
仅需要日期 没有时间部分
以 YYYY-MM-DD 或者 YYYYMMDD 字符串格式表示的日期
取值范围为1000-01-01 ~ 9999-12-3
YY部分 支持仅两位数写入 写入规则和YEAR类型相同

特别说明 可以使用CURRENT_DATE 或者 NOW() 插入当前系统日期

DATETIME类型
该类型包含日期和时间信息的值 在存储时需要8个字节 日期格式为YYYY-MM-DD HH:MM:SS
YYYY表示年 支持两位数的输入 规则同上 MM表示月 DD表示日 HH表示小时 MM表示分钟 SS表示秒

TIMESTAMP类型
和DATETIME类型类似 只不过其存储时间的格式是以UTC世界标准时间格式保存的 存储时对当前时区进行转换
而且数据类型的限制数目更多 只有1970-01-01 00:00:01 UTC ~ 2038—01-19 03:14:07 UTC 超出范围出错

字符串类型
CHAR和VARCHAR类型

CHAR为固定长度字符串 在定义时指定字符串列长 最大为255
当定义的字符串类型不足位时,尾部的空格将会被删除掉。
超出的数值位数会被删除 保持其位数

VARCHAR类型
VARCHAR类型的存储字节数会根据你实际所输入的数据位数来决定
一般使用VARCHAR类型会节省数据空间 在InnoDB引擎下

TEXT类型 用于保存非二进制的字符串 一般文章内容 评论
ENUM类型 是一个字符串对象 其值为表创建时在列规定中枚举的一列值 语法格式 字段名 ENUM(“值1”,”值2”,…)
SET类型 是一种字符串类型 可以有零和多个值 但其特性就是没有重复值
如果输入数值中有重复值,则会自动删除 如果插入了不正确的值 MySQL会给出警告 并忽略这个值

二进制类型 (暂时用不到)
BIT类型 位字段类型 范围为1~64
BINARY类型 和 VARBINARY类型 类似于CHAR和VARCHAR类型
BLOB类型 一个二进制大对象

重点说明一下如何选择数据类型
整数数据—–INT类型
有小数 FLOAT类型 小数精度要求高 DOUBLE类型
一般语言中可能会存在浮点数的运算误差 在这种情况下 使用定点数比较好

日期与时间类型
按照需要的时间记录方式 来选择时间数据类型

CHAR与VARCHAR类型区别 (面试常考)
CHAR固定长度字符 VARCHAR是可变长度字符 CHAR会自动删除数据尾部的空格
VARCHAR不会 CHAR是固定长度 所以处理起来快 但是浪费存储空间
VARCHAR处理起来慢 但是节省存储空间

存储引擎对于CHAR和VARCHAR的影响
MyISAM 最好使用固定长度的数据列,使整个表静态化 从而使数据检索更快
InnoDB 使用VARCHAR 因为InnoDB数据表的存储格式不分固定长度和可变长度
在该引擎下,VARCHAR更加节省存储空间

ENUM 和 SET
ENUM只能用单值,其数据列表是一个枚举集合 其合法取值列表最多允许有65535个成员
SET只能取多值 其合法取值列表最多有64个成员 空字符串可以是一个元素 但只能有一个

BLOB 和 TEXT
BLOB 是二进制字符串 TEXT 是非二进制字符串 两者都可存储大容量的信息
BLOB主要存储图片 音频
TEXT只能存储纯文本文件