1. 程式人生 > >SQL--多表查詢

SQL--多表查詢

連線查詢的where子句中用來連線兩個表的條件稱為連線條件,用於連線的兩個屬性值必須可以比較。

              格式:表名1.列名  比較運算子  表名2.列名  

連線的幾種方式:等值連線和非等值連線,自身連線,外連線,複合條件連線

             eg:  //複合連線

                             表名1.列名  比較運算子  表名2.列名   and  表名1.列名  比較運算子  表名2.列名  

巢狀查詢 :  帶有IN謂詞的子查詢;帶有比較運算子的子查詢;帶有ANY,ALL謂詞的子查詢;

                帶有Exists謂詞的子查詢(相關自查詢);

相關子查詢的處理過程是:首先取外層查詢表中的第一個元組,根據它與內層查詢相關的屬性值   處理內層查詢,

                                        若where返回值為真值,擇取外層查詢中 的該元組的資料存入結果表。

                                        for(){

                                                    for(){

                                                          }

           集合查詢:select查詢是元組的集合,多個select結果的集合可以進行集合操作:union , intersect, except.  

                                                                                                                               並集  ,交集,  差集

           select  Sname 

           From    Student

           where  Sno  IN

                               (  select  Sno

                                   from   SC

                                    where Cno='2');

           select  Sname ,Sage

           From    Student

           where  Sage <ANY(    select  Sage

                                              from   Student

                                               where  Sdept='CS')     AND    Sdept<>'CS'

            //查詢其他系中,比計算機科學系某一學生小的學生姓名和年齡


              查詢 選修了全部課程的學生姓名。

                 學生---->學號----->所有 的課程號

             select Sname

              From Student              

             where Not Exists(

                            select *

                             from  Course

                              where  not exist(

                                         selcet *

                                          from SC

                                          where  Sc.Cno=Course.Cno

                                                      and     Sc.Sno=Student.Sno

                                                          ));