1. 程式人生 > >數據庫命令擴展

數據庫命令擴展

bsp 子查詢 col 其中 進行 數字類型 連接 tinc pen

上一章節,主要講數據庫常用的基本操作,本章節,也還是常用到的數據庫命令,稍微做一個擴展,做測試統計的時候會用到哦~主要內容如下:

1、唯一性查詢:DISTINCT;

2、多表查詢;

3、常用函數;

4、連表查詢(左連接、右連接)

·····

【實戰練習】

數據準備:

人員表(users),簽到表(sign),獲獎表(win),如下所示:

users:技術分享圖片 sign:技術分享圖片 win:技術分享圖片

其中,users表中顯示所有人員的信息,sign是每日人員的簽到信息,人員進行簽到後可以進行抽獎,抽到獎的信息會記錄在win表中。

【DISTINCT:唯一性查詢】

唯一性查詢,即大家常說的,去重查詢。

為什麽要去重,什麽時候需要去重呢?

舉個例子,簽到表中用戶每天都可以進行簽到,那如何統計簽到的總人數(註:非總人次)呢,大家知道,同一個人可以有多次簽到的,

這個時候,就需要用關鍵字:DISTINCT ,它可以返回唯一不同的值。

查詢語句如下:

select count(DISTINCT openid) from sign;    -----統計去重後參與簽到的總人數

select DISTINCT openid from sign;           -----統計去重後參與簽到的人員openid

結果如下:

技術分享圖片

技術分享圖片

【多表查詢】

常用到的多表查詢,主要有幾種:

1、連表關系查詢

SELECT a.`openid`,a.`name`,b.`wintime` FROM
users a,win b WHERE a.`openid`=b.`openid`; -----查詢中獎人的openid、姓名、中獎時間 SELECT a.`openid`,a.`name`FROM users a,win b WHERE a.`openid`=b.`openid`; -----查詢中獎人的openid、姓名
SELECT openid,name FROM users WHERE `openid` IN (SELECT openid FROM win); -----查詢中獎人的openid、姓名

結果如下:

技術分享圖片 (第1條查詢結果) 技術分享圖片 (第2、3條查詢結果一致)

2、多表多記錄查詢

SELECT * FROM
(SELECT COUNT(openid) AS 總人數 FROM users) A1,
(SELECT COUNT(DISTINCT openid) AS 總簽到人數 FROM SIGN)A2,
(SELECT COUNT(openid) AS 總簽到人次 FROM SIGN)A3,
(SELECT COUNT(openid) AS 獲獎人數 FROM win)A4,
(SELECT openid AS 5號獲獎人員openid FROM win WHERE wintime LIKE %05)A5;     -----查詢users表總人數,sign表總簽到人數、總簽到人次,win表獲獎人數統計信息以及5號當天獲獎人的信息

結果如下:

技術分享圖片

需要註意的是,每一個子查詢的結果和命名必須是唯一值,後面定義的編號A1、A2···,也必須唯一,否則會報錯。

【常用函數】

平時工作,比較常用的函數,count()、max()、avg()、sum()。

count():返回指定列的統計值(即行數);

SELECT COUNT(openid) AS 總人數 FROM users;    -----統計users表中的總人數

max():返回指定列的值的最高值,對應的,還有min(),返回列的最低值;

SELECT MAX(score) FROM win ;        -----統計win表中最高分

avg():返回指定列的平均值;

SELECT AVG(score) FROM win ;      -----統計win表中平均分

sum():返回指定列的總數,數字類型的值得總和。

SELECT SUM(score) FROM win ;      -----統計win表中,所有人的得分總和

【連表查詢(左連接、右連接)】

(未完待續····)

如果對你有用,就趕緊收藏吧!拿走不謝!

數據庫命令擴展