mysql約束表示式大全 SQL常用約束語句

2021-10-18 23:48:27 字數 4951 閱讀 3782

常用五類約束:

not null:非空約束,指定某列不為空

unique: 唯一約束,指定某列和幾列組合的資料不能重複

primary key:主鍵約束,指定某列的資料不能重複、唯一

foreign key:外來鍵,指定該列記錄屬於主表中的一條記錄,參照另一條資料

check:檢查,指定乙個表示式,用於檢驗指定資料

注意: mysql不支援check約束,但可以使用check約束,而沒有任何效果;

根據約束資料列限制,約束可分為:

單列約束:每個約束只約束一列

多列約束:每個約束約束多列資料

1、not null

非空約束用於確保當前列的值不為空值,非空約束只能出現在表物件的列上。

*null型別特徵: 所有的型別的值都可以是null,包括int、float等資料型別 空字串」」是不等於null,0也不等於null

create table temp(

id int not null,

name varchar(255) not null default 『abc』,

*** char null

上面的table加上了非空約束,也可以用alter來修改或增加非空約束

增加非空約束

alter table temp modify *** varchar(2) not null;

取消非空約束

alter table temp modify *** varchar(2) null;

取消非空約束,增加預設值

alter table temp modify *** varchar(2) default 『abc』;

2、unique

唯一約束是指定table的列或列組合不能重複,保證資料的唯一性。雖然唯一約束不允許出現重複的值,但是可以為多個null,同乙個表可以有多個唯一約束,多個列組合的約束。在建立唯一約束的時候,如果不給唯一約束名稱,就預設和列名相同。 mysql會給唯一約束的列上預設建立乙個唯一索引;

create table temp (

id int not null,

name varchar(25),

password varchar(16),

constraint uk_name_pwd unique(name, password)

unique(name, password)表示使用者名稱和密碼組合不能重複

新增唯一約束

alter table temp add unique(name, password);

修改唯一性約束

alter table temp modify name varchar(25) unique;

刪除約束

alter table temp drop index name;

3、primary key

主鍵約束相當於唯一約束+非空約束的組合,主鍵約束列不允許重複,也不允許出現空值;如果的多列組合的主鍵約束, 那麼這些列都不允許為空值,並且組合的值不允許重複。 每個表最多隻允許乙個主鍵,建立主鍵約束可以在列級別建立,也可以在表級別上建立。

mysql的主鍵名總是primary, 當建立主鍵約束時,系統缺省會在所在的列和列組合上建立對應的唯一索引。

列模式:

create table temp(

id int primary key,

name varchar(25)

create table temp2(

id int not null,

name varchar(25),

pwd varchar(15),

constraint pk_temp_id primary key(id)

組合模式:

create table temp2(

id int not null,

name varchar(25),

pwd varchar(15),

constraint pk_temp_id primary key(name, pwd)

alter刪除主鍵約束

alter table temp drop primary key;

alter新增主鍵

alter table temp add primary key(name, pwd);

alter修改列為主鍵

alter table temp modify id int primary key;

設定主鍵自增

create table temp(

id int auto_increment primary key,

name varchar(20),

pwd varchar(16)

auto_increment自增模式,設定自增後在插入資料的時候就不需要給該列插入值了。

4、foreign key

外來鍵約束是保證乙個或兩個表之間的參照完整性,外來鍵是構建於乙個表的兩個字段或是兩個表的兩個字段之間的參照關係。 也就是說從表的外鍵值必須在主表中能找到或者為空。 當主表的記錄被從表參照時,主表的記錄將不允許刪除,如果要刪除資料,需要先刪除從表中依賴該記錄的資料, 然後才可以刪除主表的資料。還有一種就是級聯刪除子表資料。

注意:外來鍵約束的參照列,在主表中引用的只能是主鍵或唯一鍵約束的列,假定引用的主表列不是唯一的記錄, 那麼從表引用的資料就不確定記錄的位置。同乙個表可以有多個外來鍵約束。

建立外來鍵約束:

主表create table classes(

id int auto_increment primary key,

name varchar(20)

從表create table student(

id int auto_increment,

name varchar(22),

constraint pk_id primary key(id),

classes_id int references classes(id)

通常先建主表,然後再建從表,這樣從表的參照引用的表才存在。

表級別建立外來鍵約束:

create table student(

id int auto_increment primary key,

name varchar(25),

classes_id int,

foreign key(classes_id) references classes(id)

上面的建立外來鍵的方法沒有指定約束名稱,系統會預設給外來鍵約束分配外來鍵約束名稱,命名為student_ibfk_n, 其中student是表名,n是當前約束從1開始的整數。

指定約束名稱:

create table student(

id int auto_increment primary key,

name varchar(25),

classes_id int,

constraint fk_classes_id foreign key(classes_id) references classes(id)

多列外來鍵組合,必須用表級別約束語法:

create table classes(

id int,

name varchar(20),

number int,

primary key(name, number)

create table student(

id int auto_increment primary key,

name varchar(20),

classes_name varchar(20),

classes_number int,

foreign key(classes_name, classes_number) references classes(name, number)

刪除外來鍵約束:

alter table student drop foreign key student_ibfk_1;

alter table student drop foreign key fk_student_id;

增加外來鍵約束:

alter table student add foreign key(classes_name, classes_number) references classes(name, number);

自引用、自關聯(遞迴表、樹狀表)

create table tree(

id int auto_increment primary key,

name varchar(50),

parent_id int,

foreign key(parent_id) references tree(id)

級聯刪除:刪除主表的資料時,關聯的從表資料也刪除,則需要在建立外來鍵約束的後面增加on delete cascade 或on delete set null,前者是級聯刪除,後者是將從表的關聯列的值設定為null。

create table student(

id int auto_increment primary key,

name varchar(20),

classes_name varchar(20),

classes_number int, /*表級別聯合外來鍵*/

foreign key(classes_name, classes_number) references classes(name, number) on delete cascade

5、check

mysql可以使用check約束,但check約束對資料驗證沒有任何作用。

create table temp(

id int auto_increment,

name varchar(20),

age int,

primary key(id),

check(age > 20)

上面check約束要求age必須大於20,但沒有任何作用。但是建立table的時候沒有任何錯誤或警告。

mysql約束表示式大全 MySQL約束

主鍵約束 primary key 主鍵約束即在表中定義乙個主鍵來唯一確定表中每一行資料的識別符號。主鍵可以是表中的某一列或者多列的組合,其中由多列組合的主鍵稱為復合主鍵。主鍵應該遵守下面的規則 每個表只能定義乙個主鍵。主鍵值必須唯一標識表中的每一行,且不能為 null,即表中不可能存在兩行資料有相同...

CHECK約束表示式

1.性別 只能填寫 男 和 女 欄位名 男 or 欄位名 女 注意 單引號裡的值可以為其他任何字 2.規定密碼長度不能小於6位數 len 欄位名 5 3.例 成績在0到100之間 欄位名 0 adn 欄位名 100 一.完整性 可靠性 準確性 資料完整性 保證資料完整性 實施完整性約束 1.實體完整...

正規表示式大全

0 9 1 9 0 9 正整數 d 0 非正整數 負整數 0 0 9 1 9 0 9 負整數 d 整數 d d 非負浮點數 正浮點數 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 正浮點數 d d 0 0 非正浮點數 負浮點數 0 0 9 0 9 1 9...