数据类型
SQL中将数据类型分成了三大类: 数值类型, 字符串类型和时间日期类型
数值型
系统将数值型分为整数型和小数型
整数型
存放整型数据: 在SQL中因为更多要考虑如何节省磁盘空间, 所以系统将整型又细分成了5类:
tinyint: 迷你整型,使用一个字节存储, 表示的状态最多为256种(常用)
smallint: 小整型,使用2个字节存储,表示的状态最多为65536种
mediumint: 中整型, 使用3个字节存储
int: 标准整型, 使用4个字节存储(常用)
bigint: 大整型,使用8个字节存储
小数型
带有小数点或者范围超出整型的数值类型.
SQL中: 将小数型细分成两种: 浮点型和定点型
浮点型: 小数点浮动, 精度有限,而且会丢失精度
定点型: 小数点固定, 精度固定, 不会丢失精度
浮点型
浮点型数据是一种精度型数据: 因为超出指定范围之后, 会丢失精度(自动四舍五入)
浮点型: 理论分为两种精度
Float: 单精度, 占用4个字节存储数据, 精度范围大概为7位左右
Double: 双精度,占用8个字节存储数据, 精度方位大概为15位左右
定点型
定点型: 绝对的保证整数部分不会被四舍五入(不会丢失精度),小数部分有可能(理论小数部分也不会丢失精度)
时间日期类型
Datetime: 时间日期, 格式是YYYY-mm-dd HH:ii:ss,表示的范围是从1000到9999年,有0值: 0000-00-00 00:00:00
Date: 日期,就是datetime中的date部分
Time: 时间(段), 指定的某个区间之间, -时间到+时间
Timestamp: 时间戳, 并不是时间戳,只是从1970年开始的YYYY-mm-dd HH:ii:ss格式与datetime完全一致
Year: 年份,两种形式, year(2)和year(4): 1901-2156
字符串类型
在SQL中,将字符串类型分成了6类: char、varchar、text、blob、enum和set
定长字符串(char)
定长字符串: char, 磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度.
char(L): L代表length, 可以存储的长度, 单位为字符, 最大长度值可以为255.
char(4): 在UTF8 环境下,需要4 * 3 = 12个字节
变长字符串(varchar)
变长字符串: varchar, 在分配空间的时候, 按照最大的空间分配: 但是实际上最终用了多少,是根据具体的数据来确定.
varchar(L): L表示字符长度 理论长度是65536个字符, 但是会多处1到2个字节来确定存储的实际长度: 但是实际上如果长度超过255,既不用定长也不用变长, 使用文本字符串text
varchar(10): 的确存了10个汉字, utf8环境, 10 * 3 + 1 = 31(bytes)
存储了3个汉字: 3 * 3 + 1 = 10(bytes)
文本字符串
如果数据量非常大, 通常说超过255个字符就会使用文本字符串
文本字符串根据存储的数据的格式进行分类: text和blob
Text: 存储文字(二进制数据实际上都是存储路径)
Blob: 存储二进制数据(通常不用)
枚举字符串
枚举: enum, 事先将所有可能出现的结果都设计好, 实际上存储的数据必须是规定好的数据中的一个.
枚举的使用方式
定义: enum(可能出现的元素列表); //如enum(‘男’,’女’,’不男不女’,’妖’,’保密’);
使用: 存储数据,只能存储上面定义好的数据
集合字符串
集合跟枚举很类似: 实际存储的是数值,而不是字符串(集合是多选)
集合使用方式:
定义: Set(元素列表)
使用: 可以使用元素列表中的元素(多个), 使用逗号分隔