Python_MySQL查詢

條件

  • 語法
select * from 表名 where 條件
例:select * from students where id = 1;

  • where后面支持多種運算符,進行條件的處理
1.比較運算符(=, >, >=, <, <=, != 或 <>)
2.邏輯運算符 (and, or, not)
3.模糊查詢
   - like
   - %表示任意多個字符
   - _表示一個任意字符
4.范圍查詢
    - in表示在一個非連繼續(xù)的范圍內(nèi)
    - between...and...表示在連續(xù)范圍內(nèi)
5.空判斷
    - 注意:null與""是不同的
    - 判空is null
6. 優(yōu)先級由高到低的順序為:小括號,not, 比較運算符,邏輯運算符
7.and比or先運算,如果同時出現(xiàn)并希望先算or,需要結(jié)合()使用

排序

  • 為了方便查看數(shù)據(jù),可以對數(shù)據(jù)進行排序
# 語法
select * from 表名 order by 列1 asc | desc [,列2 asc | desc,...]
# 說明
- 將行數(shù)據(jù)按照列1進行排序,如果某些行列1的值相同時,則按照列2排序,以此類推
- 默認按照列值從小到大排列(asc)
- asc從小到大排列,即升序
- desc從大到小排序,即降序

聚合函數(shù)

  • 為了快速得到統(tǒng)計數(shù)據(jù),經(jīng)常會用到如下5個聚合函數(shù)
- count(*)表示計算總行數(shù),括號中寫星與列名,結(jié)果時相同的
- max(列)表示求此列的最大值
- min(列)表示求此列的最小值
- sum(列)表示求此列的和
- avg(列)表示求此列的平均值
- round(123.23, 1)保留幾位小數(shù),四舍五入

分組

group by
  • group by的含義:將查詢結(jié)果按照1個或多個字段進行分組,字段值相同的為一組
  • group by可用于單個字段分組,也可用于多個字段返祖
group by + group_concat()
  • group_concat(字段名)可以作為一個輸出字段來使用
  • 表示分組后,根據(jù)分組結(jié)果,使用group_concat()來放置每一組的某字段的值的集合
group by + 集合函數(shù)
  • 通過group_concat()的啟發(fā),我們既然可以統(tǒng)計出每個分組的某字段的值的集合,那么我們也可以通過集合函數(shù)來對這個值的集合做一些操作
group by + having
  • having 條件表達式:用來分組查詢后指定一些條件來輸出查詢結(jié)果
  • having 作用和where一樣,但having只能用于group by
group by + with rollup
  • with rollup 的作用是:在最后新贈一行,來記錄當前列里所有的記錄的總和

分頁

  • 當數(shù)據(jù)量過大時,在一頁中查看數(shù)據(jù)是一件非常麻煩的事情
# 語法
select * from 表名 limit start, count
# 說明
從start開始,獲取count條數(shù)據(jù)

連接查詢

  • 當查詢結(jié)果的列來源多張表時,需要將多張表連接成一個大的數(shù)據(jù)集,再選擇合適的列返回
1.內(nèi)連接查詢:查詢結(jié)果為兩個表匹配到的數(shù)據(jù)
 - inner join...on
2.右連接查詢:查詢的結(jié)果為兩個表匹配到的數(shù)據(jù),右表特有的數(shù)據(jù),對于左表中不存在的數(shù)據(jù)使用null填充
 - right join...on
3.左連接查詢:查詢的結(jié)果為兩個匹配到的數(shù)據(jù),左表特有的數(shù)據(jù),對于右表中不存在的數(shù)據(jù)使用null填充
 - left join...on

子查詢

  • 在一個select語句中,嵌入了另外一個select 語句,那么被嵌入的select語句稱之為子查詢語句
  • 如果一個查詢語句查出來的數(shù)據(jù)是有多行多列組成,那么稱之為表級子查詢
  • 如果一個查詢語句中有多個表,那么在select后面指定字段時,要說明表名,即表名,字段名
主查詢和子查詢的關(guān)系
  • 子查詢是嵌入到主查詢中
  • 子查詢時輔助主查詢的,要么充當條件,要么充當數(shù)據(jù)源
  • 子查詢是可以獨立存在的語句,是一條完整的select 語句
子查詢分類
  • 標量子查詢:子查詢返回的結(jié)果是一個數(shù)據(jù)(一行一列)
  • 列子查詢:返回的結(jié)果是一列(一列多行)
  • 行子查詢:發(fā)揮的結(jié)果是一行(一行多列)
  • 多行多列

查詢完整格式

SELECT select_expr [,select_expr,...] [
                FROM tb_name
                [WHERE 條件判斷]
                [GROUP BY {col_name | postion} [ASC | DESC], ...]
                [HAVING WHERE 條件判斷]
                [ORDER BY {col_name | expr | postion} [ASC | DESC], ...]
                [  LIMIT {[offset,]rowcount | row_count OFFSET offset}
]
# 完整的select語句
select distinct * 
from 表名
where ....
group by ... having ...
order by ...
limit start,count
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容