mysql中的DDL-常见的数据类型
1.整形****有符号:可以插入负值,无符号不可以添加符号
特点:
①列名后的类型默认是有符号的,无符号需要追加 unsigned
②插入的数值超出 报异常 1264 - Out of range value for column
③不设置长度会有默认的长度
长度是显示结果中的最大宽度,不够宽度在左边用0填充,
但是,没有关键字 zerofill 就不会显示出0,默认宽度无效显示不出来0。
如果,有关键字 zerofill 类型默认的就会变成无符号,不支持负数 unsigned 就没有意义了。
④长度规定不了范围,范围是由类型决定的。长度决定的是显示结果的样子
#1.设置有符号、无符号
CREATE TABLE tab_int(
t1 INT ZEROFILL,
t2 INT ZEROFILL
);
#查看表的结构
DESC tab_int;
#插入数据
#添加值的时候可以省略字段名,值的顺序和列的顺序一一对应
INSERT INTO tab_int
VALUES(-132);
INSERT INTO tab_int
VALUES(-13256,-123);
INSERT INTO tab_int
VALUES(123,123);
#删除表
DROP TABLE IF EXISTS tab_int;
SELECT *
FROM tab_int
2.小数
decimal可以简写为dec
特点:
①M和D。M小数位数+整数位数的=总位数,D是小数的位数
②M和D可以省略
decimal M默认值:10 D的默认值:0。超过了就会报错
float和double,会根据插入的数值的精度来决定精度
③定点型的精度较高,如果要求插入的精度较高(货币运算…)优先考虑
④其他的用float和double,为了节省空间float够用就用float
原则:
所选的类型越简单越好,能保存数值的类型越小越好
#创建表
CREATE TABLE tab_float(
f1 FLOAT(5,2),
f2 DOUBLE(5,2),
f3 DECIMAL(5,2)
);
#测试表
INSERT INTO tab_float
VALUES(123.4523,123.4523,123.4523);
#查询
SELECT * FROM tab_float
#每列下面各一个123.45
DESC tab_float;
#测试表
INSERT INTO tab_float
VALUES(123.456,123.456,123.456);
#查询
SELECT * FROM tab_float
#每列下面各一个123.46,结果四舍五入
#> Affected rows: 1出现一个警告
#测试表
INSERT INTO tab_float
VALUES(1523.4,1523.4,1523.4);
#报错> 1264 - Out of range value 超出数值范围
#删除表
DROP TABLE tab_float;
#创建表
CREATE TABLE tab_float(
f1 FLOAT,
f2 DOUBLE,
f3 DECIMAL
);
#测试表
INSERT INTO tab_float
VALUES(123.4523,123.4523,123.4523);
#> Affected rows: 1一列出错
#查询
SELECT * FROM tab_float
#查看表的结构
DESC tab_float;
3.字符型(串数据:文本型、二进制)
①字符数:一个a也是一个字符,一个汉字也是一个字符
②char的M可以省略,默认:1。固定长度的字符:类型后的固定长度,用不用都开那么多空间
varchar的M不能省略。可变长度的字符:按数据长度,开空间
③固定长度例如:
男,女存储用char
存储姓名用varchar
较长的文本
text
set用于保存集合(一次能选多个成员)
#enum枚举(男女,季节)
CREATE TABLE tab_char(
c1 ENUM(‘a’,‘b’,‘c’)
)
#插入数据
INSERT INTO tab_char
VALUES(‘a’);
INSERT INTO tab_char
VALUES(‘b’);
INSERT INTO tab_char
VALUES(‘c’);
INSERT INTO tab_char
VALUES(‘M’);
INSERT INTO tab_char
VALUES(‘A’);
#清空表中的数据
TRUNCATE TABLE tab_char
SELECT *
FROM tab_char
#set集合()
CREATE TABLE tab_set(
s1 SET(‘a’,‘b’,‘c’,‘d’)
)
#插入数据
INSERT INTO tab_set
VALUES(‘a’);
INSERT INTO tab_set
VALUES(‘a,b’);
INSERT INTO tab_set
VALUES(‘a,c,d’);
#MySQL不区分大小写
4.日期型
要求:字符和日期型要加单引号,数值型不用加
timestamp时间戳
特点
①datetime:不受时区影响,如果直插入年,默认提供时间
只能反映出插入时,当时的时区
②timestamp:受时区影响
更加接近当前时区的时间
受到当地的:实际时区、MySQL版本、SQLMode(语法模式)的影响
#创建表
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=’+8:00’;