MySQL必備知識完整性約束

數據完整性的基本概念

1,什麼是數據完整性?
數據完整性是指存儲在數據庫中的數據要能正確反映實際情況,規定輸入的數據不能無效值、錯誤值或者亂碼等。
2,數據完整性的類型必須準確
3,實體完整性:標識符或者主鍵的完整性,使其值唯一
4,域完整性:限制類型、格式和取值範圍等
5,引用完整性:保持原表和引用表數據的一致性
6,自定義完整性:用戶自定義的業務規則

數據完整性的實現方式

實體完整性:主鍵約束、唯一值約束
域完整性:檢查約束、默認值約束
引用完整性:外鍵約束
用戶自定義完整性:以上約束的自由組合。

定義約束

數據完整性約束也就是創建表( create table )時的約束條件,是用來限制屬性或者表中數據的,也可以通過修改語句( alter table )修改約束條件。

常見的約束

約束名 描述 名稱
not null 非空約束 表示該數據類型不能爲空NULL
default 默認值 約束用於保證該字段有默認值
auto_increment 自增列 數據自動進行增長,必須要有唯一約束
unique 唯一約束 用於保證該字段的值具有唯一性,可以爲空
primary key 主鍵 用於保證該字段的值具有唯一性並且非空,一張表只能有一個主鍵
foreign key 外鍵 連接主鍵,用於限制兩個表的關係
check 檢查約束 檢查字段的值是否爲指定的值(MySQL不支持)

語句格式

在列名(屬性名)中添加約束
1,創建表時定義約束
2,修改表時定義約束
3,刪除表的約束
4,查詢表的約束

非空約束

表示該類型不能爲空,如果插入的數據爲空的話,會被系統阻止插入
1,創建語法格式
創建一個表,使編號不能爲空

create table table_name( 
      t_no int not null, 
      t_name varchar(20) not null
);

2,表的修改
修改表屬性的時候,會和原來的表中的數據,進行一個檢查,如果出現衝突,則無法修改

##修改表中的屬性約束不爲空
alter table <表名> modify column <屬性名> <數據類型> (約束) 

# 修改表中的屬性約束不爲空 
alter table teachar modify column t_name varchar(20) not null; 

#通過修改表使其去掉非空屬性約束 
alter table teachar modify column t_no varchar(20);

唯一約束

指定某列或者某幾列數據不能重複

#創建 
create table teacher_tb( 
   t_no int not null unique, 
   t_name varchar(20) 
);

#指定列添加唯一約束: 
alter table 表名 add constraint 約束名 約束類型(屬性名); 

#示例 
alter table 表名 add constraint 屬性名 unique(屬性名); 

#刪除唯一約束: 
alter table 表名 drop index 屬性名;

自增列

語句 auto_increment
自增列的使用條件,必須是一個有主鍵或者是唯一約束的屬性名
屬性給空值時,初始默認值從1開始,之後的每一個在其基礎上+1。
在創建時可以在表後設置初始默認值: auto_increment=100

#示例 
create table 表格名( 屬性名 類型 auto_increment )auto_increment=100; 

#添加自增列 
alter table 表名 modify 屬性名 類型 (auto_increment) 

#刪除 
alter table 表名 modify 屬性名 類型

默認值約束

語句 default
表在創建時沒有插入元素,則指定默認給定的一些元素,讓其不爲空

#創建表的默認屬性 
create table 表名( s_subject varchar(20) default 數據 );

#添加或者刪除默認值約束 
alter table 表名 modify column 列名 類型 (default 數據);

主鍵約束

語句 primary key
特點:非空約束,唯一約束,每個表只能有一個主鍵約束(表級)
在多列聯合的主鍵約束時,聯合主鍵的值不能重複。

#設置單列主鍵 
create table 表名 ( 屬性名 int primary key, );

#添加主鍵約束 
alter table 表名 add constraint 主鍵名 primary key (屬性名); 
 
#刪除主鍵約束 
alter table 表格名 drop primary key;

外鍵約束

語句: foreign key
外鍵約束是指一個表中的屬性值參考另一個表中的主屬性的值,也就是外鍵值參考主鍵值,由於外鍵約束是表級約束,所以要在創建表之前先創建參考表。外鍵和參考表的主鍵數據類型、長度和精度要保持一致。

#在創建的時候定義外鍵 
<屬性名> <類型> (約束), 
foreign key(屬性名) references 被引用的表(主鍵屬性); 

#添加外鍵約束 
alter table 表名 add constraint 屬性名 foreign key( 屬性名) references 被引用的表(主鍵屬性); 

#刪除外鍵約束 
alter table 表名 drop foreign key  屬性名;

總結

1,約束的使用
2,如何通過約束進行數據的規範話操作
3, 如何查詢約束
4,通過主鍵和外鍵來聯繫兩張表

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章