数据库学习笔记4(SQL中级)

数据库学习笔记4(SQL中级)

1.连接表达式(Join Expression)

1.连接条件

  • 关键词on

  • on条件可以表示任何SQL谓词

  • from student join takes on student.ID=takes.ID
    

2.外连接

  • 外连接通过在结果中创建包含空值元组的方式,保留了那些在连接中丢失的元组

  • 有三种形式的外连接

    1.左外连接(left outer join) 只保留出现在左外连接运算之前的关系中的元组

    2.右外连接(right outer join) 只保留出现在右外连接运算之后的关系中的元组

    3.全外连接(full outer join) 保留出现在两个关系中的元组

  • 不保留未匹配元组的连接运算被称作内连接

  • 当join子句中没有使用outer前缀,默认的连接类型是inner join

3.视图

  • SQL允许通过查询来定义虚关系,它在概念上包含查询的结果。虚关系并不预先计算并存储,而是在使用虚关系的时候才通过执行查询被计算出来

  • 不是逻辑模型的一部分但作为虚关系对用户可见的关系称为视图

  • 视图定义

  • creat view v as < query expression >
    
  • 如果用于定义视图的实际关系改变,视图也跟着修改,这样的视图称为物化视图(materialized view)

  • 视图的更新

  • 视图的更新会修改原来的数据

  • 一般来说,只有下面的条件都满足,视图才是可更新的

    1.from子句中只有一个数据库关系

    2.select子句只包含关系的属性名,不包含任何表达式,聚集或distinct声明

    3.任何没有出现在select子句中的属性可以取空值,即这些属性上没有not null 约束,也不构成主码的一部分

    4.查询中不含有group by 或 having 子句

4.事务(transaction)

  • 事务必须满足4个条件

    1.原子性

    2.一致性

    3.隔离性

    4.持久性

  • Commit work提交当前事务,也就是将该事务所做的更新在数据库中持久保存。在事务被提交后,一个新的事务自动开始

  • Rollback work回滚当前事务,即撤销该事务中所有SQL语句对数据库的更新。这样,数据库就恢复到执行该事务第一条语句之前的状态

5.完整性约束

  • 单个关系上的约束

    1.not null

    2.unique

    3.check<>

  • check子句

    check(P)子句指定一个谓词P,关系中的每个元组都必须满足谓词P

  • 参照完整性(referential integrity)

    当违反残照完整约束时,通常的处理是拒绝执行导致完整性破坏的操作,但在foreign key 子句中可以指明:如果被参照关系上的删除或更新动作违反了约束,系统可以采取一些步骤修改参照关系中的元组来恢复完整性约束,而不是拒绝这样的操作

    这样的声明有:on delete cascade 和 on update cascade

6.SQL数据类型和模式

1.大对象类型

  • SQL提供字符数据的大对象数据类型(clob)和二进制数据的大对象类型(blob)

2.用户定义的数据类型

  • 可以用 creat type子句来定义新类型
  • domain可以在基本类型上施加完整性约束

7.授权(Authorization)

  • 我们可能会给一个用户在数据库的某些部分授予几种形式的权限,对数据的权限包括

    • 读取数据(read/select)
    • 插入数据(insert)
    • 更新数据(update)
    • 删除数据(delete)
  • SQL标准包括select,insert,update和delete权限和所有权限(all privileges)

  • SQL数据定义语言包括授予和收回权限的命令,grant语句用来授予权限

  • grant <权限列表>
    on <关系名或视图名>
    to <用户/角色列表>
    
  • grant select
    on dept
    to Amit
    
  • 同样,我们可以使用revoke语句来收回权限

8.角色(role)

  • 我们可以在数据库中建立一个角色集,可以给角色授予权限,就和给每个用户授权的方式完全一样

  • grant dean to Amit
    create role dean
    grant instructor to dean
    grant dean to Satoshi
    
posted @ 2022-03-11 09:30  ANewPro  阅读(84)  评论(0编辑  收藏  举报