簡單的數據庫查詢操作
格式:
select <目標列名序列> ---需要哪些列
from <表名> ---來自於哪些表
where <行選擇條件> ---根據什麽條件
group by <分組依據列>
having <組選擇條件>
order by <排序依據列>
select * from student
select * from student where sno = ‘1‘
select * from student s,course c,score sc where sc.`sno` = s.`sno` and sc.`cno` = c.`cno`
select distinct * from score //去掉查詢結果的重復行
select * from student where sage between 20 to 25 //查詢20~30歲之間的學生信息
select * from student where sage not between 20 to 25 //查詢不是20~30歲之間的學生信息
select * from student where sdept in (‘計算機系‘,‘管理系‘,‘外語系‘)//查詢計算機系、外語系、管理系的學生名單
select * from student where sdept not in (‘計算機系‘,‘管理系‘)//查詢不是計算機系、管理系的學生名單
迷糊查詢
關鍵字 like
_ 表示匹配任意一個字符
% 表示配備0個或多個字符
[]表示匹配[]中任意的字符
[^]表示不匹配[]中任意的字符
select * from student where sname = ‘王%‘ //表示查詢全部姓王的同學的信息
select * from student where sname = ‘王_‘//表示查詢姓王且名字只要兩個字的同學的信息
select * from student where sname = ‘王__‘//表示查詢姓王且名字只要三個字的同學的信息
select * from student where sname = ‘[趙錢孫李]%‘ 表示查詢姓趙錢孫李的同學的信息
轉義字符:
關鍵字:ESCAPE
select * from sumbit where filed1 like ‘%30!%%‘ ESCAPE ‘!‘ //查詢包含有字符串‘30%‘的記錄
select * from submit where filed like ‘%!_%‘ escape ‘!‘ //查詢包含有字符串‘_‘的記錄
涉及空值的查詢:
select * from score where grade is null //查詢成績為空的信息
select * from score where grade is not null //查詢成績不為空的信息
多重查詢:
select * from student where (sdept = ‘計算機系‘ or sdept = ‘管理系‘) and sage < 25
對查詢結構進行排序:
關鍵字:order by ...排序依據的列
desc ...//降序排列
asc...//升序排列(默認)
select * from student order by sage AES //查詢學生信息以年齡為依據進行降序排列
聚合函數查詢:
關鍵字:count、sum、avg、max、min
*註意:聚合函數不能出現在where子句中
select avg(grade) 平均分 from score where sno = ‘1‘ //查詢學號為1 的同學的平均分
分組查詢:
關鍵字 group by ... (having....)having(並且的意思)
SELECT sno 學號,AVG(grade) 平均分 FROM score GROUP BY sno ORDER BY 平均分 DESC //查詢按學號分組的學生的平均分並以平均分的從高到低排序
SELECT sdept 系別 ,COUNT(sno) 人數 FROM student GROUP BY sdept ORDER BY 人數 DESC //查詢各系的學生數量
SELECT sdept 系別,ssex 性別,COUNT(ssex) 人數 FROM student GROUP BY sdept,ssex ORDER BY sdept//查詢各系性別的人數
SELECT sno,AVG(grade) 平均成績 FROM score GROUP BY sno HAVING 平均成績 > 90
SELECT sno ,AVG(grade) 平均成績 FROM score sc GROUP BY sno
簡單的數據庫查詢操作