MySQL(Day02)
主键约束
- 主键:用于表示数据唯一性的字段称为主键
- 约束:就是对表字段的值添加限制条件
- 主键约束:保证主键的值唯一并且非空
- 格式: create table t1(id int primary key,name varchar(10)); 测试: insert into t1 values(1,'aaa'); insert into t1 values(1,'bbb'); //报错,不能重复 insert into t1 values(null,'ccc');//报错,不能为null insert into t1 values(2,'ddd');
主键约束+自增
- 格式: create table t2(id int primary key auto_increment,name varchar(10));
- 自增数值只增不减,从历史最大值的基础上+1
- truncate table t2; //删除表并创建新表 自增数值清零
注释 comment
- 格式: create table t3(id int primary key auto_increment comment '这是个主键',name varchar(10) comment '这是名字'); 查看注释内容: show create table t3;
`和单引号的区别
- `:用于修饰表名和字段名 create tablet4(idint,name` varchar(10));
- ':用于修饰文本
数据冗余
- 如果表设计不合理,可能会出现大量的重复数据,这种现象称为数据冗余,通过拆分表的形式解决此问题
事务
- 事务(transaction)是数据库中执行同一业务多条SQL语句的工作单元,事务可以保证多条SQL语句全部执行成功或全部执行失败。
- 第二种开启事务的方式 数据库中事务默认是自动提交的:
- 查看数据库自动提交的状态 show variables like '%autocommit%';
- 修改自动提交的状态 0关闭 1 开启 set autocommit=0;
- 修改李雷钱为50000 update user set money=50000 where id=1;
- savepoint:保存回滚点 set autocommit=1; 李雷开始是50000 begin; update user set money=10000 where id=1; savepoint s1 update user set money=20000 where id=1; savepoint s2 update user set money=30000 where id=1; rollback to s1;
- 总结事务相关指令:
- begin开启事务
- rollback 回滚事务
- commit 提交事务
- 查看自动提交状态 show variables like '%autocommit%'
- 修改自动提交状态 set autocommit=0/1;
- 保存回滚点 savepoint s1;
- 回滚到回滚点 rollback to s1;
SQL分类
DDL Data Definition Language
- 数据定义语言
- 包括: create,alter,drop,truncate
- 不支持事务
DML Data Manipulation Language
- 数据操作语言
- 包括: insert delete update select(DQL)
- 支持事务
DQL Data Query Language
- 数据查询语言
- 只包括select
TCL Transaction Control Language
- 事务控制语言
- 包括:begin,rollback commit,savepoint xxx,rollback to xxx
DCL Data Control Language
- 数据控制语言
- 用于分配用户权限相关的SQL
数据类型
- 整数类型: int(m)对应java中的int, bigint(m)对应java中的long,m代表显示长度,需要结合 zerofill使用 create table tint(id int,age int(8) zerofill); insert into tint values(1,28); select * from t_int;
- 浮点数: double(m,d) m代表总长度,d代表小数长度 76.232(m=5 d=3),decimal超高精度小数,当涉及超高精度运算时使用。
- 字符串: char(m) 固定长度 最大255 char(10) "abc" 所占长度10,varchar(m) 可变长度 最大65535 varchar(10) "abc" 所占长度3,可变长度更节省空间,固定长度执行效率略高
- varchar最大65535 但是建议保存255以内的长度,超过255使用text
- text可变长度 最大65535,
- 日期:
- data:只能保存年月日
- time:只能保存时分秒
- datetime:保存年月日时分秒,最大值9999-12-31,默认值null
- timestamp:保存年月日时分秒,最大值2038-1-19,默认值为当前时间
create table t_date(d1 date,d2 time,d3 datetime,d4 timestamp);
insert into t_date values('2018-11-15','16:58:33',null,null);
insert into t_date values ('2018-11-15','16:58:33','2018-10-18 12:30:18',null);