sql語句中較為重要的查詢邏輯
較複雜的SQL例句
S(Sno,Sname,Sage,Sdept, Ssex) 學生表
C(Cno,Cname,Teacher) 課程表
SC(Sno,Cno,score) 成績表
1、查詢“001”課程比“002”課程成績低的所有學生的學號;
select a.Sno from (select sno, score from SC where Cno='001') a, (select sno, score from SC where Cno='002') b where a.score<b.score and a.sno=b.sno;
2、查詢平均成績大於60分的同學的學號和平均成績;
select Sno,avg(score) from sc group by Sno having avg(score) >60;
3、查詢姓“高”的老師的個數;
select count(distinct(Teacher)) from C where Teacher like '高%';
4、查詢沒學過“XXXX”老師課的同學的學號、姓名;
select S.Sno,S.Sname from S where Sno not in (select distinct( SC.Sno) from SC, C where SC.Cno=C.Cno and C.Teacher='XXXX');
5、查詢學過“001”並且也學過編號“002”課程的同學的學號、姓名;
select S.Sno, S.Sname from S, SC where S.Sno=SC.Sno and SC.Cno='001'and exists ( Select * from SC as SC_2 where SC_2.Sno=SC.Sno and SC_2.Cno='002');
6、查詢學過“XXXX”老師所教的所有課的同學的學號、姓名;
Select Sno,Sname from S where Sno in (select Sno from SC, C where SC.Cno=C.Cno and C.Teacher='XXXX' group by Sno having count(SC.Cno)=(select count(Cno) from C where Teacher='XXXX'))
8、查詢課程編號“002”的成績比課程編號“001”課程高的所有同學的學號、姓名;
Select Sno,Sname from (select S.Sno, S.Sname, score, (select score from SC SC_2 where SC_2.Sno=S.Sno and SC_2.Cno='002') score2 from S, SC where S.Sno=SC.Sno and Cno='001') S_2 where score2 >score;
9、查詢所有課程成績大於60分的同學的學號、姓名;
select Sno,Sname from S where Sno not in (select S.Sno from S, SC where S.Sno=SC.Sno and score<60);
10、查詢沒有學全所有課的同學的學號、姓名;
select S.Sno, S.Sname from S,SC where S.Sno=SC.Sno group by S.Sno having count(Cno) <(select count(Cno) from C)
11、查詢至少有一門課與學號為“95001”的同學所學相同的同學的學號和姓名;
select S.Sno,S.Sname from S,SC where S.Sno=SC.Sno and Cno in (select Cno from SC where Sno='95001')
12、查詢至少學過學號為“95001”同學所有一門課的其他同學學號和姓名;
select distinct SC.Sno,Sname from S,SC where S.Sno=SC.Sno and Cno in (select Cno from SC where Sno='95001')
這是大學期間,老師給的資料庫查詢參考,對於現在不斷在程式語言中進取的人來說保證看過上面的所有查詢邏輯肯定會有更新的認識。個人甚至可以肯定的說,個人的資料庫水平仍舊沒有突破上面12條查詢語句所提供的邏輯,希望這裡將高老師的智慧分享一下。
相關文章
- SQL-基礎語法 - 條件查詢 - 邏輯運算SQL
- 什麼是SQL 語句中相關子查詢與非相關子查詢SQL
- sql語句中JOIN ON 的使用SQL
- sql語句中#{}和${}的區別SQL
- SQL語句中not in 和not exist的區別SQL
- SQL語句中exists和in的區別SQL
- sql查詢語句流程SQL
- SQL mother查詢語句SQL
- SQL查詢語句 (Oracle)SQLOracle
- MyBatis在SQL語句中取list的大小MyBatisSQL
- mysql查詢效率慢的SQL語句MySql
- 利用SQL Profiler處理開銷較大的查詢SQL
- MyBatis的使用三(在sql語句中傳值)MyBatisSQL
- SQL Server 查詢歷史執行的SQL語句SQLServer
- Python 提取出SQL語句中Where的值的方法PythonSQL
- 從根上理解elasticsearch(lucene)查詢原理(1)-lucece查詢邏輯介紹Elasticsearch
- SQL-基礎語法 - 條件查詢 - 模糊查詢SQL
- 將第一個 sql 語句中的結果作為第二個 sql 的引數值SQL
- postgresql dba常用sql查詢語句SQL
- SQL語言基礎(子查詢)SQL
- SQL語言(結構化查詢語言)SQL
- 在mysql查詢效率慢的SQL語句MySql
- Laravel 框架查詢執行的 SQL 語句Laravel框架SQL
- SQL基礎的查詢語句烈鉍SQL
- SQL查詢的:子查詢和多表查詢SQL
- 使用sql語句查詢平均值,使用sql語句查詢資料總條數, not in 篩選語句的使用SQL
- [20180928]避免表示式在sql語句中.txtSQL
- 如何自動填充SQL語句中的公共欄位SQL
- Oracle sql 語句中帶有特殊的字元處理OracleSQL字元
- SQL語句中的AND和OR執行順序問題SQL
- Sql語句本身的優化-定位慢查詢SQL優化
- SQL 查詢語句的執行順序解析SQL
- 記一個實用的sql查詢語句SQL
- [20210112]ashtop查詢特定表的SQL語句.txtSQL
- SQL單表查詢語句總結SQL
- SQL Server 語句日期格式查詢方法SQLServer
- SQL Server-簡單查詢語句SQLServer
- SQL語言基礎(高階查詢)SQL
- SQL語句中不同的連線JOIN及SQL中join的各種用法SQL