/*
小总结:
SQL分类:
dcl:数据控制语言
grant revoke commit ROLLBACK
ddl:数据定义语言(元数据 结构
create drop alter
dml:数据操纵语言(数据
insert DELETE update SELECT
*/
例子:
create table t_user(
id int primary key auto_increment COMMENT 'id自增长',
username VARCHAR(100) UNIQUE not NULL COMMENT '用户名',
password VARCHAR(100) not NULL COMMENT '密码',
email VARCHAR(100) COMMENT '邮箱',
phone VARCHAR(20) COMMENT '电话',
question VARCHAR(200) COMMENT '找回密码的问题',
answer VARCHAR(200) COMMENT '找回密码的答案',
role int DEFAULT 0 COMMENT '角色',
createTime timestamp DEFAULT NOW() COMMENT '创建时间',
updateTime datetime COMMENT '更新时间'
)auto_increment=10000 DEFAULT charset=utf8;
要素整理:
1.id自增长
添加 auto_increment 自增长
添加 primary key 设为主键
添加 COMMENT ‘id自增长’ 添加备注
id int primary key auto_increment COMMENT 'id自增长',
2.长文章/富文本
不使用varchar,数据类型更替为text
des text COMMENT ‘描述文本’
3.数据唯一(适用于用户名等)
添加 UNIQUE 属性数据唯一
添加 not NULL 属性非空
username VARCHAR(100) UNIQUE not NULL COMMENT '用户名',
3.默认值
添加 DEFAULT 0 提供默认值0
role int DEFAULT 0 COMMENT '角色',
4.数据类型:规定数字位数与小数点后位数(适用于价格)
添加 decimal(20,2) (位数,小数点后位数)
price decimal(20,2) DEFAULT 0 COMMIT ‘价格’
5.当前时间
直接使用 now() mysql已经封装好的方法
可以和DEFAULT搭配使用:DEFAULT NOW() 默认值当前时间
createTime timestamp DEFAULT NOW() COMMENT '创建时间',
注意:
这里的数据类型是timestamp 不是date或datetime
否则会报错:
error: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
Invalid default value for ‘createtime’
因为createtime是获取当前时间 应该用时间戳,而不是datetime,类型应该改成timestamp