數據庫約束
- 非空約束(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的角色和他(他們)的工資、平均工資、最低工資、最高工資(比如遊戲角色職位),如圖: