mysql資料庫的約束 三

2021-07-26 18:36:10 字數 2380 閱讀 5729

/* 一、資料約束

約束是一種限制,它通過對錶的行或列的資料做出限制,來確保表的資料的完整性、唯一性。

mysql中,常用的幾種約束:

約束型別: 主鍵 預設值 唯一 外來鍵 非空

關鍵字: primary key default unique foreign key not null

*/ /*1.1、預設值約束(default)——在用使用者不對預設值的字段進行資料插入時,就預設地使用預設字段

特別注意:預設欄位是可以為空的,也就是說當使用者插入空(null)或''時是被允許的。

*/ create table student(

sid int,

sname varchar(10),

gender varchar(2) default '男'

) /*1.2、非空(not null)

被非空約束的列,在插入值時必須非空。

在mysql中違反非空約束,不會報錯,只會有警告.

*/create table student(

sid int not null,

sname varchar(10),

gender varchar(2) default '男'

)/*1.3、唯一約束(unique)比較簡單,它規定一張表中指定的一列的值必須不能有重複值,即這一列每個值都是唯一的。

當insert語句新插入的資料和已有資料重複的時候,如果有unique約束,則insert失敗.

注意:唯一的字段是可以為空的(null),且null不受唯一約束。也就是說可以存在多條欄位為null的資料。

*/create table student(

sid int unique,

sname varchar(10),

gender varchar(2) default '男'

)/* 1.4、主鍵(primary key)是用於約束表中的一行,作為這一行的識別符號,在一張表中通過主鍵就能準確定位到一行,

因此主鍵十分重要。主鍵要求這一行的資料不能有重複且不能為空。

還有一種特殊的主鍵——復合主鍵。主鍵不僅可以是表中的一列,也可以由表中的兩列或多列來共同標識

通常情況下,每一張表都會設定乙個主鍵的字段,用於標記每一條記錄的唯一性。

*/create table student(

sid int primary key,

sname varchar(10),

gender varchar(2) default '男'

)/*1.5、自增長(auto_increment)

當只增長欄位有位數要求時,可以使用 zerofill進行填充

*/create table student(

sid int primary key auto_increment,

sname varchar(10),

gender varchar(2) default '男'

)/*1.6、外來鍵約束

外來鍵(foreign key)既能確保資料完整性,也能表現表之間的關係。

乙個表可以有多個外來鍵,每個外來鍵必須references(參考)另乙個表的主鍵,

被外來鍵約束的列,取值必須在它參考的列中有對應值。

在insert時,如果被外來鍵約束的值沒有在參考列中有對應,比如以下命令,

參考列(department表的dpt_name)中沒有dpt3,則insert失敗

*/ constraint `fk_kfaoihyj5oll835mvidvgsxp` foreign key (`department_id`) references `ssh_department` (`id`)

關鍵字 外來鍵名稱 外來鍵字段 關聯表(字段)

其中ssh_employee為副表,ssh_department為主表

注意: (1)、當外來鍵存在時,新增資料的順序:先主表後副表;

(2)、當外來鍵存在時,修改資料的順序:先副表後主表;

/*1.7、級聯操作

當我們設定了外來鍵約束後,必須先修改或者刪除副表中的所有關聯資料,才能修改或者刪除主表。

但很多時候,我們希望直接修改或刪除主表的資料,從而影響副表資料。因此就需要級聯設定來完成。

*/constraint emlyee_dept_fk foreign key(deptid) references dept(id) on update cascade on delete cascade

-- on cascade update :級聯修改

-- on delete cascade :級聯刪除

-- 注意: 級聯操作必須在外鍵基礎上使用

MySQL資料庫 資料約束

對使用者操作表的資料進行約束 作用 當使用者對使用預設值的字段不插入值的時候,就使用預設值。注意 1 對預設值字段插入 null 是可以的 2 對預設值字段可以插入非 null create table student id int,name varchar 20 address varchar 2...

三 資料庫表的約束

主要內容 對錶中的資料進行限制,保證資料的正確性 有效性和完整性。乙個表如果新增了約束,不正確的資料將無法插入到表中。約束在建立表的時候新增比較合適。主鍵的作用 用來唯一標識資料庫中的每一條記錄。主鍵的選擇 通常不用業務字段作為主鍵,單獨給每張表設計乙個id的字段,把id作為主鍵。主鍵是給資料庫和程...

Mysql資料庫約束和三大正規化

show databases use db show tables select from stu 約束 主鍵約束 primary key 非空且唯一 非空約束 not null 唯一約束 unique 外來鍵約束 foreign key create table stu2 id int prima...