关系数据库作业

作业中积累的知识点:

关系代数部分:

1.sigma 和 pi 执行的先后实际上是可能存在影响的.

2.theta join没有结合律 但是natural join有.

3.自我natural join 就是自己

4.关系代数比sql好在有除法 还有集合操作比较简单 交并差都可以使用

5.count等聚集函数没有distinct关键字, 如果需要去重, 使用pi投影预处理关系.

sql部分:

1.primary key会建立主键索引, 同时还可以建立外键关系, unique not  null则不能

2.order by 每个属性默认asc

3.select默认是包含重复的, 而关系代数中投影是默认去重的.

4.除了count(*)其他的所有聚集操作都不会统计null

5.natural join 可以不要on 但是其余join没有on 或 using就报错

6.即使natural join了你也可以访问被省略掉的另一个表的某一个属性

7.自己对自己外连接可以求一个表某一属性的最大值和最小值的元组

8.using() 要括号, 给表起别名只能给基础表, 不能给join过的表起, 多个表join注意重叠表要起别名

9.经常注意distinct的使用, 比如要不同值的时候, count的时候

10.效率方面, 不考虑索引, 那么独立子查询一般比相关子查询效率高, 因为后者往往存在循环. join也需要循环, 是代价比较大的操作

11. 使用in或not in的时候如果子查询结果中包含null 那么条件判断为否. 此原因可能导致查询不到合适结果.

你可能感兴趣的:(关系数据库作业)