本教程中所使用的数据库的建表语句都在“SQL教程——索引”这篇文章中,点击链接直达:索引&建表语句
摘要:本文主要介绍SQL的DDL语法
常见的数据类型
数值型:
整型
小数:
定点数
浮点数
字符型:
较短的文本:char、varchar
较长的文本:text、blob(二进制的数据类型)
日期型
整型
#1.整型
特点:
-
如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字
-
如果插入的数值超出了整型的范围,会报out of range异常, 并且插入临界值
-
如果不设置长度,会有默认的长度。
长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用,而且加上zerofill后就是无符号了,只能是正值。
#2.小数
特点:
-
M和D都可以省略,
如果是decimal,则M默认为10,D默人为0;
如果是float和double,则会根据插入的数值的精度来确定精度。
-
定点型的精确度较高,如果要求插入的数据类型精确度较高如货币运算则考虑使用它
原则:
所选择的数据类型越简单越好,能保存数值的类型越小越好
#测试M和D
create table tab_float(
f1 float(5, 2),
f2 double(5,2),
f3 decimal(5,2)
);
插入的精度超过要求的2,f1、f2不报错但无效,f3会报错。
插入的精度低于要求的2,f1、f2、f3不报错但会自动用0填充。
字符型
char和varhcar类型
说明:用来保存MySQL中较短的字符串
M的含义:char最多保存的字符数
其它:
binary和varbinary用于保存较短的二进制
enum用于保存枚举
set用于保存集合
create table tab_es (
e1 enum('a', 'b', 'c')
s1 set('a', 'b', 'c', 'd')
);
insert into tab_es values('a', 'a,b')
它们俩的区别:
enum一次插一个,
set一次插好多个。
日期型
特点:
create table tab_date (
t1 DATETIME,
t2 TIMESTAMP
);
insert into tab_date values(now(), now());
show variables like 'time_zone';
set_time_zone = '+9:00';