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子句進行條件限定

相關文章
相關標籤/搜索