1. 基本語法
格式: select * from 表名;
說明: a、from 關鍵字hou'後面是表名,表示數據來自這張表;
b、select 後面寫表中的列名,如果是*表示在結果集中顯示錶中的所有列;
c、在select後面的列名部分,可以使用as爲列起別名,這個別名顯示在結果集中;
d、如果要查詢多個列,之間用逗號分隔
示例:select * from students;
select name, age from students;
select name as a, age from students;
2. 消除重複行
說明:在select 後面列前面使用distinct可以消除重複的行
示例: select gender from students;
select distinct gender from students;
3. 條件查詢
a、語法
select * from 表名 where 條件;
b、比較運算符
等於: = 大於: > 小於: < 大於等於:>= 小於等於: <= 不等於:!=或<>
需求:查詢id值大於3的所有數據
示例: select * from students where id>3; (注意需要全英文字符)
c、邏輯運算符
並且:and 或者: or 非: not
需求:查詢id大於3的女同學
示例:select * from students where id>3 and gender=0;
d、模糊查詢
insert into students values(0,"xijinping",65,1,"beijing",0);
insert into students values(0,"xidada",66,1,"beijing",0);
like
%表示任意多個任意字符
_表示一個任意字符
需求:查詢姓xi的同學
示例:select * from students where name like "xi%";
select * from students where name like "xi_";
e、範圍查詢
in 表示在一個非連續的範圍內;
between ... and ... 表示在一個連續的範圍內;
需求:查詢編號爲6到8的學生
示例:select * from students where id between 6 and 8;
需求:查詢編號爲1,3,7的學生
示例:select * from students where id in (1,3,7);
f、空判斷(可以用於查詢某些項爲空的數據,要舉一反三)
insert into students(name,age) values("tete",19);
注意:null與""是不同的
判斷空: is null;
判斷非空:is not null;
需求:查詢沒有地址的同學
示例:select * from students where address is null;
需求:查詢有地址的同學
示例:select * from students where address is not null;
g、優先級
小括號,not,比較運算符,邏輯運算符
and 比 or you優先級高,如果同時出現並希望先選or,需要結合()來使用。
4、聚合
爲了快速得到統計數據,提供了5個聚合ha函數
a、count(*) 表示計算總行數,括號中可以寫*和列名
b、max(列) 表示求此列的最大值
c、min(列) 表示求此列的最小值
d、sum(列) 表示求此列的和
e、avg(列) 表示求此列的平均值
需求:查詢學生總數
示例:select count(*) from students;
需求:查詢女生的編號最大值
示例:select max(id) from students where gender=0;
需求:查詢女生編號最小值
示例:select min(id) from students where gender=0;
需求:查詢所有學生年齡的和
示例:select sum(age) from students;
需求:查詢所有學生年齡的平均和
示例:select avg(age) from students;
5、分組
按照字段分組,表示此字段相同的數據會被放在一個集合中。
分組後,只能查詢出相同的數據列,對於有差異的數據列無法顯示在結果集中。
可以對分組後的數據進行統計,做聚合運算。
語法:select 列1,列2,聚合...from 表名 group by 列1,列2,列3,...
需求:查詢男女生總數
示例:select gender,count(*) from students group by gender;
select name,gender,count(*) from students group by gender,age;
分組後的數據篩選:select 列1,列2, 聚合...from 表名 group by 列1,列2,列3.... having 列1,...聚合...
示例:select gender, count(*) from students group by gender having gender;
where 與 having的區別:
where 是對from後面指定的表進行篩選,屬於對原始數據的篩選
having是對group by的結果進行篩選
6、排序
語法:select * from 表名 order by 列1 asc|desc, 列2 asc|desc,...
說明:a、將數據按照列1進行排序,如果某些列1的值相同,則按照列2進行排序
b、默認按照從小到大的順序排序
c、asc降序
d、desc升序
需求:將沒有被刪除的數據按照年齡排序
示例:select * from students where isDelete=0 order by age;
select * from students where isDelete=0 order by age desc,order by id desc;(運行出現問題,想要實現的操作是按照年齡降序,若年齡相同再按照id降序)
已解決:select * from students where isDelete=0 order by age desc, id desc;
7、分頁
語法:select * from 表名 limit start, count;
說明:start索引從0開始
示例:select * from students limit 0,3;
select * from students limit 3,3;
select * from students where gender=1 limit 3,3;