SQL连接操作
利用连接操作,可以根据表与表之间的逻辑联系从两个或多个表中查询数据。
早期的SQL版本,实现连接方法是在from子句中给出连接操作的表名,在where子句中
给出连接条件。
例如,从学生、课程和成绩表中,产生数据库课程的成绩单。from子句列出连接运算的
3个表,where子句给出连接条件。在where子句的条件表达式中包含了连接条件和选择
条件。
例1 从学生、课程和成绩表中,产生数据库课程的成绩单。SQL语句是:
select 姓名,课程名,分数
from学生S,课程C,成绩G
where S.学号=G.学号AND G.课程号=C.课程号AND C.课程名称='数据库'
·SQL-92提供更丰富的连接操作,包括:内连接、条件连接、自然连接、左外
连接、右外连接、全连接,同时增加了在from子句定义连接条件的方法。SQL-92中from
子句连接的语法格式:
from <表1> <连接类型> <表2> [on (<连接条件>)]
因此,上述产生学生数据库课程成绩单的SQL语句可以写成:
select 姓名,课程名,分数
from 学生S join 成绩G on (S.学号=G.学号)
join课程C on (G.课程号=C.课程号)
where C.课程名称='数据库'
· 这种方法不仅简化连接条件的表达方法,更重要是提高查询效率。
SQL系统处理的逻辑顺序是:
1、from子句中的连接条件
2、where子句中的连接条件与选择条件
3、having子句中的筛选条件
所以,在使用支持SQL-92标准的系统时,建议用from子句定义连接条件。
关系R和S进行连接操作,且连接条件为P。若连接的结果中只保含R与S在P上相匹
配的元组,这种连接属于内连接(inner join)。用from子句表示内连接的方法:
from R [inner] join S [on (<连接条件>)] 其中,inner可省略。
自然连接是等值连接的特例。
·设关系R和S进行连接操作,其连接条件为P。如果P是R与S中连接属性的
等值比较,称为等值连接。
·若R与S进行等值连接,且R与S的连接属性名相同,称为自然连接。
·自然连接的实现方法是在内连接的基础上,用select子句消除重复列。
有关系R和S,R与S的笛卡儿乘积称为交叉连接。交叉连接的实现方法:在from子
句中定义交叉连接类型:from R cross join S。
关系R与S进行连接操作,连接条件为P。若连接操作的结果中除了R与S在P上内连
接结果之外,还包括左边关系R在内连接操作中不相匹配的元组,而其对应于S的属性赋予
空值,这种连接称为左外连接。左外连接的表示方法
相关新闻>>
- 发表评论
-
- 最新评论 更多>>