本文主要介绍数据库中的视图与事务。
====================================================================================================================================- 视图
当时常需要输入大量且重复的SQL语句示,则可以考虑使用视图(view)来完成相应查询。视图可以把复杂查询简单化为一个命令,不随数据库的结构改变而改变同时可以隐藏不必要显示的信息。
比如因为工作需要,用户需要繁复使用如下SQL语句
SELECT d.dought_name, s.mc_sts FROM doughtnut_list AS d INNER JOIN status1 AS s WHERE d.id = s.id; #上述语句用户可以将其存在文本文件中,但是其存在一定不安全性,因为文本文件较易被修改,因此此时可以考虑使用视图。 CREATE VIEW inner_join AS SELECT d.dought_name, s.mc_sts FROM doughtnut_list AS d INNER JOIN status1 AS s WHERE d.id = s.id; #视图其实是一种虚拟的表,所以完全可以像操作正常的数据表一样对视图直接进行增删改查等操作。 SELECT * FROM inner_job; INSERT INTO…; DELETE…; UPDATE…; ALTER…;
- 事务
事务(transcation)是一群可完成一组工作的SQL语句,在事务的过程中,若所设计的步骤没法完成,则整个事务的所有步骤都不会有实质性的完成结果。
将用户存钱看作一个事务:1.查询账户相应余额2.若余额充足则扣款3.提出现金;以上3个步骤,在数据库的操作中只要有任何一部未能成功执行,则该事务不会实质完成,同时若一张卡存在多个用户,且当用户几乎同一时间查询时,较慢的一方会出现卡片账户被锁定的类似提示,即目前他将不能实现正常的取款过程。
对于事务存在较为经典的ACID检测原则:ATOMICITY 原子性;COSISTENCY 一致性; ISOLAION 隔离性;DURABILITY 持续性。
使用事务可以针对突发情况进行回滚(rollback),即若发现此前的操作存在问题,可以立即键入“rollback”关键字,使数据库恢复到事务开始前的状态,提升了数据库的数据安全性。
START TRANSCATION ; SELECT d.dought_name, s.mc_sts FROM doughtnut_list AS d INNER JOIN status1 AS s WHERE d.id = s.id; INSERT INTO…; DELETE…; UPDATE…; ALTER…; #在经过更改后,若发现情况不对,则可以立即使用ROLLBACK,这样数据库会恢复到’START TRANSCATION”之前的状态 #若对更改后的结果感到满意,则可以键入“ COMMIT”表示确认此次更改,并且只有在键入COMMIT后才会发生实质性的变化