MySQL学习第三天

CREATE TABLE IF NOT EXISTS USER(
id TINYINT,
)ENGINE=INNOOB CHARSET=UTF8;

之后使用desc name
你会惊奇的发现TINYINT后面多出了一个4
那是因为TINYINT可以表示128,符号也代表一位,它是数据宽度
即便你设置数据宽度为2,但是你输入是4位,最终还是显示4位

////如果查出数据的范围,会出现截断现象
比如插入-129,但在表中显示-128

////添加约束条件
a tinyint zerofile等等

//浮点型FLOAT(6,2)
如果你插入1.512,那么保存就会为1.51

SELECT @@SQL_MODE;:查看是不是严格模式

CREATE TABLE IF NOT EXISTS test1(
a CHAR(5),
b VARCHAR(5)
)ENGINE=INNOOB CHARSET=UTF8;

insert test1(a,b) values("aa","aa");
insert test1(a,b) values("bb","bb");
insert test1(a,b) values("aaaaaa","aaaaaa");
很明显你的插入第三行会报错
ERROR 1406 (22001): Data too long for column 'a' at row 1
那就证明你的MySQL的模式是严格模式
没有严格模式就可以插入
设置严格模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
检查是不是严格模式:select @@SQL_MODE
设置了严格模式对于其他类型数据都有用

////////////////////////////

select concat("*",a,"*"),concat("*",b,"*") from test3;
将表中字段为a和b的前后加上*
相当于连接字符串
char保存的时候后面空格进行填充
varchar不进行填充

//////////////////////////////

ENUM保存的是编号不是值
NULL
YES
表示可以插入空值
sex ENUM("男","女")
insert ENUM(sex) values("男")
insert ENUM(sex) values("男1")错误,只能从你列举的里面选
insert ENUM(sex) values("null")正确
insert ENUM(sex) values(1)选编号为1的值,从1开始





你可能感兴趣的:(MySQL)