1.事务
特点:ACID(原子性 一致性 隔离性 持久性)
例子:银行转账。
update account set moeny=money-100 where aid='001';
update account set money=money+100 where aid='002';
上面是正常执行的情况,然而如果发生了异常的话,比如:
update account set money=money-100 where aid='001';
update account set moneys=money+100 where aid='002';
money不小心打错了moneys,发生error,然而第一个账户的钱已经少了100了。
这是因为mysql默认每一条语句都是事务。
可以通弄过如下方法:
start transaction;
#模拟转账的两条语句。
commit;
rollback;
当发生错误的时候 可以rollback回滚 让系统恢复到事务开始前的状态;
正常就commit,数据库的状态发生持久性的变化。
2.权限控制;
1.创建用户
create user xiaowang identified by '123';
创建一个密码123的xiaowang用户。
2.授权
grant 权限 on 数据库名.表名 to 用户名;
grant all on companydb.* to xiaowang; #.*表示该数据库中的所有表。
3.撤销权限;
revoke 权限名 on数据库名.表名 from 用户名;
revoke all on companydb.* from xiaowang;
4.删除用户
drop user xiaowang;
3.视图
视图就是一个虚拟表 ,就像对着数据库开了一个窗口,只能看到管理员想让你看到的东西,保证了安全性;同时也带来了写sql语句的便携性,因为虚拟表查询可以更加方便。
1.创建视图
create view 视图名 as
select的查询语句,
之后就可以从视图中进行查询,
如果想对视图进行更新,以下情况是不允许的:
2.视图的修改:
create or replace view 视图名 as select查询语句;
alter view 视图名 as select查询语句;
3.删除
drop view 视图名;
4.sql语言的分类:
5.综合练习:
1.查询所有用户的订单;
select * from user inner join orders on orders.userId=user.userId;
2.查询用户id为1的所有订单详情;
select * from user inner join orders on orders.userId=user.userId
inner join orderitem on orders.oid=orderitem.oid where user.userid=1;
3.分页查询
select * from user limit 0,5;
4.