/********************************************
例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'; |