Sql語句之 單表查詢
一.一般查詢
1.查看表中的所有記錄 以及 所有字段(屬性)
語句 : select * from student;
2.只查看某些字段
語句:select sname,sex from student;
3.把查詢出來的結果的字段名顯示為其它名字
語句: select sname as ‘姓名’ , sage as ‘年齡’ from student;
4.在查詢結果中添加一列,這一列的值為一個常量
語句:select sname,sex,’廣州’ address from student;
5.把某些字段合並后顯示出來(我先在表中添加了一個字段score,它的值為90)
語句: select sname,(sage+score) as ‘年齡加得分’ from student;
注意,合並的字段的數據類型必須一致。
6.把查詢出來的結果的重復記錄去掉
語句: select distinct score from student;
因為學生們的成績都是90,去掉重復后,只顯示一個記錄。
條件查詢
除了根據字段來查詢,我們還可以通過設定某些條件來查詢,得到自己想要的記錄。
使用where關鍵字來設置條件;
1.單條件查詢
查詢名字為 Jax的學生的信息:
語句:select * from student where sname=’Jax’;
2.多條件查詢
查詢名字為JinX,並且年齡為18歲的學生信息:
語句: select * from student where sname=’JinX’ and sage=18;
查詢名字為VN,或則EZ的學生的年齡。
語句:select sage from student where sname=’VN’ or sname=’EZ’;
3.范圍查詢
查詢年齡在17到20歲的學生的信息。
語句:SELECT * FROM student WHERE sage BETWEEN 17 AND 20; -- 包前包后
4.判空查詢
判空主要有兩個:一.判斷是否為null,二.判斷是否為空字符串
判斷是否為null: 語句 select * from student where score is not null;
select * from student where score null;
判斷是否為空字符串: 語句 select * from student where sex<>’’; ------”<>”表示 “不等於”
Select * from student where sex=’’;
5.模糊查詢
使用 like 關鍵字,”%”代表任意數量的字符,”_”代表占位符。
查詢名字為J開頭的學生的信息:
語句 :select * from student where sname like ‘J%’;
查詢姓名里第二個字母為a的學生的信息
語句: select * from student where sname like ‘_a%’;
6.分頁查詢
分頁查詢主要用於查看第N條 到 第M條的信息,通常和排序查詢一起使用。
使用limit關鍵字,第一個參數表示從條記錄開始顯示,第二個參數表示要顯示的數目。
表中默認第一條記錄的參數為0.
查詢學生表中第二到第三條的信息:
語句 : select * from student limit 1,2;
7.查詢后排序
查詢后的見過按照某個字段來排序。
關鍵字:order by , asc:升序 , desc:降序
按照年齡的升序排序:
語句:select * from student order by sage asc;
8.聚合查詢
如果我們需要對查詢出來的結果進行求和,求平均值,求最大最小值,統計顯示的數目等運算,我們就要用到聚合查詢,
關鍵字:sum,avg,max,min,count
查詢所有學生年齡的和: select sum(sage) from student ;
查詢所有學生年齡的平均值:select avg(sage) from student;
查詢年齡最大的學生的年齡: select max(sage) from student;
查詢年齡最小的學生的年齡: select min(sage) from student;
統計表中學生的數目:select count(sname) from student;
9.分組查詢
可以把查詢出來的結果根據某個條件來分組顯示
關鍵字:broup by
根據性別把學生分組:
Selete * from student group by sex;
-- 2.12 分組篩選查詢
-- 需求: 查詢哪些區的人數大於等於2個
-- 1)查詢每個區的情況 2)添加條件
-- 預期結果: 廣州天河 2
-- 注意:如果使用了group by,在分組基礎上進行篩選要使用having關鍵字
SELECT address,COUNT(*) FROM student GROUP BY address HAVING COUNT(*)>=2;