MYSQL表的增刪改查(進階)

數據庫約束

1.約束類型
1)NOT NULL:指示某列不能存儲NULL值
2)UNIQUE:保證某列得每行必須擁有唯一的值
3)DEFAULT:規定沒有給列賦值時的默認值
4)PRIMARY KEY:NOT NULL和UNIQUE的結合,確保某列(或兩個列多個列的結合)有唯一標識
5)FORIENGN KEY:保證一個表中的數據匹配另一個表中的值的參照完整性
6)CHECK:保證列中的值符合指定的條件
2.NULL約束
創建表時,可以指定某列不爲空:

create table student(
  id int not null,
  sn int,
  name varchar(20),
  qq_mail varchar(20)
  );
  

3.UNIQUE:唯一約束
指定sn列爲唯一的,不重複的:
在這裏插入圖片描述
4.DEFAULT:默認值約束
指定插入時,name列爲空,默認值爲unkown
在這裏插入圖片描述
5.PRIMARY KEY:主鍵約束
指定id列爲主鍵:
在這裏插入圖片描述
對於整數類型的主鍵,常搭配自增長auto_increment來使用,插入數據時對應字段不給值時,使用最大值+1

--主鍵是not null和unique的結合,可以不用not null--
id int primary key auto_increment,

6.FOREIGN KEY:外鍵約束
外鍵用於關聯其他表的主鍵或唯一鍵,語法:
foreign key (字段名) reference 主表(列)
舉例:創建學生表student,一個學生對應一個班級,一個班級對應多個學生,使用id爲主鍵,classes-id爲外鍵,關聯班級表id
在這裏插入圖片描述

表的設計

有三大類,一對一,一對多,多對多
一對一
在這裏插入圖片描述
一對多
在這裏插入圖片描述
多對多
在這裏插入圖片描述

新增

插入查詢結果
語法:insert into 表名 [列名1,列名2…] select …
在這裏插入圖片描述

查詢

聚合查詢
1、常見的聚合函數:Count,Sum,Avg,Max,Min
例如:1)統計班級收集得qq_mail有多少個,qq_mail爲null的數據不會計入結果

select count(qq_mail) from student

2)統計數學成績不及格(<60)的總分,沒有返回null

select sum(math) from exam_result where math<60;

2.group子句
select中使用group by 子句可以對指定列進行分組查詢時,select指定的字段必須是‘分組依據字段’,其他字段若想出現在select中則必須包含在聚合函數中
語法:在這裏插入圖片描述
3.Having
Group By字句進行分組以後,需要對分組結果再進行條件過濾時,不能使用Where語句,而需要用Having
在這裏插入圖片描述

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