目录
多表查询
笛卡尔积
有两个集合A,B,取这连个集合的所有组合情况。
完成多表查询要,消除无用数据。
多表查询的分类
1.内连接查询:使用where条件消除无用数据
例子:SELECT * FROM emp,dept WHERE emp.dept_id =dept.id;
2.外连接查询:
3.子查询
事务
1.基本介绍
概念:如果有一个包含很多步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败
事例:张三给李四转账500元
-- 0开启事物
START TRANSACTION;
-- 张三账户减去500
UPDATE account SET balance=balance-500 WHERE NAME='zhangsan';
-- 李四账户加500
UPDATE account SET balance=balance+500 WHERE NAME='lisi';
-- 执行没有问题
COMMIT;
-- 出问题了,回滚事务
ROLLBACK;
MySQL数据库中事务自动提交
2.事务的四大特征
1.原子性:不可分割的最小操作单位,要么同时成功,要么同时失败
2.持久性:当事务提交或回滚后,数据库会持久保存数据
3.隔离性:多个事务之间相互独立。
4.一致性:实务操作前后数据总量不变。
3.事务的隔离级别
概念:多个事务之间是相互独立的。但是多个事务操作统一数据,会引发一些问题,设置不同隔离级别就可以解决这些问题。
隔离级别:
1.read uncommitted:读未提交。
2.read commited:读已提交(oracle)
3.repeatable read:可重复读(mysql默认)
4.serlializable:串行化
// 查询隔离级别
select @@tx_isolation;
// 设置隔离级别
set global transaction isolation level 级别字符串;
// 演示
set global transaction isolation level read committed;
start transaction;
--转账数据库
update account set balance =balance-500 where id=1;
update account set balance =balance+500 where id=2;
DCL:控制权限
1.管理用户
添加用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'
2.删除用户
DROP USER '用户名'@'主机名';
3.修改用户密码
UPDATE USER SET PASSWORD =PASSWORD('abc') WHERE USER='lisi';
4.查询用户:
SELECT*FROM USER;
2.授权
1.查询权限
// 查询权限
SHOW GRANTS FOR '用户名'@'主机名';
2.授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'
GRANT SELECT,DELETE,UPDATE ON db3.account TO 'lisi'@'%';
// 给张三用户授予所有权限,在任意数据库任意表上
GRANT ALL ON db3.* TO 'zhangsan'@'localhost';
3.撤销权限
// 撤销权限
revoke 权限 on 数据库名.表名 from '用户名’@‘主机