zoukankan      html  css  js  c++  java
  • 四月二十四号日报

    今日学习内容

    PostgreSQL的高级特性

    1.1视图:我们可以在该查询上创建一个视图,这会给该查询一个名字,我们可以像使用一个普通表一样来使用它。如下

    create view myview as 
    	select city,temp_lo,temo_hi,date,location
    		from weather,cities
    		where city=name
    select *from myview;
    

    1.2外键:简而言之就是起约束作用,①插入非空值时,如果主键中没有这个值,则不能插入②更新时,不能改变主键表中没有的值。举个栗子

    create table cities(
    	city varchar(80) primary key,
    	location point
    );
    
    create table weather(
    	city varchar(80) references cities(city),
    	temp_lo int,
    	temp_hi int,
    	prcp real,
    	date date
    );
    insert into weather values ('Berkeley', 45, 53, 0.0, '1994-11-28');
    
    

    这里会出现违反外键约束的报错,因为在cities表中不存在Berkeley的主键

    1.3事务:事务是所有数据库系统的基础概念。事务最重要的一点是它将多个步骤捆绑成了一个单一
    的、要么全完成要么全不完成的操作。步骤之间的中间状态对于其他并发事务是不可见的,并且如果有某些错误发生导致事务不能完成,则其中任何一个步骤都不会对数据库造成影响。

    在PostgreSQL中,开启一个事务需要将SQL命令用begincommit命令包围起来:

    begin
    --sq语句
    commit;
    

    如果在事务执行中我们并不想提交(比如转账时余额不足),我们可以发出rollback命令而不是commit命令,这样所有目前的更新将会被取消。

    也可以利用保存点来以更细的粒度来控制一个事务中的语句。保存点允许我们有选择性地放
    弃事务的一部分而提交剩下的部分。在使用SAVEPOINT定义一个保存点后,我们可以在必
    要时利用ROLLBACK TO回滚到该保存点。该事务中位于保存点和回滚点之间的数据库修改
    都会被放弃,但是早于该保存点的修改则会被保存。

    比如我们从Alice的账户扣款100美元,然后存款到Bob的账户,结果直到最后才发现我们应该存到Wally的账户。我们可以通过使用保存点来做这件事:

    begin;
    --SQL语句
    savepoint my_savepoint
    --SQL语句
    --发现转账错误,应该是转给Wally
    rollback to my_savepoint
    --SQL语句
    commit;
    

    对墙的知识点进行复习准备考核

  • 相关阅读:
    什么是BFC?
    获取JavaScript对象的键值对两种方法的不同之处
    浏览器什么时候会引起reflow,应该怎样避免reflow的开销呢?
    用js实现跳转页面的方法
    停止animate动画和判断是否处于动画状态
    解决slideDown(),slideUp()鼠标来回进入的问题
    IE7浏览器绝对定位被下边元素遮挡问题解决办法
    前端开发面试要点及对策
    inline-block元素之间空白间距的解决办法
    web前端开发和移动前端开发的本质区别在哪里?
  • 原文地址:https://www.cnblogs.com/swtczb/p/11632614.html
Copyright © 2011-2022 走看看