欄位約束
目的:保證資料的:有效性、完整性、正確性。
分類:
- not null: 非空約束 此列不為null 必須提供
- unique: 唯一約束 此列的值不能重複
- primary key: 主鍵約束 唯一標一條資料
- foreign key: 外來鍵約束 建立不同表之間的關係
非空約束&唯一約束
not null: 非空約束 此列不為null 必須提供
例如下面帶有not null或者帶有unique的欄位:
CREATE TABLE students(
-> stu_num char(8) not null unique,
-> stu_name varchar(20) not null,
-> stu_age int not null,
-> stu_tel char(11) not null unique,
-> stu_qq varchar(11) unique
-> );
主鍵約束
一張資料表只能有一個主鍵,不過一個主鍵可以有多個列組成(聯合主鍵),另外,主鍵一定非空且唯一,所以設定主鍵之後,該欄位就沒必要加非空和唯一約束了,比如:
寫法一:
CREATE TABLE students(
-> stu_num char(8) not null primary key,
-> stu_name varchar(20) not null,
-> stu_age int not null,
-> stu_tel char(11) not null unique,
-> stu_qq varchar(11) unique
-> );
寫法二:
CREATE TABLE students(
-> stu_num char(8) not null,
-> stu_name varchar(20) not null,
-> stu_age int not null,
-> stu_tel char(11) not null unique,
-> stu_qq varchar(11) unique,
-> primary key(stu_num)
-> );
建立表之後新增主鍵約束
用modify
ALTER table stus modify stu_num char(4) primary key
主鍵自動增長
CREATE tabletypes(
type_id int primary key auto_increment,
type_name varchar(20) not null,
)
注意:自動增長從1開始, 每天夾一條記錄,計數器+1,刪除某條記錄後,計數器不會更新,所以自增只保證唯一性,不保證連續性。
聯合主鍵(使用頻率低)
將資料表中的多個欄位組合在一起
CREATE table grades(
stunum char(8),
course_id int,
score int,
primary key(str_num, course_id
)
外來鍵約束
後面多表關聯再展開
參考:bilibili