oracle数据库的链接

链接是二元运算,能够对两个或多个表进行查询,结果一般是含有参加链接运算的两个或多个表的指点列的表数据库

在SQL中,链接有两大类表示形式,一是符合SQL标准链接谓词(where)的表达形式,二是oracle扩展的使用关键字JION的表达形式。oracle

 

1.链接谓词spa

能够在select语句的where子句中使用比较运算符给出链接条件对表进行链接,将这种表示形式称为链接谓词表示形式。code

--查找数据库每一个班的学生信息。
select 
* 
from 
school_students,school_class
where stu_class=class_id;

链接谓词中的两个列(字段)称为链接字段,它们必须是可比的,链接谓词的比较符能够是<,<=,=,>,>=,!=和<>,当比较符为=是就是等值链接,若在目标列中去除相同的字段名,则为天然链接。blog

--查找选修了100014课程且成绩在70分以上的学生姓名及成绩。
select
stu_name 姓名,
result_number 成绩 
from
school_students,
school_result
where 
result_stu=stu_id
and result_course='100014'
and result_number>=70;

链接和子查询可能都要涉及两个或多个表,区别是:链接能够合并两个或多个表,而带子查询的select语句的结果只能来自一个表。子查询的结果是用来做为选择结果数据时进行参照的。io

--查找选修了“数据库技术及应用”课程且成绩在70分以上的学生学号、姓名、---课程名及成绩。
select
stu_id 学号,
stu_name 姓名,
course_name 课程名,
result_number 成绩
from
school_students,
school_course,
school_result
where
stu_id=result_stu
and course_id=result_course
and course_name='数据库技术及应用'
and result_number>=70;

 

2.以JOIN关键字指定的链接class

oracle的PL/SQL语句扩展以jion关键字指定链接的表示方法,加强了表的链接运算能力。扩展

内链接:按照On所指定的链接条件合并两个表,返回知足条件的行select

--查找数据库每一个班的学生信息。
 select
*
from
school_students
  join school_class
    on class_id=stu_class
;

内链接还能够用于链接多个表的链接方法

--查找选修了100014课程且成绩在70分以上的学生姓名及成绩。
 select
stu_name 姓名,
result_number 成绩
from
SCHOOL_STUDENTS
  join school_result
    on stu_id=result_stu
  where 
  result_course='100014'
  and result_number>=70;

外链接:外链接的结果表不但包含知足链接条件的行,还包括相应表中的全部行。

外链接包括三种:

1 左外连接:结果表中除了包括知足链接条件的行外,还包括左表的全部行

--查找全部班级学生状况及,若班级没有学生,也要显示其状况。
select
class_name,stu_name
from
SCHOOL_CLASS
  left join  school_students
  on stu_class=class_id;

2 右外连接:结果表中除了包括知足链接条件的行外,还包括右表的全部的行

--查找全部班级学生状况及,学生没有班级,也要显示其状况。
select
class_name,stu_name
from
SCHOOL_CLASS
  right join  school_students
  on stu_class=class_id;

3 彻底连接:结果表除了包括知足链接条件的行外,还包括两个表的全部行

4.交叉链接:交叉链接其实是将两个表进行笛卡尔积运算,结果表是由第一个表的每行与第二个表的每一行拼接后造成的表,所以结果表的行数等于两个表行数之积。

--列出学生全部可能的选课状况。
select
class_name,stu_name
from
SCHOOL_CLASS
  cross join  school_students
;

注意:交叉链接也能够使用where子句进行条件限定

相关文章
相关标签/搜索