MySQL-02——主键、注释、事务、数据类型相关
1、主键约束
主键: 用于表示唯一性的字段称为主键
约束: 创建表时给字段添加的限制条件
主键约束: 让字段不能重复并且不能为空(唯一且非空)
格式:
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
主键约束+自增
- 从历史最大值基础上+1
- 自增数值只增不减
- 格式:
create table t2(id int primary key auto_increment , name varchar(10));
2、注释comment
- 给字段添加的描述
- 格式:
create table t3(id int primary key auto_increment comment '这是个id',name varchar(10) comment '这是名字'); - 通过
show create table t3;//查看注释
3、` 的作用
- 用于创建表时修饰表名和字段名,可以省略
create table ``t4`` ( ``id`` int);
4、冗余
- 由于表设计不够合理,导致出现的大量重复数据,称为数据冗余,通过合理拆分表的形式解决冗余问题
5、is null和is not null
- 判断字段值为null不能用=,要使用
is null
6、验证事务回滚流程:
1.开启事务:
begin;2.蝙蝠侠 -100:
update user set money=money-100 where id=2 and status='正常';3.此时开启另外一个终端查询数据是否发生改变(没变,改变的是内存数据)
4.超人+100:
update user set money=money+100 where id=1 and status='正常';5.此时判断出两条SQL只成功了-条,所以需要将内存中的改动回滚: rollback;
7、验证事务提交流程:
insert into user values(3, '灭霸', 8888, '正常');
1.开启事务:
begin;2.灭霸- 5000:
update user set money=money-5000 where id=3 and status=' 正常';3.蝙蝠侠+5000:
update user set money=money+5000 where id=2 and status='正常';4.经过判断两条SQL全部执行成功,此时可以将内存中的改动一次性 提交到磁盘中:
commit;
事务补充:
事务的四大特性ACID:是保证事务正确执行的四大基本要素
- Atomicity:原子性,最小不可拆分,保证全部执行成功或全部失败
- Consistency:一致性,从一个一致状态到另一个一致状态
- Isolation:隔离性,多个事务之间互相隔离,互不影响。
- Durability:持久性,事务提交之后数据保存到磁盘中持久生效
SQL分类
1. DDL :
Data Definition Language, 数据定义语言包括: create、drop、alter、truncate 不支持事务
(truncate table 表名;删除表并创建新表,比 删除全表数据执行效率高,删除数据自增数值不变,这种方式自增数值清零)
2. DML :
Data Manipulation Language, 数据操作语言包括:insert、 delete、update、select (DQL)支持事务
3. DQL :
Data Query Language, 数据查询语言 只包括select。
4. TCL :
Transaction Control Language, 事务控制语言包括: begin、 commit、rollback、savepoint xxx、rollback to XXX
5. DCL:
Date Control Language, 数据控制语言
数据类型
1.整数:
int(m) bigint(m) , bigint对应java中的long,m代表显示长度
create table t_ int(id int,age int(10) zerofill);
insert into t_int values(1,18);
select * from t_int;
2.浮点数:
double(m,d) m代表总长度d代表的是小数长度,25.321 m=5,d=3 , decimal(m,d)是超高精度浮点数只有涉及超高精度运算时使用
3.字符串:
char(m):固定长度, char(10), abc 10, 执行效率高
varchar(m):可变长度, varchar(10), abc 3, 节省空间,最大长度65535, 一般超过255建议使用text;
text(m):可变长度最大长度65535
4.日期:
date:只能保存年月日
time:只能保存时分秒
datetime:保存年月日时分秒,默认值为null,最大值9999-12-31
timestamp:时间戳(距1970年1月1日 08 : 00 : 00毫秒数)保存年月日时分秒