sql實驗巢狀查詢和連線查詢,SQL實驗 巢狀查詢和連線查詢

2022-02-27 06:36:06 字數 5519 閱讀 4791

1樓:

1巢狀:

select 姓名 from student where 學號 in (select 學號 from 選課 where 課號 in (select 課號 from 課程 where 課名='資料庫原理'))

連線:select 姓名 from 學生 join 選課 on 學生.學號=選課.學好 join 課程 on 選課.課號=課程.課號 where 課名='計算機原理'

2 巢狀

select 學號,年齡,性別,系名 from 學生 where 年齡 >(select max(年齡) from 學生 where 系名=計算機系)

3 連線

select 課名,成績

from 學生 join 選課 on 學生.學號=選課.學好join 課程 on 選課.課號=課程.課號where 姓名='張力'

2樓:匿名使用者

select 姓名 from 學生,選課 where 學生.學號=選課.學號 and 課名='資料庫原理'

select 姓名 from 學生 where 學號 in (select 學號 from 選課 where 課名='資料庫原理'

)select * from 學生 where 年齡》(select max(年齡) from 學生 where 系名=『計算機系』)

select 課名,成績 from 學生,課程,選課 where 學生.學號=選課.學號 and 課程.課號=選課.課號 and 學生.姓名=『張力』

學生表好像 缺了 姓名?

3樓:告慈

1select 姓名 from 學生,課程,選課 where 學生.學號=選課。學號 and 選課。課號=課程。課號 and 課程。課名=『資料庫原理』

select 姓名 from 學生 where 學號 in (select 學號 from 選課 where 課號=(select 課號 from 課程 where 課名='資料庫原理'))

2select * from 學生 where 年齡》all(select 年齡 from 學生 wehre 系名='計算機')

3select 課名,成績 from 選課 where 學號 in (select 學號 from 學生 where

姓名=『張力』)

4樓:匿名使用者

1、巢狀:

select 姓名 from 學生 where 學號=

(select 學號 from 選課 where 學生.學號=選課.學號 and 課程號=

(select 課程號 from 課程 where 選課.課程號=課程.課程號 and 課程名='資料庫原理'))

連線:select 姓名 from 學生 a join 選課 b on a.學號=b.學號

join 課程 c on c.課號=b.課號

where b.課名='資料庫原理'

2、select 學生.* from 學生 where 年齡》 (select max(年齡)from 學生 where 系名='計算機系')

另外後面的還可以這樣寫 where 年齡》 all( select 年齡 from 學生 where 系名='計算機系')

3、select c.課程名,b.成績 from 學生 a join 選課 b on a.學號=b.學號

join 課程 c on b.課號=c.課號

where a.姓名='張力'

資料庫的sql語句中,巢狀查詢和連線查詢有什麼區別,說的詳細的

5樓:匿名使用者

巢狀就是類似in語句,比如select * from table1 where id in (select id from table2),連線就是用join把2表根據一個欄位進行資料連線,區別就是連線查詢效率比巢狀高,而且join可以通過改變join先後順序,先掃描記錄少的表,從而提高速度,如果巢狀會固定先搜尋子查詢

6樓:

巢狀查詢和連線查詢根本上是一樣的 只是資料多的時候巢狀查詢要比連線查詢速度快

關於sql的巢狀查詢和連線查詢

7樓:匿名使用者

沒有相同欄位那是沒辦法的情況是可以用巢狀查詢,一般不推薦使用巢狀查詢,因為每一條記錄資料都會去執行一次查詢,這樣對效能影響很大,特別是記錄超過1000的話就有明顯感覺了~~~

8樓:匿名使用者

只要有相同點,連線和巢狀互相都是可以用的,這個沒有特定要求,什麼時候用是業務需求決定的。

但是要注意,能用一條sql完成就不要用多表聯查,能用多表聯查就不要用子查詢,所以建表的時候要考慮好表結構。使用多表聯查一定要建立主外來鍵關係,會提高查詢速度。

遇到問題首先想的是能不能用最簡單的sql完成想要的功能,做不到才去考慮其他方法。

sql中的連線查詢和巢狀查詢···急用,謝謝

sql的巢狀查詢與連線查詢的區別?~~~~急急急

9樓:匿名使用者

select * from table1 t1 where (t1.col1 , t1.col2,t1.col3 ) in (

select t2.col1,t2.col2,t2.col3 from table2 t2) ;

等價於select t1.* from table1 t1 , table2 t2

where t1.col1 = t2.col1

and t1.col2 = t2.col2

and t1.col3 = t2.col3 ;

----------------------------------

條件集合不唯一也就是說有多條,但是連線查詢一樣可以用。你是不是表達錯了老師的意思?

10樓:匿名使用者

解釋一下巢狀查詢,就是一條查詢語句中間再套一個條查詢語句,稱之巢狀查詢。如樓上的第一條例子。

連線查詢的意思說白了,就是在不同的表中進行查詢,但是前提就是表與表之間存在著關係,如,拿銀行信用卡表a和個人資訊表b舉例子,表a中肯定有卡號,個人資訊表中也存在著卡號,我想查詢這個人辦了什麼樣的信用卡的話,假定表b裡面肯定沒有信用卡的資訊了,但在表a裡面有相關資訊,只有關聯信用卡的卡號,再進行對錶b的欄位的查詢,自然就形成了連線查詢。

select b.信用卡屬性,b.信用卡型別 from a,b where a.id=b.id and a.姓名=』張三『

