视图是一种虚拟的表,具有和物理表相同的功能
只暴露部分字段给访问者,所以就建一个虚表,就是视图。
查询的数据来源于不同的表,而查询者希望以统一的方式查询,这样也可以建立一
个视图,把多个表查询结果联合起来,查询者只需要直接从视图中获取数据,不必
考虑数据来源于不同表所带来的差异
数据库视图隐藏了数据的复杂性。
数据库视图有利于控制用户对表中某些列的访问。
数据库视图使用户查询变得简单。
原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,
要么均不执行。
一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行
执行的结果相一致。
隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他
事务必须是透明的。
持久性(Durability):对于任意已交事务,系统必须保证该事务对数据库的改变不
被丢失,即使数据库出
sql 注入漏洞产生的原因最常见的就是字符串拼接SQL 语句,这种漏洞可以利用注
释语句绕过验证
如 select name from userinfo where name=‘alex’ and password = ‘888’
用户如果在 name 字段输入 alex’ or 1=1 --f 就可以成功绕过验证。
要解决这个问题就不能在程序中拼接 sql 语句,例如使用 pymysql 的 execute 方法,
这个方法会自动对用户输入的引号特殊字符做转义
delete 和 truncate 只删除表的数据不删除表的结构
速度,一般来说: drop> truncate >delete
delete 语句是 del,这个操作会放到rollback segement 中,事务提交之后才生效;
如果有相应的 trigger,执行的时候将被触发。
truncate,drop 是 ddl, 操作立即生效,原数据不放到 rollback segment 中,不能回滚. 操
作不触发 trigger。
使用场景:
不再需要一张表的时候,用 drop
想删除部分数据行时候,用 delete,并且带上 where 子句
保留表而删除所有数据的时候用 truncate