1.事务(要么都成功,要么都失败):
例如:转账 A给B转账,B收钱,要么都成功,要么不成功。
事务原则:ACID原则
原子性,要么都成功,要么不成功
一致性,数据要保证一致
隔离性,多个用户访问数据库时,保证不会访问到他人的。
持久性,事务一旦提交,不可逆
隔离产生的问题,脏读【隔离失败,读取了另一个数据】
不可重复读
幻读:读他人插入的,导致数据不一致。
例子:模拟转账:
set autocommit = 0; -- 关闭自动
start transaction -- 开启一个事务
update account set money=money-500 where `name` = 'A';
update account set money=money+500 where `name` = 'A';
commit; -- 提交事务
rollback; -- 回滚
set autocommit = 1; -- 恢复默认值
2.索引:
主键索引 primary key
- 唯一标识,主键不可重复,只能有一个列作为主键
唯一索引 unique key
- 避免重复的列出现,唯一索引可以重复,多个列可以表示为 唯一索引
常规索引 index
- 默认的 index
全文索引 fullText
- 在特定的数据库引擎下才有,MYISAM
- 快速定位数据
-- 索引的使用
-- 1、在创建表的时候给字段增加索引
-- 2、创建完毕后,增加索引-- 显示所有的索引信息
show index from student
-- 增加一个索引
alter table student
add fulltext index `studentname` (`studentname`)-- explain 分析sql 执行状况
explain select * from student -- 非全文索引explain select * from student where match(studentname) against('刘')
-- id_表名_字段名
-- create index 索引名 on 表(`字段`)
create index id_app_user_name on app_user(`name`)
select * from app_user where `name` = '用户9999';
select * from app_user where `name` = '用户9999';
explain select * from app_user where `name` = "用户9999";
索引原则:
- 索引不是越多越好
- 不要对经常变动的数据加索引
- 小数据量的表不需要加索引
- 索引一般加在常用来查询的字段上
3.用户管理:
-- 创建用户 create user 用户名 IDENTIFIED by '密码'
create user k IDENTIFIED by "123456"-- 修改密码(修改当前用户密码)
set password = PASSWORD('123456')-- 修改密码(修改指定用户密码)
set password for k = PASSWORD('111')-- 重命名 rename user 原名字 to 新名字
rename user k to k1-- 用户授权 ALL PRIVILEGES 全部的权限 ,库,表
-- ALL PRIVILEGES 除了给别人授权,其他权限都干
grant ALL PRIVILEGES on *.* to k1
-- 查询权限
show grants for k1 -- 查询指定用户权限
show grants for root@localhost-- 撤销权限 revoke 哪些权限,在哪个库撤销,给谁撤销
revoke all PRIVILEGES on *.* from k1