SQL Server 資料查詢 --- 複雜查詢

來源:互聯網
上載者:User

/********************************************

例1查詢每個學生及其選修課程的情況

*********************************************/

 代碼如下 複製代碼

SELECT STUDENT.*,SC.* FROM SC,STUDENT WHERE SC.SNO = STUDENT.SNO;

/********************************************

對例1用自然串連完成

*********************************************/

 代碼如下 複製代碼
 SELECT STUDENT.SNAME,STUDENT.SSEX,STUDENT.SAGE,STUDENT.SDEPT,SC.*
 FROM SC,STUDENT       
 WHERE SC.SNO = STUDENT.SNO;

/*****************************************

查詢每一門課程的間接先修課

*****************************************/

 

 代碼如下 複製代碼
SELECT SY.CNO,SX.CPNO FROM COURSE SX,COURSE SY WHERE SX.CNO = SY.CPNO

/********************************************

對例1用左外串連串連完成

*********************************************/

 代碼如下 複製代碼
 SELECT STUDENT.SNAME,STUDENT.SSEX,STUDENT.SAGE,STUDENT.SDEPT,SC.*
 FROM   STUDENT LEFT JOIN SC ON(SC.SNO = STUDENT.SNO);

/********************************************

查詢每個學生的學號、姓名、選修的課程名及成績 *********************************************/

 代碼如下 複製代碼

 SELECT STUDENT.SNO,STUDENT.SNAME,COURSE.CNAME,COURSE.CCREDIT
 FROM SC,STUDENT,COURSE   
 WHERE SC.CNO =COURSE.CNO AND SC.SNO = STUDENT.SNO;

/********************************************  

查詢與劉晨在同一個系學習的學生

*********************************************/

 代碼如下 複製代碼

 SELECT SX.*
 FROM STUDENT SX   
 WHERE SX.SDEPT IN  (
              SELECT SY.SDEPT FROM STUDENT SY WHERE SY.SNAME='劉晨'
 );
/************   

或者如下:

 代碼如下 複製代碼

 SELECT SX.*
 FROM STUDENT SX, STUDENT SY      
 WHERE SX.SDEPT = SY.SDEPT AND SY.SNAME = '劉晨';  或者:

 SELECT *
 FROM STUDENT SX
 WHERE EXISTS (
          SELECT * FROM STUDENT SY WHERE SY.SDEPT = SX.SDEPT AND SY.SNAME='劉晨'
 );  **************/

 

/********************************************  

查詢選修了課程名為"資訊系統"的學生學號和姓名 *********************************************/

 

 代碼如下 複製代碼
 SELECT SNO, SNAME
 FROM STUDENT       
 WHERE SNO IN  (
         SELECT SNO FROM SC
         WHERE  CNO IN  (
                     SELECT CNO FROM COURSE
                     WHERE CNAME = '資訊系統'
                    )
 );  

/********************************************  

找出每個學生超過他選修課程平均成績的課程號

*********************************************/

 

 代碼如下 複製代碼

SELECT SX.SNO,SX.CNO
 FROM SC SX
 WHERE SX.GRADE  >  (
                        SELECT AVG(GRADE)
                       FROM SC SY              
                        WHERE SX.SNO = SY.SNO
);

/*****************************************************  

查詢其他系中比電腦科學系某一學生年齡小的學生姓名和年齡

*******************************************************/

 代碼如下 複製代碼


 SELECT SNAME, SAGE
 FROM STUDENT   
 WHERE SAGE < ANY  (
                       SELECT SAGE
                       FROM STUDENT 
                       WHERE SDEPT='CS'
                    )
       AND SDEPT<>'CS';

/*****************************************************  

查詢其他系中比電腦科學系所有學生年齡小的學生姓名和年齡

*******************************************************/

 代碼如下 複製代碼

 SELECT SNAME, SAGE
 FROM STUDENT   
 WHERE SAGE < ALL  (
                       SELECT SAGE
                      FROM STUDENT 
                       WHERE SDEPT='CS' 
                    )
       AND SDEPT<>'CS';

/*****************************************************  

查詢所有選修了1號課程的學生姓名

*******************************************************/

 代碼如下 複製代碼


 SELECT SNAME
 FROM STUDENT   
 WHERE EXISTS   (
                   SELECT * FROM SC           
                   WHERE SC.SNO = STUDENT.SNO AND SC.CNO='1'          
 );

/******************************************

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

*******************************************/

 代碼如下 複製代碼

 SELECT SNAME
 FROM STUDENT
 WHERE NOT EXISTS (
                     SELECT *
                     FROM COURSE
                     WHERE NOT EXISTS   (
                                           SELECT *
                                           FROM SC
                                           WHERE STUDENT.SNO = SC.SNO AND COURSE.CNO = SC.CNO
                                        )
 );

/*****************************************************

查詢至少選修了學生200215122選修的全部課程的學生號碼

*****************************************************/

 代碼如下 複製代碼

 SELECT DISTINCT SNO
 FROM SC X    
 WHERE NOT EXISTS (
                     SELECT *
                     FROM SC Y
                    WHERE SNO='200215122' AND NOT EXISTS (
                                                            SELECT *
                                                            FROM SC Z
                                                             WHERE Z.SNO = X.SNO AND Y.CNO = Z.CNO             
                                                           )
 );

/**********************************************************

從自身表中選擇一條記錄,修改某個欄位再回插到自身表中

這裡的INSERT INTO 可以用來插入子查詢 *********************************************************/

 代碼如下 複製代碼

 INSERT INTO COURSE(CNO,CNAME,CPNO,CCREDIT)
       SELECT '8',CNAME,CPNO,CCREDIT FROM  COURSE WHERE  CNO='2';

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.