新增約束可以在兩個時間點,一是在建立表時,二是在修改表結構時
行級約束案例:
drop
table
ifexists major;
create
table major(
id int
primary
key,
# 主鍵約束
name varchar
(255
)not
null
# 非空約束
)drop
table
ifexists student;
create
table student(
id int
primary
key,
# 主鍵約束
name varchar
(255
)not
null
,# 非空約束
gender char(1
)check
(gender=
'男'or gender=
'女')
,# 檢查約束
seat int
unique
,# 唯一約束
age int
default18,
# 預設值
majorid int
# foreign key references major(id) # 外來鍵約束這樣寫不支援
)
表級約束案例:
drop
table
ifexists major;
create
table major(
id int
, name varchar
(255),
constraint pk primary
key(id));
drop
table
ifexists student;
create
table student(
id int
, name varchar
(255),
gender char(1
),seat int
, age int
, majorid int
,constraint pk primary
key(id)
,constraint uq unique
(seat)
,constraint ck check
(gender=
'男'or gender=
'女')
,constraint fk_student_major foreign
key(majorid)
references major(id)
)
結合使用一般的通用寫法是除了外來鍵,其他的都定義為行級約束,例如:desc table_name
和show index from table_name
檢視表的約束,建立聯合主鍵時需要定義為表級主鍵約束
drop
table
ifexists student;
drop
table
ifexists major;
create
table major(
id int
, name varchar
(255),
constraint pk primary
key(id));
create
table student(
id int
primary
key,
# 主鍵約束
name varchar
(255
)not
null
,# 非空約束
gender char(1
)check
(gender=
'男'or gender=
'女')
,# 檢查約束
seat int
unique
,# 唯一約束
age int
default18,
# 預設值
majorid int
,constraint fk_student_major foreign
key(majorid)
references major(id)
)
# 增加非空約束
alter
table student modify
column name varchar
(255
)not
null
;# 增加預設值約束
alter
table student modify
column age int
default18;
# 增加列級主鍵約束
alter
table student modify
column id int
primary
key;
# 增加表級主鍵約束
alter
table student add
primary
key(id)
;# 增加列級唯一性約束
alter
table student modify
column seat int
unique
;# 增加表級唯一性約束
alter
table student add
unique
(seat)
;# 增加外來鍵約束
alter
table student add
foreign
key(majorid)
references major(id)
;
總結:
# 1. 增加列級約束
alter
table 表名 modify
column 欄位名 字段型別 新約束;
# 2. 增加表級約束
alter
table 表名 add
[constraint 約束名] 約束型別(欄位名)
[外來鍵引用 其他表(其他表字段)
]
刪除約束其實就是修改表的列結構
# 刪除非空約束
alter
table student modify
column name varchar
(255);
# 刪除預設值約束
alter
table student modify
column age int
;# 刪除列級主鍵約束
alter
table student modify
column id int
;# 刪除表級主鍵約束
alter
table student drop
primary
key;
# 刪除列級唯一性約束
alter
table student modify
column seat int
;# 刪除表級唯一性約束
alter
table student drop
index seat;
# 刪除外來鍵約束
alter
table student drop
foreign
key majorid;
在列後面加上auto_increment
即可,注意乙個表只能有乙個標示列
drop
table
ifexists student;
drop
table
ifexists major;
create
table major(
id int
, name varchar
(255),
constraint pk primary
key(id));
create
table student(
id int
primary
keyauto_increment
,# 主鍵約束
name varchar
(255
)not
null
,# 非空約束
gender char(1
)check
(gender=
'男'or gender=
'女')
,# 檢查約束
seat int
unique
,# 唯一約束
age int
default18,
# 預設值
majorid int
,constraint fk_student_major foreign
key(majorid)
references major(id)
)
可以通過修改系統變數auto_increment_increment
來修改步長
# 檢視變數
show variables like
'%auto_increment%'
# 修改變數
set auto_increment_increment=
3
Msql 約束和索引
3 主鍵約束分為兩種 4 刪除主鍵約束 第一種 在建立表時如何指定主鍵的約束?create table 資料庫名.表名稱 欄位名1 資料型別 primary key,欄位名2 資料型別,例如 在test資料庫中建立乙個t stu表 建立了主鍵,它作用的體現?例如 在表中插入兩條資料,其中資料中主鍵的...
MySql DDL 常見約束
含義 一種限制,用於限制表中的資料,為了保證表中的資料的準確和可靠性 分類 六大約束 新增約束的時機 1.建立表時 2.修改表時 1 新增列級約束 語法 直接在欄位名和型別後面追加 約束型別即可 只支援 預設 非空 主鍵 唯一 create table stuinfo id int primary ...
MySQL常見約束
1 含義 一種限制,用於限制表中的資料,為了保證表中的資料的準確和可靠性 2 分類 六大約束 not null 非空,用於保證該字段的值不能為空 比如姓名 學號等 default 預設,用於保證該字段有預設值 比如性別 primary key 主鍵,用於保證該字段的值具有唯一性,並且非空 比如學號 ...