mysql:數據庫約束、聚合查詢、分組查詢學習

數據庫約束
  • 非空約束(NOT NULL)
    非空約束就是指定某列不能存儲NULL,例如我們創建一個學生表,指定id不能爲NULL,如圖:
    在這裏插入圖片描述
    desc student可以看到id字段不爲NULL,如圖:
    在這裏插入圖片描述
  • 唯一約束(UNIQUE)
    例如我們制定sn列是唯一的,不重複的,如圖:
    在這裏插入圖片描述
    desc student可以看到sn的Key是唯一的,如圖:
    在這裏插入圖片描述
  • 主鍵約束(PRIMARY KEY)
    主鍵表示的就是非空且唯一的意思,即NOT NULL和UNIQUE的結合,這裏我們指定id爲主鍵,如圖:
    在這裏插入圖片描述
    desc student發現id的Key就是PRI即主鍵:
    在這裏插入圖片描述
    在這裏其實主鍵的關鍵字 就是primary key,例如:
    在這裏插入圖片描述
    desc student就是:
    在這裏插入圖片描述
    發現也可以設置id爲主鍵,當然也可以這樣寫,如圖:
    在這裏插入圖片描述
    也可以達到相同的效果;
    組合主鍵
    如圖:
    在這裏插入圖片描述
    desc student可得:
    在這裏插入圖片描述
    它表示的意思就是id可以重複,但是id和sn的組合不能重複
  • 默認約束(DEAFAULT)
    可以指定插入數據時,name字段爲空,默認值爲unkown,如圖:
    在這裏插入圖片描述
    desc student可得name字段的默認信息是unkown:
    在這裏插入圖片描述
  • CHECK子句
    例如:
    在這裏插入圖片描述
    表示約束gender字段只有兩種,即男和女;在表中我們是看不到check約束的,即使使用show create table student也無法看到;
  • 自增屬性
    自增屬性是對於整數類型的主鍵,搭配自增auto_increment來使用,插入數據對應字段沒有給出值的話,使用最+1,例如:
    在這裏插入圖片描述
    id具有自增屬性,當我們插入一條數據時,例如:
    在這裏插入圖片描述
    此時小王的id是1,然後我們再插入一條小康的數據,id我們給成NULL,此時:
    在這裏插入圖片描述
    發現此時小康的id自動增加爲2,因爲id字段有了自增屬性;
  • 添加註釋
    添加註釋我們使用comment來添加,例如:
    在這裏插入圖片描述
    使用show create table student可以查看,例如:
    在這裏插入圖片描述
    註釋就是給每一個字段註釋;
  • 外鍵約束(FOREIGN KEY )
    外鍵就是通過一個字段關聯另一張表,外鍵約束就是這個字段參照約束另一張表中的值。
    例如我們此時創建衣蛾學生表和一個班級表,例如:
    在這裏插入圖片描述
    在這裏插入圖片描述
    此時student表通過外鍵使得class_id關聯了classes表的id,可以查看student表:
    在這裏插入圖片描述
    即class_id是外鍵;
聚合查詢

我們mysql中常用的聚合函數有COUNT、SUM、AVG、MIN、MAX

  • COUNT
    它的主要作用就是得到查詢的數據的數量,例如我們建立一個學生表,插入一些學生數據,得到下表,如圖:
    在這裏插入圖片描述
    此時我們可以統計班級有多少學生,例如:
    在這裏插入圖片描述
  • SUM
    SUM的作用是得到查詢到的數據的總和,還是那張學生表,我們可以統計學生總成績,例如:
    在這裏插入圖片描述
    需要注意的一點是,SUM()括號中必須是數字,不然沒有意義。
  • AVG
    它的作用是求查詢到的數據的平均值,括號中必須是數字,例如:
    在這裏插入圖片描述
    求得這四個學生的成績平均值是83.7.
  • MIN
    它的作用是得到查詢的數據的最小值,括號中必須是數字,例如:
    在這裏插入圖片描述
    得到這四個學生成績最低的是77.6分。
  • MAX
    它的作用是得到查詢的數據的最大值,括號中必須是數字,例如:
    在這裏插入圖片描述
    得到這四個學生成績最高的是90.4分。
分組查詢

也就是以某一列進行分組查詢,使用Group By子句對指定列進行分組查詢需要注意的是分組查詢時select指定的字段必須是“分組依據字段”,其他字段如果想出現在select中必須包含在聚合函數中;
例如:我們這裏實現一個僱員表,例如:
在這裏插入圖片描述
此時我們要查詢每個角色的工資,最高工資、最低工資和平均工資,但是我們可以看到遊戲角色有三個,因此要查看工資要將這三個人的都顯示出來,因此會使用到group_concat子句,如圖:
在這裏插入圖片描述
分組查詢時,如果要進行條件過濾,不能使用where而使用having替代,例如顯示平均工資低於1500的角色和他(他們)的工資、平均工資、最低工資、最高工資(比如遊戲角色職位),如圖:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章