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