實驗6高階查詢

2022-12-31 21:39:02 字數 4325 閱讀 7889

【實驗目的與要求】

掌握基本的連線查詢操作

● 等值連線

● 非等值連線

● 自身連線

● 外連線

掌握巢狀查詢操作

【實驗內容與步驟】

思考問題:如何使用sql來建立資料庫表?

準備工作:若上個實驗的資料庫表還沒有建立,請先建立之,並按照實驗要求輸入測試資料。

6.1 連線

連線查詢主要包括:

等值連線

非等值連線

自身連線

外連線1.等值連線

以等於運算子 (=) 為基礎的連線稱為等值連線。通常情況下,所有連線都是等值連線。等值連線的語法如下:

select

from

where = and

= 實驗6-1 查詢所有產品的名稱、類別名稱和庫存量等資料。

請給出結果截圖:

實驗6-2 查詢所有訂單的訂單代號、客戶公司名稱和運貨費,查詢結果按訂單代號的公升序排列。

請給出結果截圖:

實驗6-3 查詢由北京客戶訂購的運貨費等於於8元的訂單的訂單代號、客戶公司名稱和運貨費。

請給出結果截圖:

等值連線可在兩個表上執行,也可在多個表上執行。

在乙個連線中使用四個表:

實驗6-4 查詢每一客戶的客戶代號、公司名稱及其訂單的訂單代號、訂購日期、產品名稱和數量等資料。

請寫出查詢結果:

練習6-1 修改實驗6-4中給出的語句並以如下方式給出,然後觀察發生什麼情況。

select cno,company, ono,order_date,pname,qty

from customer,orders,order_items,product

where and

order_

給出上面的選擇語句後,會出現 「column ambiguously defined」(列定義模糊不清)的出錯資訊。這是因為「ono」存在於兩個表(即orders表和order_items表)之中。我們需要明確指定要從哪個表選擇ono。

在這種情況下,可以從任何乙個表中選擇ono。

2.非等值連線

實驗6-5 查詢所有單價介於20和35元之間的產品的名稱、類別名稱、單價和庫存量等資料。

請給出結果截圖:

3.自身連線

自身連線是連線的另一種形式。在這種情況下,連線是在單個表上進行的,就像它是兩個獨立的表。 表的每個行都與其本身組合,並與表的所有行組合。

實驗6-6 查詢單價正好相差0.5倍的每一對產品的名稱及其單價。

請給出結果截圖:

注意:在進行表的自身連線時,須在from子句中給同乙個表取不同的別名,並在書寫select語句的其它子句時把這些代表同一表的不同別名看成是具有相同資料的「不同表」(讀者在理解自身連線查詢時,可以將它們看成不同的表,但實際上只有乙個表)。

練習6-2 查詢與「du wei」客戶在同一城市的其他客戶的姓名及其**。

寫出相應的sql語句,並給出查詢的結果:

4. 外連線

前面介紹的查詢都是內連線。內連線不選擇表中不符合查詢條件的記錄。這些值可通過外連線獲得,外連線利用運算子加號 (+)。 語法如下:

select (column_names)

from (tablenames)

