mysql 域完整性 Mysql之資料完整性約束

2021-10-17 12:59:06 字數 3041 閱讀 1654

mysql之ddl操作

四、資料完整性約束

實體完整性、域完整性、引用完整性、自定義完整性

1、實體完整性

主鍵約束、唯一約束、主鍵自增

1)主鍵約束

特點:唯一的,不能為空

關鍵字:primary key

新增約束語法:alter table 表名 add constraint 約束名 primary key(欄位名);

約束名:pk_欄位

刪除約束語法:alter table 表名 drop primary key;

規定:在每乙個表中有且只有乙個主鍵約束

create table student(

id int primary key,

name varchar(20),

age int

alter table userinfo add uid int;

#表已經建立好了,如何新增主鍵約束

#alter table 表名 add constraint 約束名 primary key(欄位名);

#約束名:pk_欄位

alter table userinfo add constraint pk_uid primary key(uid);

#刪除約束

#alter table 表名 drop primary key;

alter table userinfo drop primary key;

2)唯一約束

特點:不能重複,可以為空,可以新增多個

關鍵字:unique

新增約束語法:alter table 表名 add constraint 約束名 unique(欄位名);

約束名:uq_欄位

刪除約束語法:alter table 表名 drop key 約束名;

create table student(

id int primary key,

name varchar(20),

age int,

id_card varchar(20) unique

alter table userinfo add constraint uq_login_name unique(login_name);

alter table userinfo drop key uq_login_name;

3)主鍵自增

特點:從1開始,每次自身加1(在oracle中不能使用)

關鍵字: auto_increment

只能在建立表的時候新增主鍵自增的約束,而且必須是主鍵才可以新增

create table student(

id int primary key auto_increment,

name varchar(20),

age int,

id_card varchar(20) unique

-- 刪除主鍵自增約束

-- 1:去除自增性

alter table student modify id int;

-- 2:刪除主鍵約束

alter table student drop primary key;

2、域完整性

域完整性約束保證欄位的資料準確的

域完整性包括型別約束、非空約束、預設值

1)非空約束

特點:欄位不允許為空

關鍵字: not null

2)預設值

特點:設定預設的值

關鍵字: default

create table student(

id int primary key auto_increment,

name varchar(20) not null,

age int not null,

*** char(2) default '男',

id_card varchar(20) unique

刪除unique約束

alter table `use` drop index id_card

刪除預設值default約束

alter table `use` change *** *** varchar(20) default null;

3、引用完整性

一張表中通用列的取值必須參考另外一張表的主鍵

引用完整性有外來鍵約束

1)外來鍵約束

關鍵字: foreign key

新增外來鍵約束的語法:alter table 表名1 add constraint 約束名 foreign key(欄位名) references 表名2(欄位名)

刪除外來鍵的語法:alter table 表名 drop foreign key 約束名;

注意:1、主外來鍵關聯

2、外來鍵關聯欄位名稱可以不一樣,但是型別必須一致

--外來鍵約束

create table student(

id int primary key auto_increment,

name varchar(20) not null,

age int not null,

*** char(2) default '男',

id_card varchar(20) unique,

class_id int #新增外來鍵約束

create table classroom(

class_id int primary key,

class_name varchar(20)

-- 新增外來鍵約束的語法:alter table 表名1 add constraint 約束名 foreign key(欄位名) references 表名2(欄位名)

-- 約束名 fk_欄位名

alter table student add constraint fk_class_id foreign key(class_id) references classroom(class_id);

-- 刪除外來鍵的語法:alter table 表名 drop foreign key 約束名;

alter table student drop foreign key fk_class_id;

MySQL資料完整性(實體完整性 域完整性)

資料完整性 為保證插入到資料庫中的資料是正確的,防止使用者輸入錯誤的資料 分為實體完整性 域完整性 參照完整性 下節再說 1 實體完整性 實體指的是表中的一行,一行記錄對應乙個實體 通過主鍵實現 主鍵 關鍵字 primary key 特點 不能為null,並且唯一。邏輯主鍵 推薦 例如id,不代表實...

mysql 完整性 詳解MySQL 資料完整性

資料完整性分為 實體完整性,域完整性,參考完整性。參照完整性指的就是多表之間的設計,主要使用外來鍵約束。多表設計 一對多 多對多 一對一設計 一 實體 行 完整性 實體完整性通過表的主鍵來實現。使用主鍵來表示一條記錄的唯一,且不為空 語法 primary key 主鍵分類 邏輯主鍵 例如id,不代表...

MySQL之完整性約束

我們知道,一種資料模型必須包含三個基本的部分 作為資料庫的一種資料模型,關係模型提供了一組完整性規則或限制。完整性約束用於確定關聯式資料庫裡資料的準確性和一致性。在關係型資料庫裡,完整性約束包括域完整性 實體完整性 引用完整性以及使用者定義完整性。域完整性,是指給定列的取值範圍 即輸入的有效性 比如...