数据库查询 |
您所在的位置:网站首页 › 专门的关系运算有 › 数据库查询 |
关系代数运算
关系代数用对关系的运算来表达查询,运算对象是关系,结果得到关系 关系可以理解为一张二维表,例如一张学生表,就是一个关系,关系代数运算就是我们写sql的一些查询操作,操作表生成新的表或者视图 关系代数的运算有两种: 运算符为传统的集合运算符:并、差、交、笛卡尔积运算符为专门的关系运算符:选择、投影、连接、除传统的集合运算符:从表的行的角度进行运算,所以需要运算的关系R、S具有相同的属性列的类型、属性列数目 专门的关系运算符:涉及到列、行,没有那些限制 其他:选择、投影、并、差、笛卡尔积是查询操作的基本操作,其他操作可以由这5种基本操作推出 关于这些操作的概念是很晦涩的,结合具体的SQL来理解 并(union)并操作两个关系R、S,得到的关系由属于R或S的元组组成,就是逻辑并 对应的Sql操作就是Union 第一次查询的id=1的关系 并 第二次查询id=2的关系 的结果: and的结果也是这样的,为什么不说and呢? 这里主要谈的是并的思想,两个关系的并运算,and的话并不是两个关系的运算 差(except)差:关系R与关系S的差由属于R而不属于S的所有元组组成 很明显,完成差的查询操作只需要从R中排除R与S交集关系即可,用not in关键字sql查询 实际上存在except关键字,Mysql不支持 换成Sql Server试试: select * from 学生 where 学号 、 teacher.tid;外连接:R、S中舍弃的元组也保存到结果中,而在其他属性上填空值 左外连接:只保留左边关系R的舍弃的元组 select * from student left join teacher on student.id = teacher.tid;Sql Server: select * from 学期成绩 R full join 课程注册 S on R.课程编号 = S.课程编号; 这两个表是这样的: 可以获得查询结果: Mysql通过左连接 union 右连接就不实现了 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |