mysql学习day3

145 阅读2分钟

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;
#模拟转账的两条语句。
commitrollback

当发生错误的时候 可以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.