一般來說2表或多表關聯的欄位基本都是不重複資料的欄位,如pk,多欄位pk等等。

sql sever 2005 中的連線查詢和巢狀查詢可以一起用嗎?

巢狀查詢與連線查詢的區別是什麼

11樓:西柚哆來咪

1、意義上的差異

巢狀查詢是包含一個或多個子查詢或子查詢的另一個術語的select語句。在外部查詢中包含內部查詢的另一個子查詢是sql語句的擴充套件。

連線查詢是關聯式資料庫中最重要的查詢。在關聯式資料庫管理系統中,資料之間的關係不需要確定表的建立時間,實體的所有資訊通常都儲存在表中。檢索資料時,通過連線操作查詢儲存在多個表中的不同實體的資訊。

2、特徵上的差異

巢狀查詢的主要特點是sql允許從內到外進行多層巢狀分析,並將子查詢的結果作為主查詢的查詢條件。

連線是關聯式資料庫模型的主要特徵。多表查詢可以通過連線運算子實現。連線操作給使用者帶來極大的靈活性,可以隨時新增新的資料型別。

擴充套件資料:

連線查詢分為:

1、等價聯接:在聯接條件中使用等號(=)運算子比較聯接列的列值,並在查詢結果中列出聯接表中的所有列,包括重複列。

2、不等聯接:在聯接條件下使用比較運算子而不是等號運算子比較聯接列的列值。這些運算子包括》、>=、<=、<、!>、!《和<>。

3、自然聯接:在聯接條件中,使用等號(=)運算子比較聯接列的列值,但它使用選擇列表指示查詢結果集中包含的列,並刪除聯接表中的重複列。

12樓:酷悟集

1、含義上的不同

巢狀查詢是包含一個或多個子查詢或者子查詢的另一個術語的select語句。在一個外層查詢中包含有另一個內層查詢子查詢是sql語句的擴充套件。

連線查詢是關聯式資料庫中最主要的查詢。在關聯式資料庫管理系統中,表建立時各資料之間的關係不必確定,常把一個實體的所有資訊存放在一個表中。當檢索資料時,通過連線操作查詢出存放在多個表中的不同實體的資訊。

2、特性上的不同

巢狀查詢的主要特性是sql允許多層巢狀,是由內而外地進行分析,子查詢的結果作為主查詢的查詢條件。

連線是關聯式資料庫模型的主要特點,通過連線運算子可以實現多個表查詢。連線操作給使用者帶來很大的靈活性,可以在任何時候增加新的資料型別。

13樓:

巢狀查詢的意思是,一個查詢語句(select-from-where)查詢語句塊可以巢狀在另外一個查詢塊的where子句中,稱為巢狀查詢。其中外層查詢也稱為父查詢,主查詢。內層查詢也稱子查詢,從查詢。

巢狀查詢的工作方式是:先處理內查詢,由內向外處理,外層查詢利用內層查詢的結果。巢狀查詢不僅僅可以用於父查詢select語句使用。

連線查詢是關聯式資料庫中最主要的查詢,主要包括內連線、外連線和交叉連線等。通過連線運算子可以實現多個表查詢。

總結:都是關聯性查詢方式,巢狀查詢是由內而外的查詢,連結查詢是多表間的查詢。

14樓:匿名使用者

我們知道,巢狀查詢是可以用連線來代替的,而且使用連線的方式,效能要比

巢狀查詢高出很多比如:

select name from table1 where id in (select id from table2)

對於上面的巢狀查詢,由於是id in (....),所以查詢出來的結果肯定沒有重複的記錄,

如果把上面的巢狀查詢改為:

select name from table1,table2 where table1.id=table2.id

那這樣的查詢,其結果就會出現重複的記錄

如果我不想用distinct,那麼是不是意味著在這種情況下,就必須使用巢狀查詢呢?

15樓:匿名使用者

customerid, customername,address

16樓:匿名使用者

巢狀查詢是可以用連線來代替的

17樓:匿名使用者

巢狀查詢是可以用連線來代替的,而且使用連線的方式,效能要比巢狀查詢高出很多比如:

select name from table1 where id in (select id from table2)

對於上面的巢狀查詢,由於是id in (....),所以查詢出來的結果肯定沒有重複的記錄,

如果把上面的巢狀查詢改為:

select name from table1,table2 where table1.id=table2.id

那這樣的查詢,其結果就會出現重複的記錄

asp 寫sql巢狀查詢的寫法,在ASP中怎樣使用巢狀查詢語句

個人理解 在ttt表中查詢 欄位 zymcjc 中 某一滿足要求的記錄,然後根據查詢到的zymcjc欄位中的 內容 bjh 再在資料表 sss 中 欄位 bjmc 中 檢索.在ttt表中檢索的內容記錄可能不止一條,常規下,這兩個檢索用一條語句即可完成。從你的 上看 bjh 是已知的,select f...

SQL怎麼將查詢結果連線到一起,求救。。如何把兩條sql語句查詢的結果連線到一起顯示?

1 聯立選欄位 select a.id,a.name name 2014,a.age.b.name name 2013 from select id,name,age from a where time 2014 a,select id,name from a where time 2013 b w...

ORACLE怎麼用SQL查詢多張表和多個時間點的資料的行數

你要加的check 2,check 3.是不同時間點check,和check1是一類的,所以不應該往右加列啊,直接往下加行就行了。而且建議 2列是不能完全標識出區別的,應該加一列,比如select 第一張表 a.first result,count 1 check 1 from c tpa r bs...