where ( =

實驗6-7 查詢所有客戶的代號、姓名以及其訂單的代號和訂購日期與訂單狀態,查詢結果按客戶代號的公升序排列。

先請看下面的sql語句及其查詢結果:

請給出結果截圖:

上面的查詢是乙個內連線,由於客戶「c0003」和「c0004」沒有訂單,他們都不滿足查詢條件,因此他們的資訊沒有出現在查詢結果中;如果我們想讓這兩個客戶的資訊也出現在查詢結果中就需要使用下面的外連線語句:

請給出結果截圖:

試比較上面的兩個查詢語句中查詢結果有何區別?

6.2 巢狀查詢

巢狀查詢是指將乙個select-from-where查詢塊巢狀在另乙個查詢塊的where或h**ing短語的條件中的查詢。

1.帶有比較運算子的子查詢

實驗6-8 查詢與「du wei」客戶在同一城市的其他客戶的姓名及其**。

請給出結果截圖:

本查詢包括了兩個select-from-where查詢塊,其中下層的查詢塊巢狀在上層的查詢塊中。我們將上層的查詢塊稱為父查詢,而把下層的查詢塊稱為子查詢。子查詢的處理先於父查詢。

本巢狀查詢的過程如下:

⑴ 先通過子查詢,在customer表中找到「du wei」客戶所在的城市,結果為「shanghai」;

⑵ 利用子查詢得到的city值「shanghai」,求出父查詢中位於「shanghai」的客戶的姓名及其**。

2.帶有in謂詞的子查詢

當子查詢的查詢結果包含多個值時,經常會使用謂詞in來連線子查詢和父查詢。

實驗6-9 查詢訂購了單價比「3004」號產品大的那些產品的訂單的代號。

請給出結果截圖:

本查詢巢狀了兩個select子查詢,其中最內層的子查詢找出了「3004」號產品的單價,結果是單值30,在該子查詢前可以使用比較運算子「>」,而其上一層的子查詢找出了單價大於30的產品的代號,結果有多個值,故在該子查詢前需用謂詞「in」。

3.帶有any或all謂詞的子查詢

當子查詢的查詢結果包含多個值時,光用謂詞「in」來連線子查詢和父查詢是不夠的,有時會用到前置了比較運算子(>、>=、=、<、<=、<>)的謂詞「any」或「all」。其中「any」代表子查詢結果中的某個值,「all」代表子查詢結果中的所有值。這樣,「>any」表示大於子查詢結果中的某乙個值,「>all」表示大於子查詢結果中的所有值。

其它如「>=any」、「=any」、「any」、「>=all」、「=all」、「all」的含義依此類推。

實驗6-10 查詢**大於所有1號類產品的產品的名稱及其**。

請給出結果截圖:

實驗6-11 查詢其它類中、**大於某個1號類產品的產品的名稱及其**。

請給出結果截圖:

4.帶有exists謂詞的子查詢

exists 運算子檢查兩個表中是否存在值。它只可用於子查詢,即沒有像存在測試的簡單比較測試。exists 運算子不能返回 null 值。

實驗6-12 查詢沒有訂購「1001」號產品的訂單的代號。

請給出結果截圖:

從上面的查詢可以看出,帶有exists謂詞的子查詢與前面的幾類子查詢是有區別的,主要區別有以下兩點:

⑴ 前幾類子查詢返回的是某一列的值(單值或多值),而帶有exists謂詞的子查詢返回的是邏輯值真或假。當在子查詢的from子句的表中找到滿足條件的元組時,子查詢返回邏輯真值,否則返回邏輯假值。

⑵ 前幾類子查詢的where子句中的條件與父查詢是無關的,而帶有exists謂詞的子查詢的where條件的值卻依賴於父查詢的某個(或某些)屬性列的值,如上例子查詢的結果是真還是假就依賴於父查詢中的屬性列的當前值。

6.3 集合操作

6.3.0 準備工作

建立如下表x和y

6.3.1 union

執行以下語句:

寫出執行結果:

6.3.2 minus:

執行以下語句:

寫出執行結果:

6.3.3 intersect:

執行以下語句:

寫出執行結果:

6.4 實驗練習

1. 練習:完成下列查詢,寫出相應的sql語句

1) 列出至少有乙個雇員的所有部門。

select * from dep where count(cno)>0;

2) 列出薪金比「smith」多的所有雇員。

select * from dep where emp>(select emp from dep where cname=』smith』);

3) 列出所有雇員的姓名及其上級的姓名。

seelct cname,csname from dep;

4) 列出入職日期早於其直接上級的所有雇員。

找出所有雇員的入職日期和上級的編號,然後查詢上級編號的表的入職日期,最後進行比較篩選資料

5) 列出部門名稱和這些部門的雇員,同時列出那些沒有雇員的部門。

利用count關鍵字

6) 列出所有「clerk」(辦事員)的姓名及其部門名稱。

where條件

7) 列出各種類別的最低薪金,以使最低薪金大於 1500。

h**ing 跟group by

8) 列出從事「sales」(銷售)工作的雇員的姓名,假定不知道銷售部的部門編號。

where條件

9) 列出薪金高於公司平均水平的所有雇員。

利用where條件,加上**erage關鍵字

10) 列出與「scott」從事相同工作的所有雇員。

可以利用in關鍵字

2. 練習:

完成書本p149-151實驗。

高階工程師職稱查詢方法

第一,證書初步斷定!每個地方的證書每年出來的樣式是一樣的,蓋章單位是乙個部門。一般來說證書的頒證機構都是地市級或廳級人力資源和社會保障部,蓋章單位每個地方主管不一樣,章子名稱也不一樣,但是都是 部門!最重要是要有紅標頭檔案和名單。第二,查詢方式!最權威,最方便的查詢方式,查詢!最有效的方法是直接打 ...

6高階銷售技巧

成功的銷售並非乙個 也並非強迫客人參加會籍 我們的工作是幫助客人作出明智決定去開始及完成他們的健身目標 當你發覺你的工作是幫助他人而不是以賺錢放在第一位,那麼,你會幫助更多的人,而你賺取的錢就更多了 最高的技巧,就是當客人付款時,他們同時會感謝你 當我們解決客人所有的顧慮以後,有些客人仍是需要一些別...

實驗八資料查詢

一 實驗目標 1 掌握select語句的基本語法。2 掌握select簡單查詢。3 掌握sql中的關鍵字查詢。首頁建立乙個scstc資料庫並建立資料表,並每個表至少錄入5條初始資料。1,建立student表 create table student sno char 8 primary key,學號...