查詢語法:
select 字段(*表示全字段)
from 數據表
【where 條件表達式】
【group by 分組字段【having 分組條件表達式】】
【order by 排序字段【asc | desc】】
例子:
教職工表Teacher(Tno, TName, age, sal, mgr, DNo),TNo為教職工編號,TName為教職工姓名,age年齡,sal為月薪,mgr為教職工的上一級領導的職工號,DNo為部門號;
課程表Course(Cno, CName, CCredits, CTno),Cno為課程編號,CName為課程名字,CCredits為課程學分, CTno為該課程上課老師的編號,其中外鍵CTno來自表Teacher的Tno鍵;
學生表Student(Sno, CLno, SName, SSex, SBir, Email),其中Sno為學生學號,CLno為系別編號,SName為學生姓名,SSex為學生性別,SBir為學生出生日期;
(1)查詢所有教職工的情況;
SELECT *
FROM teacher
(2)查詢所有教職工的職工編號、姓名;
SELECT Tno,TName
FROM teacher
(3)查詢所有教職工的工號和年薪,并且將輸出結果中的列名顯示為==“教職工號”、“年薪”==(注意teacher表里的工資是月薪);
SELECT Tno 教職工號,Sal*12 年薪
FROM teacher
(4)查詢職工編號為0002的教職工情況;
SELECT *
FROM teacher
where Tno='0002'
(5)查詢有選課成績大于等于90分的學生學號(重復學號只出現一次);
SELECT DISTINCT SNO
FROM SC
WHERE SCORE>=90
(6)查詢學生中年齡在21-23歲之間的學生姓名,出生日期;
SELECT Sname, SBir
FROM student
where year(now())-year(SBir) BETWEEN 21 AND 23
(7)查詢在部門01、02、或03的教職工情況;
SELECT *
FROM teacher
where DNo in ('01','02','03')
(8)查詢沒有給出成績的選課情況;
SELECT *
FROM SC
WHERE SCORE IS NULL
(9)查詢最高分大于等于90的課程總門數;
SELECT count(DISTINCT CNo) 課程門數
FROM SC
WHERE SCORE>=90
(10)查詢姓馬的同學信息;
SELECT *
FROM student
WHERE sname like '馬%'
(11)查詢名字里第二個字為劍的同學信息;
SELECT *
FROM student
WHERE SName like '_劍%'
(12)查詢所有職工的姓名和年齡,按年齡從小到大的順序排列;
SELECT tname, age
FROM teacher
ORDER BY age
(13)查詢課程號為001的成績前五名的學生學號和成績(假設成績沒有重復)。
SELECT *
FROM SC
WHERE CNO='001'
ORDER BY SCORE DESC
LIMIT 0,5
(14)查詢課程號為001的成績倒數1、2名的學生學號和成績(成績沒錄入的學生不納入排名)。
SELECT CNO,SCORE
FROM SC
WHERE CNO='001' AND SCORE IS NOT NULL
ORDER BY SCORE
LIMIT 0,2
(15)查詢學號為00001和00002的學生選修課程號為001和002的選課情況;
SELECT CNO,SCORE
FROM SC
WHERE (sno='00001' or sno='00002') and (CNO='001' or CNO='002')
(16)查詢每門課程的最高分
SELECT CNo, Max(score)
FROM SC
GROUP BY CNo
(17)查詢每個系的學生人數以及全部學生總人數;
SELECT Clno,count(*) 人數
FROM student
GROUP BY CLno
with rollup
(18)查詢每個部門年齡35歲及以上的教師的月薪平均工資,找出平均工資超過3000的部門號和平均工資。
SELECT DNo,AVG(sal) 平均工資
FROM teacher
WHERE age>=35
GROUP BY DNo
HAVING AVG(SAL)>=3000