DDL语言—数据定义语言
仅作为学习笔记,学习资源来源于B站视频:BV1xW411u7ax
数据类型
一、数值型
1、整型
分类:
类型 | tinyint | smallint | mediumint | int/integer | bigint |
---|---|---|---|---|---|
字节 | 1 | 2 | 3 | 4 | 8 |
特点:
- 如果不设置无符号还是有符号(负数),默认是有符号,如果想设置无符号,需要添加unsigned关键字
- 如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值
- 如果不设置长度,会有默认的长度;长度代表了显示的最大宽度,如果设置长度并规定用零填充,则搭配ZEROFILL
DROP TABLE IF EXISTS tab_int;
CREATE TABLE tab_int(
x1 INT(7) ZEROFILL,
x2 INT(7) UNSIGNED
);
DESC tab_int;
2、浮点型
分类:
- 浮点型: float(M,D)、double(M,D)
- 定点型: decimal(M,D)
特点:
- M:整数部位+小数部位
- D:小数部位 如果超过范围,则插入临界值
- M和D都可以省略。如果是decimal,则M默认为10,D默认为0;如果是float和double,则会根据插入的数值的精度来决定精度
- 定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用
二、字符型
分类:
(1)较短的文本
- char
- varchar
- binary和varbinary用于保存较短的二进制
- enum用于保存枚举,不区分大小写
- set用于保存集合
(2)较长的文本
- text
- blob(较大的二进制,图片)
char与varchar比较:
写法 | M的意思 | 特点 | 空间的耗费 | 效率 |
---|---|---|---|---|
char(M) | 最大的字符数,可以省略,默认为1 | 固定长度的字符 | 比较耗费 | 高 |
varchar(M) | 最大的字符数,不可以省略 | 可变长度的字符 | 比较节省 | 低 |
enum与set例子:
CREATE TABLE tab_char(
c1 ENUM('a','b','c')
);
# 只能添加'a'、'b'、'c'或其大写,其余报错
CREATE TABLE tab_set(
s1 SET('a','b','c','d')
);
# 只能添加'a','b','c','d'或其大写的子集
INSERT INTO tab_set VALUES('a,c,d');
三、日期型
分类:
- date 只保存日期
- time 只保存时间
- year 只保存年
- datetime 保存日期+时间
- timestamp 保存日期+时间
datetime与timestamp比较:
字节 | 范围 | 时区等的影响 | |
---|---|---|---|
datetime | 8 | 1000—9999 | 不受 |
timestamp | 4 | 1970—2038 | 受 |
CREATE TABLE tab_date(
t1 DATETIME,
t2 TIMESTAMP
);
INSERT INTO tab_date VALUES(NOW(),NOW());
SELECT * FROM tab_date;
# 查看当前时区
SHOW VARIABLES LIKE 'time_zone';
# 更改时区为东九区
SET time_zone='+9:00';
# timestamp会增加一小时,datetime不变