sql2005資料完整性之約束和規則

2021-06-08 08:19:52 字數 3787 閱讀 7546

--資料的完整性

六種約束:

notnull

、check

、unique

、primary

key、

foreign

key、

default

--建立唯一約束

--這是刪除唯一約束

alter

table

xibu 

drop

constraint

weiyi

--這是建立唯一約束

alter

table

xibu 

addconstraint

weiyi

unique

nonclustered

(xbname

)alter

table

xibu

alter

column

asd 

char(8

)--這是

check

約束insert

xs values

('010101000017'

,'克群',

'a','1989-2-9'

,'2010-9-1'

,'0101011'

,'04'

,'0402'

)select

*from

xsif

exists(

ck_xs

)alter

table

xs drop

constraint

ck_xs

alter

table

xs add

constraint

aaacheck

(*** ='男

')--withnocheck對你以前插入的資料不進行檢查

alter

table

xs with

nocheck

addconstraint

ck_*** 

check

(*** ='男

'or***='女'

)exec

sp_help

xs--

這是檢視表結構

--這是

default

約束alter

table

bj drop

constraint

df_bj_bz

alter

table

bj add

constraint

df_bj_bz 

default

'我愛你

'forbz;

create

table

test

(id 

intnot

null

primary

key,

name

varchar(10

)not

null

)drop

table

test

alter

table

test 

drop

constraint

aaaalter

table

test 

with

nocheck

addconstraint

aaa 

default

'我真的

'for

name

exec

sp_help

test

insert

into test values

(2,default

);select

*from test 規則

/*資料的完整性*/

--規則的建立 

create rule check_rule

as@a = '男' or @a = '女'

--將規則繫結到資料庫表的字段上

exec sp_bindrule 'check_rule', 'test.name'

insert into test values(1, '男');

select * from test

--注意:規則可以用到多個表上

select * into new_table from test

select * from new_table

exec sp_bindrule 'check_rule', 'new_table.name'

insert into new_table values(1, 'asd');

--刪除繫結到表中某個欄位上的規則

exec sp_unbindrule 'new_table.name'

exec sp_unbindrule 'test.name'

--刪除規則

drop rule check_rule

--default規則的一些應用

--建立預設值

create default ch_default

as '曹歡'

--將預設值繫結到資料庫表的某個字段

exec sp_bindefault ch_default,'test.name'

insert into test values(13,default);

select * from test

--刪除繫結到表字段上的default約束

exec sp_unbindefault 'test.name'

--刪除default的預設值

drop default ch_default

--這是對這節的練習

create table test1 (

id int identity(1,1)  primary key ,

*** varchar(4) not null,

name varchar(12)

)select * from test1

exec sp_help test1

--建立規則

create rule check_rule

as @*** = '男' or @*** = '女'

--把規則應運到

exec sp_bindrule 'check_rule','test1.***'

exec sp_unbindrule 'test1.***'

drop rule check_rule

insert into test1 values('男','asd')

select * from test1

create default default_rule

as '曹歡'

exec sp_bindefault 'default_rule','test1.name'

exec sp_unbindefault  'test1.name'

drop default default_rule

insert into test1 values('男',default)

select * from test1

SQL完整性約束

完整性約束保證授權使用者對資料庫所做的修改不會破壞資料的一致性。not null宣告禁止在該屬性上插入空值。任何可能導致向乙個宣告為not null的屬性插入空值的資料都會產生錯誤診斷資訊。unique aj 1 aj 2 aj m unique宣告指出aj 1 aj 2 aj m 形成了乙個候選碼...

SQL完整性約束

1.資料定義語句 ddl create alter drop truncate 表結構 2.資料操縱語句 dml insert delete update select 3.資料控制語句 dcl 授權 grant 收回許可權 revoke 4.失誤控制語句 tcl 開啟事務 begin transa...

資料完整性約束

實體完整性 實體就是指一條記錄。這種完整性就是為了保證每一條記錄不是重覆記錄。是有意義的 主鍵 非空和唯一.乙個表只有乙個主鍵,但是乙個主鍵可以是由多個字段組成的 組合鍵 標識列 系統自動生成,永遠不重複 唯一鍵 唯一,但是可以為null,只能null一次 域完整性 域就是指字段,它是為了保證欄位的...