#视图:在真实表上面构建的一张虚表
#有dept、emp。要求查看所有的员工信心,还包括部门信息
SELECT * FROM dept d INNER JOIN emp e ON d.`id`=e.`deptId`;
#创建视图语法:create view 视图名 as 查询语句
CREATE VIEW view_all
AS SELECT e.`id` AS empID, e.`empName`,e.`salary`,e.`phone`,d.`deptName`
FROM dept d INNER JOIN emp e ON d.`id`=e.`deptId`;
SELECT * FROM view_all;
#删除视图:drop view 视图名
DROP VIEW view_all;
#查询某一视图中的数据
SELECT * FROM view_all WHERE empID=1;
#删除视图中的某一条数据(局限性,建议:视图不适用于删除数据(虚表))
CREATE VIEW view_emp AS SELECT * FROM emp;
DELETE FROM view_emp WHERE id=1;
#往视图中添加数据(视图中添加进去了,实表中也添加进去了)
INSERT INTO view_emp SET empName='王二麻子'
SELECT * FROM view_emp;
#修改视图(视图修改了,实表也修改了)
UPDATE `view_emp` SET empName='李的骄傲' WHERE id=7;
#视图的应用场景:只做查询功能等
#---------------------------------------------------------------------
#数据库建模(powerDesinger)
#file————>new Model--->physical data model
#-----------------------------事务----------------------------------------
#小白给小黑转20000
UPDATE `account`SET money=money-20000 WHERE bankNo='119';
UPDATE `account`SET money=money+20000 WHERE bankNo='911';
#小兰给小黑30000
UPDATE `account`SET money=money-30000 WHERE bankNo='110';
UPDATE `account`SET money=money+30000 WHERE bankNo='911';
#事务:
#什么是事务?:多组操作要么全部成功,要么全部失败
#开启事务: start transaction;
#回滚事务:(如果事务提交后,不能够回滚):rollback;
#提交事务:commit;
#事务的4大特性:
#原子性(automic):多组操作不能分割,必须是一个整体
#一致性(consistent):事务操作前与事务操作后总量保持一致
#隔离性(isolation):多个事务之间互不干扰
#在mysql中事务有4种隔离级别:read uncommitted、read committed、
# repeatable read、serializable
#查看mysql软件的隔离级别:select @@tx_isolation;
SELECT @@tx_isolation;
#修改mysql软件默认的隔离级别
SET GLOBAL TRANSACTION ISOLATION LEVEL 隔离级别
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
#不同的隔离级别会引发不同的问题:
#当MySQL事务的隔离级别为read uncommitted时,会引发脏读:
#脏读:一个事务可以读取另一个事务未提交的数据(未commit,只是开启了事务然后半截回滚了)
#如何结局脏读问题:可以将数据库的隔离级别改为read committed
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
#虚读与幻读
#不可重复读
#持久性(durable):数据一旦进入库中,表中就永久存在
SELECT @@tx_isolation;