mysql中的預設約束 資料庫中預設約束的作用

2021-10-17 19:28:18 字數 1533 閱讀 5063

匿名使用者

1級2016-04-29 回答

資料庫約束是為了保證資料的完整性而實現的一套機制,它具體的根據各個不同的資料庫的實現而有不同的工具。

一般來說有以下幾種實現方式:

1、檢查約束:

通過在定義資料庫表裡,在字段級或者是在表級加入的檢查約束,使其滿足特定的要求。

比如以下的表定義:

crate table student(

id serial,

name varchar(10),

scrore integer check (scrore > 0));

定義分數不能小於0。

也可以在表級定義:

check (欄位1 秘欄位2之間的關係)

2、非空約束:

3、唯一約束:

定義乙個唯一約束但是它並不包括null值。直接在字段定義後加入unique即可定義乙個唯一約束。

4、主鍵約束:

sql 92建議在建立乙個表時定義乙個主鍵:它其實就是:唯一約束+非空約束。

5、外來鍵:

所有約束里數這個約束最有意思了:比如說有這樣一件事,你需要做乙個學生查詢的網頁。那麼為了方便,你將建立三個資料表:

乙個是學生情況表:

create table student(

id serial primary ke,

name varchar(10),

乙個表是記錄所開的課程

create table class(

class_id varchar(5) primary key,

describe varchar(20)

乙個表是記錄學生成績的表:

create table score(

id integer references student,

class_id varchar(5) references class,

score integer check (score > 0)

這個時候你會發現以下幾件事:

如果你在成績表裡輸入不存在的學生和課程,資料系統將拒絕。如果你要刪除乙個學生,但是他已經在成績表裡有記錄,資料庫將拒絕刪除這個學生的記錄。

那麼我們現在來看,前面乙個對我們是有利的,因為誰都不想乙個學生無緣無故的有了乙個成績的記錄,但是在刪除的時候就會比較麻煩了,有時候我的確是想刪除這個學生。那麼我總不能在應用程式裡照顧得那麼周到吧。不要緊我們在定義資料表的時候只在外鍵那一樣加入以下控制就ok了,我們來重新定義資料表 score

create table score(

id integer references student on update cascade on delete cascade, //我們希望在學生記錄改變時自動改變分數記錄,在刪除學生級聯刪除分數記錄

class_id varchar(5) references class on update cascade on delete

restrict, //我們希望在改變課程時自動改變分數記錄表裡關於課程的引用,但是不希望刪除課程時級聯刪除分數。

這樣我們就可以很好做到資料完整了。

資料庫中的約束

約束 5個 1.實體完整性 主鍵約束 唯一性約束 2.域完整性 check約束 3.引用完整性 foreign key 約束 建立約束 應用例項 新增主鍵約束 cus info pk 主鍵重新命名 alter table cus info add constraint cus info pk pri...

Oracle資料庫中的約束

上週應聘一家公司的實習生,筆試時遇到乙個題 很遺憾,一不小心就把上學期學得挺好的oracle忘完了,突然想起來,查閱資料,同時在此記錄一下。為了維護資料的完整性,oracle提供了5種約束 not null 非空 約束該列一定要輸入值。unique key 唯一 當定義了唯一約束後,該列值是不能重複...

sql資料庫中的約束

先用設計器建立約束,再用 建立約束。資料庫約束是為了保證資料的完整性 正確性 而實現的一套機制 1.非空約束 選擇核取方塊 2.主鍵約束 唯一且不為空,選中列,右鍵設為主鍵 3.唯一約束 唯一允許為空,但只能出現一次,右鍵,索引 鍵,新增,型別 唯一,選擇列 表示唯一約束列不能有重複的值 表中可以包...