數據完整性的基本概念
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,通過主鍵和外鍵來聯繫兩張表