資料庫(3)資料約束

2021-08-23 12:37:37 字數 1603 閱讀 6263

一、約束條件

為了確保資料的完整性,可以給列加上約束條件

完整性的分類:

1)實體完整性(行)

實體:即表中的一行記錄,代表乙個實體

實體完整性的作用:表示每一行資料不重複

約束型別:   

a、主鍵約束(primary key)

第一種新增方式:在建立表的同時,直接新增主鍵約束  :  列名1 列值1 primary key,

第二種新增方式: 後期補充主鍵約束 :  alter table 表名 add primary key(列名1);

聯合主鍵(兩個或兩個以上的主鍵):

create table 表名(

列名1 列值1,

列名2 列值2,

....

列名n 列值n,

primary key(列名1,列名2);

)刪除主鍵約束:alter table 表名 drop primary key;

b、唯一約束(unique)

c、自動增長列(atuo_increment) 

2)域完整性(列)

域完整性的作用: 限制此單元格的資料正確,不對照此列的其他單元格

1、資料型別約束:mysql中的常用資料型別:

int 整型

float 浮點型 double 浮點型

float(5,2) 表示最多可5位 其中 必須有2位是小數 999.99   

decimal 用來儲存工資 從mysql 5.1之後才有

char 固定長度的字串型別 char(10) 'aaa       '佔10位

varchar 可變長度字串型別 varchar(10) 'aaa' 佔3位

text 字串型別 超長

blob 位元組型別

date 日期型別 格式為 yyyy-mm-dd

time 時間型別 格式為 hh:mm:ss

timestamp 時間戳型別 yyyy-mm-dd hh:mm:ss 會自動賦值 會自動賦值當前時間

datetime 時期型別yyyy-mm-dd hh:mm:ss 

2、非空約束:

定義時直接新增:列名2 列值2 約束 not null  

後期新增:  alter table 表名 modify 欄位名 字段型別 not null

3、預設值約束:

定義時直接新增 : 列名2 列值2 約束  default 預設值   

後期追加 : alter table 表名 alter 列名 set default 預設值;,

3)引用完整性

外來鍵約束  foreign key 用來約束表與表之間的關係 ,外來鍵一定是在從表中建立,從而找到與主表之間的關係

外來鍵必須要滿足的條件:

注意:外來鍵時可以重複的,也可以有空值

建立外來鍵的兩種方式:

1、在建立的表的時候 ,新增外來鍵

2、表已經建立,後期追加

注意: 

1、 在從表中新增資料時,外來鍵關聯列中儲存的資料,必須是主表中存在的資料

2、想要刪除主表中,正在被從表使用的行,必須先刪除從表,再刪除主表

刪除外來鍵關聯 : alter table 表名 drop foreign key 外來鍵關係名

資料庫約束

mysql有兩種常用的引擎型別 myisam和innodb。目前只有innodb引擎型別支援外來鍵約束。innodb中外鍵約束定義的語法如下 constraint symbol foreign key index name index col name,references tbl name ind...

資料庫約束

約束的簡介 資料的完整性是指資料的正確性和一致性,可以通過定義表時定義完整性約束,也可以通過規則,索引,觸發器等。約束分為兩類 行級和表級,處理機制是一樣的。行級約束放在列後,表級約束放在表後,多個列共用的約束放在表後。完整性約束是一種規則,不占用任何資料庫空間。完整性約束存在資料字典中,在執行sq...

資料庫 約束

約束說白了就是限制條件 當你不給某引數賦值時,該引數會採用預設值。例子 建立資料庫 create database tx 選擇使用的資料庫 use tx go goods表 create table goods goodsid nvarchar 50 primary key,主鍵 goodsname...