目錄
-
起別名
as 給字段/表起別名
-
去重
select distinct 字段1,... from 表名
-
條件
使用where子句對錶中的數據篩選,符合條件的數據會出現在結果集中
語法:select 字段1,字段2... from 表名 where 條件
where後面支持多種運算符,進行條件的處理:
比較運算:= > >= < <= !=或<>
邏輯運算:and or not
模糊查詢:like
%:任意多個字符
_:一個任意字符
範圍查詢:
in:非連續的範圍內
between …… and ……
空判斷:null與 ''是不同的
判空:is null
判非空:is not null
-
排序
select * from 表名
order by 列1 asc|desc,列2 asc|desc,...
- 多個列參與排序時,先依據列1排,如果列1的值相同時,則按照列2排序,以此類推
- 默認是從小到大,即升序
- asc升序,desc降序
-
聚合函數
聚合函數不能在where的條件中使用
count(*):計算總行數,括號中寫*/列名,結果時相同的
max(列):最大值
min(列):最小值
sum(列):求和
avg(列):平均值
爲什麼聚合函數不可以寫在where的後面而能寫在having後面?
因爲聚合函數前面一定要有結果集,而在mysql內部運行機制中,where後面還沒有結果集,所以聚合函數不可以寫在where的後面。但having是接在分組的後面,而分組是有結果集的,所以having前是有結果集的,所以聚合函數可以寫在having的後面
-
分組
按照字段分組,此字段相同的數據會被放到一個組中,分組的目的是對每一組的數據進行統計(使用聚合函數)
分組後的數據篩選:
select 字段1,字段2,聚合 ... from 表名
group by 字段1,字段2,字段3...
having 字段1,...聚合...
對比where和having:
where是對from後面指定的表進行數據篩選,屬於對原始數據的篩選
having是對group by分組後的結果進行篩選
having後面的條件中可以使用聚合函數,where後面不可以
-
獲取部分行
select * from 表名
limit start,count
- 從start開始,獲取count條數據;
- 索引從0開始
每頁顯示m條數據,求:顯示第n頁的數據
select * from students limit (n-1)*m,m