关系代数,关系演算(偏原理,操作集合(二维表)的)

  1. 是一种抽象的数据查询语言

  2. 用对关系的运算来表达查询

运算对象:关系

运算符:四类

运算结果:关系

并、查、交

投影、选择

笛卡尔积、连接

重命名

关系运算符分类

  • 传统的集合运算符:∪(并集) ∩(交集)

    • 将关系看成元组的集合

    • 所有的运算对象必须具有相同的结构

  • 专门的关系运算符

    • 选择和投影:σ、π

    • 笛卡尔积、连接:x、⋈

    • 重命名:ρ

  • 辅助专门的关系运算符

    • 比较运算符:<、<=、=>、>、=、<>

    • 逻辑运算符:﹁、∧、 ∨ (非、与、或)

传统的集合运输

先决条件:

  1. 两个集合的属性个数必须是相同的

  2. 对应属性必须取自同一个域

并:关键字union,两个集合的所有元素

交:关键字intersection,两个集合的公共元素

差:关键字difference,由属于集合A的元素而且不属于集合B的元素组成

专门的关系运算符

投影:用于从集合中选择出若干属性列组成新的关系(类似于过滤器)

πL(R)

  • L为R中的属性列表

  • 结果为只包含R中某些列的新的关系

  • 结果要去掉重复元组

选择:用于在关系R中选择满足给定条件的各个元组

σC(R)

  • C:选择条件,是一个逻辑表达式

  • 结果为只包含R中某些元组的新的关系

例:查询信息系(IS系)全体学生信息

σSdept = ‘IS’ (Student)

查询年龄小于20岁的学生信息

σSage < 20(Student)

查询时长至少为100分钟且为‘Fox’公司出品的影片信息

σlength>=100 ∧ studioName=‘Fox‘ (Movies)

σlength >= 100( Movies ) ∩σstudioName=’Fox’(Movies)

笛卡尔积:

R关系:n个属性,k1个元组

S关系:m个属性,k2个元组

列数:n+m

行数:k1*k2

连接:

  • θ连接

  • 等值连接(θ为=)

  • 自然连接

    • 自然连接是在公共属性(组)上进行的等值连接

    • 两个关系中必须具有公共属性(组)

    • 在结果中把重复的属性列去掉

连接运算从R和S的笛卡尔积R× S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较条件的元组

SQL语言(偏操作)

CRUD省略

索引操作

对应三级模式的内模式(磁盘的存储方式)

建立和删除索引

建立索引是加快查询速度的有效手段

建立索引

  • DBMS自动建立

    • 主键(primary key)

    • 唯一(unique)

  • DBA或表的属主(即建立表的人)根据需要建立

建立索引sql语法:

  1. CREATE [UNIQUE|CLUSTERED] INDEX INDEX_NAME ON TABLE_NAME(PROPERTY_NAME [ASC|DESC])
  2. -- 其中UNIQUECLUSTERED为可选项,分别是建立唯一索引和聚簇索引,具体解释为:
  3. -- UNIQUE:表示此索引的每一个索引值只对应bai唯一的数据。
  4. -- CLUSTERED:表示要建立的索引时聚簇索引,即索引项的顺序与表中记录的物理顺序一致的索引组织。
  5. -- 聚簇索引(主键):建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降
  6. 序存放
  7. -- 即聚簇索引的索引项顺序与表中记录的物理顺序一致
  8. -- 升序ASC,降序DESC(聚簇索引可以指定)
  9. -- 单列索引和多列索引:看索引是在几个列上
  10. -- 也可以创建普通索引(即不指定[UNIQUE|CLUSTERED])

维护索引

DBMS自动完成

使用索引

DBMS自动选择是否使用索引以及使用那些索引

DCL(数据控制语言)

  • 完全性控制:

  • 完整性控制

    • 完整性:指数据库中数据的有效性、相关性与相容性
  • 并发控制

    • 当多个用户并发地对数据库进行操作时,对他们加以控制、协调,以保证并发操作正确执行,并保持数据库的一致性
  • 恢复:当发生各种类型的故障,使数据库处于不一致状态时,将数据库恢复到一致状态的功能 ,支持事务、提交、回滚等概念

  • 安全性:指保护数据库, 防止不合法的使用所造成的数据泄露和破坏。 (权限管理,GRANT授权和REVOKE回收权利)

嵌入式sql语言

SQL语言的两种使用方式

  • 在终端交互方式下使用,称为交互式SQL

  • 嵌入在高级语言的程序中使用,称为嵌入式SQL

    • 高级语言如C、 Java等, 称为宿主语言

嵌入式SQL的实现方式