數據庫約束
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