mysql 查询 带数据库实例_数据库查询实例(包含所有where条件例子)
查詢指定列
[例1] 查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。
SELECT Sno,Sname
FROM Student;
[例2] 查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。
SELECT Sname,Sno,Sdept
FROM Student;
[例3] 查詢?nèi)w學(xué)生的詳細(xì)記錄。
SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Student;
或
SELECT *
FROM Student;
[例4] 查全體學(xué)生的姓名及其出生年份。
SELECT Sname,2004-Sage /*假定當(dāng)年的年份為2004年*/ FROM Student;
[例5] 查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小 寫(xiě)字母表示所有系名
SELECT Sname,?Year of Birth: ‘,2004-Sage,
ISLOWER(Sdept)
FROM Student;
[例6] 查詢選修了課程的學(xué)生學(xué)號(hào)。
SELECT Sno FROM SC;
等價(jià)于:
SELECT ALL Sno FROM SC;
[例7] 查詢計(jì)算機(jī)科學(xué)系全體學(xué)生的名單。
SELECT Sname www.111cn.net
FROM Student
WHERE Sdept=?CS?;
[例8] 查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。 SELECT Sname,Sage
FROM Student
WHERE Sage < 20;
[例9] 查詢考試成績(jī)有不及格的學(xué)生的學(xué)號(hào)。
SELECT DISTINCT Sno
FROM SC
WHERE Grade<60;
[例10] 查詢年齡在20~23歲(包括20歲和23歲)之間的學(xué)生的 姓名、系別和年齡
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;
[例11] 查詢年齡不在20~23歲之間的學(xué)生姓名、系別和年齡
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;
[例12]查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和 性別。
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN ( ‘IS’,’MA’,’CS’ );
[例13]查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別。 SELECT Sname,Ssex
FROM Student
WHERE Sdept NOT IN ( ‘IS’,’MA’,’CS’ );
[例14] 查詢學(xué)號(hào)為200215121的學(xué)生的詳細(xì)情況。
SELECT *
FROM Student
WHERE Sno LIKE ?200215121′;
等價(jià)于:
SELECT *
FROM Student
WHERE Sno = ‘ 200215121 ‘;
[例15] 查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。
SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname LIKE ?劉%?;
[例16] 查詢姓”歐陽(yáng)”且全名為三個(gè)漢字的學(xué)生的姓名。
SELECT Sname
FROM Student
WHERE Sname LIKE ‘歐陽(yáng)__’;
[例17] 查詢名字中第2個(gè)字為”陽(yáng)”字的學(xué)生的姓名和學(xué)號(hào)。
SELECT Sname,Sno
FROM Student
WHERE Sname LIKE ?__陽(yáng)%?;
[例18] 查詢所有不姓劉的學(xué)生姓名。
SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname NOT LIKE ‘劉%’;
[例19] 查詢DB_Design課程的課程號(hào)和學(xué)分。
SELECT Cno,Ccredit
FROM Course
WHERE Cname LIKE ‘DB_Design’ ESCAPE ‘?;
[例20] 查詢以”DB_”開(kāi)頭,且倒數(shù)第3個(gè)字符為 i的課程的詳細(xì)情況。 SELECT *
FROM Course
WHERE Cname LIKE ‘DB_%i_ _’ ESCAPE ‘ ?;
[例21] 某些學(xué)生選修課程后沒(méi)有參加考試,所以有選課記錄,但沒(méi) 有考試成績(jī)。查詢?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。 SELECT Sno,Cno
FROM SC
WHERE Grade IS NULL
[例22] 查所有有成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào)。
SELECT Sno,Cno
FROM SC
WHERE Grade IS NOT NULL;
[例23] 查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。
SELECT Sname
FROM Student
WHERE Sdept= ‘CS’ AND Sage<20;
改寫(xiě)[例12]
[例12] 查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系 (CS)學(xué)生的姓名和性別。
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN ( ‘IS’,’MA’,’CS’ )
可改寫(xiě)為:
SELECT Sname,Ssex
FROM Student
WHERE Sdept= ‘ IS ‘ OR Sdept= ‘ MA’ OR Sdept= ‘ CS ‘;
[例24] 查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分 數(shù)降序排列。
SELECT Sno,Grade
FROM SC
WHERE Cno= ‘ 3 ‘
ORDER BY Grade DESC;
[例25] 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號(hào)升序排 列,同一系中的學(xué)生按年齡降序排列。
SELECT *
FROM Student
ORDER BY Sdept,Sage DESC;
[例26] 查詢學(xué)生總?cè)藬?shù)。
SELECT COUNT(*)
FROM Student;
[例27] 查詢選修了課程的學(xué)生人數(shù)。
SELECT COUNT(DISTINCT Sno)
FROM SC;
[例28] 計(jì)算1號(hào)課程的學(xué)生平均成績(jī)。
SELECT AVG(Grade)
FROM SC
WHERE Cno= ‘ 1 ‘;
[例29] 查詢選修1號(hào)課程的學(xué)生最高分?jǐn)?shù)。
SELECT MAX(Grade)
FROM SC
WHER Cno= ? 1 ?;
[例30]查詢學(xué)生200215012選修課程的總學(xué)分?jǐn)?shù)。
SELECT SUM(Ccredit)
FROM SC, Course
WHER Sno=’200215012′ AND SC.Cno=Course.Cno;
[例31] 求各個(gè)課程號(hào)及相應(yīng)的選課人數(shù)。
SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno;
[例32] 查詢選修了3門(mén)以上課程的學(xué)生學(xué)號(hào)。
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*) >3;
[例33] 查詢每個(gè)學(xué)生及其選修課程的情況
SELECT Student.*,SC.*
FROM Student,SC
WHERE Student.Sno = SC.Sno;
[例34] 對(duì)[例33]用自然連接完成。
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student,SC
WHERE Student.Sno = SC.Sno;
[例35]查詢每一門(mén)課的間接先修課(即先修課的先修課)
SELECT FIRST.Cno,SECOND.Cpno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cpno = SECOND.Cno;
[例 36] 改寫(xiě)[例33]
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT OUT JOIN SC ON (Student.Sno=SC.Sno);
[例37]查詢選修2號(hào)課程且成績(jī)?cè)?0分以上的所有學(xué)生
SELECT Student.Sno, Sname
FROM Student, SC
WHERE Student.Sno = SC.Sno AND
/* 連接謂詞*/
SC.Cno= ?2? AND SC.Grade > 90; /* 其他限定條件 */
[例38]查詢每個(gè)學(xué)生的學(xué)號(hào)、姓名、選修的課程名及成績(jī)
SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course /*多表連接*/
WHERE Student.Sno = SC.Sno
and SC.Cno = Course(www.111cn.net).Cno;
[例39] 查詢與“劉晨”在同一個(gè)系學(xué)習(xí)的學(xué)生。
此查詢要求可以分步來(lái)完成
① 確定“劉晨”所在系名
SELECT Sdept
FROM Student WHERE Sname= ‘ 劉晨 ‘;
結(jié)果為: CS
② 查找所有在IS系學(xué)習(xí)的學(xué)生。
SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept= ‘ CS ‘;
將第一步查詢嵌入到第二步查詢的條件中
SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept IN
(SELECT Sdept
FROM Student
WHERE Sname= ? 劉晨 ?);
此查詢?yōu)椴幌嚓P(guān)子查詢。
用自身連接完成[例39]查詢要求
SELECT S1.Sno,S1.Sname,S1.Sdept
FROM Student S1,Student S2
WHERE S1.Sdept = S2.Sdept AND
S2.Sname = ‘劉晨’;
[例40]查詢選修了課程名為“信息系統(tǒng)”的學(xué)生學(xué)號(hào)和姓名 SELECT Sno,Sname ③ 最后在Student關(guān)系中 FROM Student 取出Sno和Sname WHERE Sno IN
(SELECT Sno ② 然后在SC關(guān)系中找出選 FROM SC 修了3號(hào)課程的學(xué)生學(xué)號(hào) WHERE Cno IN
(SELECT Cno ① 首先在Course關(guān)系中找出 FROM Course “信息系統(tǒng)”的課程號(hào),為3號(hào) WHERE Cname= ?信息系統(tǒng)?
)
);
用連接查詢實(shí)現(xiàn)[例40]
SELECT Sno,Sname
FROM Student,SC,Course
WHERE Student.Sno = SC.Sno AND
SC.Cno = Course.Cno AND
Course.Cname=?信息系統(tǒng)?;
例:假設(shè)一個(gè)學(xué)生只可能在一個(gè)系學(xué)習(xí),并且必須屬于一個(gè) 系,則在[例39]可以用 = 代替IN :
SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept =
(SELECT Sdept
FROM Student
WHERE Sname= ?劉晨?);
[例41]找出每個(gè)學(xué)生超過(guò)他選修課程平均成績(jī)的課程
號(hào)。
SELECT Sno, Cno
FROM SC x
WHERE Grade >=(SELECT AVG(Grade)
FROM SC y
WHERE y.Sno=x.Sno);
[例42] 查詢其他系中比計(jì)算機(jī)科學(xué)某一學(xué)生年齡
小的學(xué)生姓名和年齡
SELECT Sname,Sage
FROM Student
WHERE Sage < ANY (SELECT Sage
FROM Student WHERE Sdept= ‘ CS ‘) AND Sdept <> ?CS ‘ ; /*父查詢塊中 的條件 */
用聚集函數(shù)實(shí)現(xiàn)[例42]
SELECT Sname,Sage
FROM Student
WHERE Sage <
(SELECT MAX(Sage)
FROM Student www.111cn.net
WHERE Sdept= ?CS ‘)
AND Sdept <> ‘ CS ?;
[例43] 查詢其他系中比計(jì)算機(jī)科學(xué)系所有學(xué)生年齡都小 的學(xué)生姓名及年齡。
方法一:用ALL謂詞
SELECT Sname,Sage
FROM Student
WHERE Sage < ALL
(SELECT Sage
FROM Student
WHERE Sdept= ‘ CS ‘)
AND Sdept <> ‘ CS ?;
方法二:用聚集函數(shù)
SELECT Sname,Sage
FROM Student
WHERE Sage <
(SELECT MIN(Sage)
FROM Student
WHERE Sdept= ‘ CS ‘)
AND Sdept <>’ CS ?;
[例44]查詢所有選修了1號(hào)課程的學(xué)生姓名。
用嵌套查詢
SELECT Sname
FROM Student
WHERE EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno= ‘ 1 ‘);
用連接運(yùn)算
SELECT Sname
FROM Student, SC
WHERE Student.Sno=SC.Sno AND SC.Cno= ’1′;
[例45] 查詢沒(méi)有選修1號(hào)課程的學(xué)生姓名。
SELECT Sname
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno = Student.Sno AND Cno=’1′);
[例39]查詢與“劉晨”在同一個(gè)系學(xué)習(xí)的學(xué)生。
可以用帶EXISTS謂詞的子查詢替換:
SELECT Sno,Sname,Sdept
FROM Student S1
WHERE EXISTS
(SELECT *
FROM Student S2
WHERE S2.Sdept = S1.Sdept AND
S2.Sname = ?劉晨?);
[例46] 查詢選修了全部課程的學(xué)生姓名。
SELECT Sname
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM Course
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno= Student.Sno AND Cno= Course.Cno )
);
[例47]查詢至少選修了學(xué)生200215122選修的全部課程的學(xué)
生號(hào)碼。
用NOT EXISTS謂詞表示:
SELECT DISTINCT Sno
FROM SC SCX
WHERE NOT EXISTS
(SELECT *
FROM SC SCY
WHERE SCY.Sno = ‘ 200215122 ‘ AND
NOT EXISTS
(SELECT *
FROM SC SCZ
WHERE SCZ.Sno=SCX.Sno AND
SCZ.Cno=SCY.Cno));
[例48] 查詢計(jì)算機(jī)科學(xué)系的學(xué)生及年齡不大于19歲的學(xué)生。
方法一:
� SELECT *
� FROM Student
� WHERE Sdept= ‘CS’
� UNION
� SELECT *
� FROM Student
� WHERE Sage<=19;
方法二:
SELECT DISTINCT *
FROM Student
WHERE Sdept= ‘CS’ OR Sage<=19;
[例49] 查詢選修了課程1或者選修了課程2的學(xué)生。
SELECT Sno
FROM SC
WHERE Cno=’ 1 ‘
UNION
SELECT Sno
FROM SC
WHERE Cno= ‘ 2 ‘;
[例50] 查詢計(jì)算機(jī)科學(xué)系的學(xué)生與年齡不大于19歲
的學(xué)生的交集
SELECT *
FROM Student
WHERE Sdept=’CS’
INTERSECT
SELECT *
FROM Student
WHERE Sage<=19
注:sql server 無(wú)交運(yùn)算
[例50] 實(shí)際上就是查詢計(jì)算機(jī)科學(xué)系中年齡不大
于19歲的學(xué)生
SELECT *
FROM Student
WHERE Sdept= ?CS? AND Sage<=19;
[例51] 查詢選修課程1的學(xué)生集合與選修課程2的學(xué)生集
合的交集
SELECT Sno
FROM SC
WHERE Cno=’ 1 ‘
INTERSECT
SELECT Sno
FROM SC
WHERE Cno=’2 ‘;
[例51]實(shí)際上是查詢既選修了課程1又選修了課程2
的學(xué)生
SELECT Sno
FROM SC
WHERE Cno=’ 1 ‘ AND Sno IN
(SELECT Sno FROM SC
WHERE Cno=’ 2 ‘);
[例52] 查詢計(jì)算機(jī)科學(xué)系的學(xué)生與年齡不大于19歲的學(xué)
生的差集。
SELECT *
FROM Student
WHERE Sdept=’CS’
EXCEPT
SELECT *
FROM Student
WHERE Sage <=19;
注:sql server 無(wú)差運(yùn)算
[例52]實(shí)際上是查詢計(jì)算機(jī)科學(xué)系中年齡大于19歲
的學(xué)生
SELECT *
FROM Student
總結(jié)
以上是生活随笔為你收集整理的mysql 查询 带数据库实例_数据库查询实例(包含所有where条件例子)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: go1.18新特性
- 下一篇: linux cmake编译源码,linu