約束:確保資料的完整性(主鍵,唯一,檢查,預設,非空,外來鍵)

萬里無雲便是我發表於2017-04-01

問題:


建立約束程式碼:

--建表
use StudentManager--指定
if exists (select *from sysobjects where name='tbl+student')--判斷
drop table tbl_student--有就刪除之後建立,沒有就建立
create table tbl_student
(
id int identity (1,1),--自增變數從1開始增加每次加1,不設定主鍵,在後面新增
stu_number char(10)not null,--學號不許為空
stu_name varchar(20)not null,--注意特例
stu_age int,
birthday datetime,
class_id int --沒有外來鍵
 
)

use StudentManager--指定
if exists (select *from sysobjects where name='tbl_class')--判斷
drop table tbl_class--有就刪除之後建立,沒有就建立
create table tbl_class
(
class_id int identity (1,1),--自增變數從1開始增加每次加1,不設定主鍵,在後面新增
class_name varchar(20)not null,
create_time datetime
)
--追加約束
--主鍵約束
--向哪個表加什麼約束加在拿個列上
--新增主鍵約束(非空唯一)
alter table tbl_student add constraint PK_id primary key(id)
alter table tbl_class add constraint PK_class_id primary key(class_id)--要保證所有的約束不重名
--新增唯一約束(唯一就行可以為空)
alter table tbl_student add constraint UK_stu_number unique (stu_number)
--如果沒有主鍵名字就會起名為隨機碼
--預設約束(預設有個值)
alter table tbl_class add constraint DF_create_time default (getdate())for create_time
--外來鍵約束(保證兩個表之間的對應關係)
alter table tbl_student add constraint FK_class_id  foreign key (class_id )references tbl_class(class_id)



--建表時可以同時新增約束的操作如下:
create table tbl_student
(
id int identity (1,1)primary key,--設定主鍵約束
stu_number char(10)unique not null,--設定唯一約束
stu_name varchar(20)not null,
stu_age int check(stu_age>0 and stu_age<150),--設定檢查約束
birthday datetime default(getdate()),--設定預設約束
class_id int references tbl_class(class_id)--設定外來鍵約束
 
)

--刪除約束
alter table tbl_student
drop constraint UK_stu_number


檔案介面:


相關文章