sql用命令創(chuàng)建主鍵與外鍵。
用命令創(chuàng)建主鍵與外鍵.rn用命令創(chuàng)建默認(rèn)值對象,并與表中字段綁定.rn用命令創(chuàng)建CHECK約束定義某字段.rn用命令創(chuàng)建規(guī)則對象,并與表中字段綁定.rn用命令創(chuàng)建用戶自定義數(shù)據(jù)類型,并用該數(shù)據(jù)類型定義表中字段.1、為了方便大家理解,使用一個例子來幫助大家理解。意思大概就是通過引用表二中的字段完成對表一字段的約束。方法:
2、這里一共兩個表,先創(chuàng)建外鍵表,因為先有外鍵,主鍵才能引用。首先創(chuàng)建數(shù)據(jù)庫,新建查詢。
3、新建外鍵表【teacher】,輸入命令:create table teacher。添加需要的字段teacher_xingming并設(shè)置它為【主鍵】。輸入命令:teacher_xingming nchar(10) primary key,
4、選中需要執(zhí)行的命令行,單擊【執(zhí)行】,下方會有是否成功的提示。現(xiàn)在對表進(jìn)行刷新操作后,會發(fā)現(xiàn)已經(jīng)成功創(chuàng)建了一個新表【teacher】。
5、接下來就要創(chuàng)建學(xué)生表了,create table student( student_xingming nchar(10) primary key not null,——該程序段意思為創(chuàng)建一個【student】表,表中新建一個主鍵【student_xingming字段,類型為nchar(10) ,并不允許為空。】
6、繼續(xù)寫,輸入:student_banji nchar(10) not null,——表中新建一個【student_banji字段,類型為nchar(10) ,并不允許為空。】
7、創(chuàng)建外鍵,輸入命令student_jiaoshi nchar(10) foreign key references teacher(teacher_xingming)看起來很長,實際意思很簡單:表中新建一個【student_jiaoshi字段】,它是外鍵,nchar(10)類型,它來至 teacher_xingming中的內(nèi)容。
8、選中,點擊【執(zhí)行】,沒有錯誤,就說明成功了。刷新一下表,看看是不是多了一個表【student】?所有約束已經(jīng)創(chuàng)建好了。
9、來試一下看看是否真正實現(xiàn)所說的功能。打開【teacher表】,填寫“劉老師”。打開【student表】,前面任意填,最后填寫“劉老師”,沒有錯誤說明沒問題。
10、如何想測試約束是否真的有效,填寫其他內(nèi)容,看看是否成功,只要不是【teacher】字段中的內(nèi)容,他就會報錯。
創(chuàng)建主鍵約束,語法: alter table 表名 add constraint [主鍵名稱] primary key (主鍵字段)。
舉例:alter table Student Add constraint PK_Student primary key (Id).
創(chuàng)建外鍵約束,語法: alter table 表名 add constraint [外鍵名稱] foreign key (字段) references 外鏈表名(字段)。
舉例:alter table Student Add constraint FK_Student_Cid foreign key (Id) references Grade(Id).
擴(kuò)展資料:
通過創(chuàng)建主鍵約束可強(qiáng)制表的實體完整性。當(dāng)創(chuàng)建或更改表時可通過定義 PRIMARY KEY 約束來創(chuàng)建主鍵。一個表只能有一個 PRIMARY KEY 約束,而且 PRIMARY KEY 約束中的列不能接受空值。由于 PRIMARY KEY 約束確保唯一數(shù)據(jù),所以經(jīng)常用來定義標(biāo)識列。
在有些數(shù)據(jù)庫中,雖然主鍵不是必需的,但最好為每個表都設(shè)置一個主鍵,不管是單主鍵還是復(fù)合主鍵。它存在代表著表結(jié)構(gòu)的完整性,表的記錄必須得有唯一區(qū)分的字段,主鍵主要是用于其他表的外鍵關(guān)聯(lián),以及本記錄的修改與刪除。
--用命令創(chuàng)建主鍵與外鍵.
--使用SQL語句創(chuàng)建主鍵約束可以在創(chuàng)建表(Create Table)或修改表(Alter Table)時進(jìn)行 創(chuàng)建。
--例創(chuàng)建表時
create table tablename
(
id int (CONSTRAINT pk_id) PRIMARY KEY
)
--例修改表時
ALTER TABLE tablename --修改表
ADD
CONSTRAINT tb_PRIMARY
PRIMARY KEY CLUSTERED (列名) /*將你要設(shè)置為主鍵約束的列*/
--用命令創(chuàng)建默認(rèn)值對象,并與表中字段綁定.
--使用SQL語句創(chuàng)建主默認(rèn)值對象可以在創(chuàng)建表(Create Table)或修改表(Alter Table)時進(jìn)行 創(chuàng)建。
--例創(chuàng)建表時
create table tablename
(
id int DEFAULT 0
)
--例修改表時
ALTER TABLE tablename --修改表
ADD
CONSTRAINT tb_DEFAULT
DEFAULT '10011' FOR 列名 /*將你要設(shè)置為默認(rèn)值對象的列*/
--用命令創(chuàng)建CHECK約束定義某字段.
USE 銷售管理系統(tǒng) --引入數(shù)據(jù)庫
ALTER TABLE 銷售表 --修改表
ADD CONSTRAINT ck_sl --創(chuàng)建檢查約束
CHECK (數(shù)量 >= 1 and 數(shù)量 <= 10000) --添加約束條件
--用命令創(chuàng)建規(guī)則對象,并與表中字段綁定.
--創(chuàng)建規(guī)則使用CREATE RULE語句創(chuàng)建
CREATE RULE RULE_AGE --創(chuàng)建規(guī)則
AS
@AGE !> 40 --規(guī)則條件不能大于40
CREATE RULE list_rule --創(chuàng)建規(guī)則
AS
@list IN ('1001', '1002', '1003') --規(guī)則條件只能輸入1001、1002、1003
CREATE RULE pattern_rule --創(chuàng)建規(guī)則
AS
@value LIKE '_ _-%[0-9]' --規(guī)則條件在任意兩個字符的后面跟一個連字符和任意多個字符,并以 0 到 9 之間的整數(shù)結(jié)尾
--創(chuàng)建好一個規(guī)則后,必須使用綁定才能夠使用規(guī)則,一般情況下,規(guī)則可以綁定在用戶自定義數(shù)據(jù)類型或是數(shù)據(jù)列中。下面可以使用SQL Server中的系統(tǒng)存儲過程sp_bindrule將規(guī)則綁定在數(shù)據(jù)表中。
EXEC sp_bindrule 'RULE_AGE','操作員信息表.操作員年齡'
--用命令創(chuàng)建用戶自定義數(shù)據(jù)類型,并用該數(shù)據(jù)類型定義表中字段.
--在“student”數(shù)據(jù)庫中,創(chuàng)建用來存儲郵政編碼信息的“postalcode”用戶定義數(shù)據(jù)類型。
--SQL語句如下:
USE student
EXEC sp_addtype postalcode,'char(8) ','not null'
用命令創(chuàng)建主鍵與外鍵方法如下:
--用命令創(chuàng)建主鍵與外鍵.
--使用SQL語句創(chuàng)建主鍵約束可以在創(chuàng)建表(Create
Table)或修改表(Alter
Table)時進(jìn)行
創(chuàng)建。
--例創(chuàng)建表時
create
table
tablename
(
id
int
(CONSTRAINT
pk_id)
PRIMARY
KEY
)
--例修改表時
ALTER
TABLE
tablename
--修改表
ADD
CONSTRAINT
tb_PRIMARY
PRIMARY
KEY
CLUSTERED
(列名)
/*將你要設(shè)置為主鍵約束的列*/
create table tab
(
id int primary key identity(int,1,1) not null,
name varchar(20) not null,
class int foreign key(class.code)
}
sql怎么設(shè)置外鍵
sql怎么設(shè)置外鍵sql server中建立外鍵約束有3中方式:enterprise manager中,tables,design table,設(shè)置table的properties,可以建立constraint, reference key;enterprise manager中,diagrams, new diagrams,建立兩個表的關(guān)系;直接用transact sql語句。
1、三個方法都需要先建立數(shù)據(jù)表。
1)創(chuàng)建表author :
create table [dbo].[author] (
[id] [bigint] not null ,
[authorname] [char] (10) null ,
[address] [char] (480) null ,
[introduction] [ntext] null
)
2)創(chuàng)建表mybbs:
reate table [dbo].[mybbs] (
[id] [bigint] identity (1, 1) not null ,
[authorid] [bigint] not null ,
[title] [char] (40) null ,
[date_of_created] [datetime] null ,
[abstract] [char] (480) null ,
[content] [ntext] null
)
2、設(shè)置表mybbs中的authorid為外鍵,參照author表的id字段,直接使用transact sql語句,過程如下:
1)增加表mybbs(authorid)的外鍵約束fk_mybbs_author,表mybbs中的authorid受表author中的主鍵id約束:
begin transaction
alter table dbo.mybbs add constraint fk_mybbs_author
foreign key (authorid)
references dbo.author([id]) on update cascade on delete cascade
2)刪除外鍵約束fk_mybbs_author:
--alter table dbo.mybbs drop constraint fk_mybbs_author
--rollback
commit transaction
上面on update cascade,on delete cascade兩個選項,指明以后author表的id字段有delete,update操作時,mybbs表中的id也會被級聯(lián)刪除或更新。如果沒有選中,是不可以對author表中已被mybbs表關(guān)聯(lián)的id進(jìn)行update或者delete操作的。
拓展資料:
SQL的主鍵和外鍵的作用:
1、插入非空值時,如果主鍵表中沒有這個值,則不能插入。
2、更新時,不能改為主鍵表中沒有的值。
3、刪除主鍵表記錄時,你可以在建外鍵時選定外鍵記錄一起級聯(lián)刪除還是拒絕刪除。
4、更新主鍵記錄時,同樣有級聯(lián)更新和拒絕執(zhí)行的選擇。
簡而言之,SQL的主鍵和外鍵就是起約束作用。
創(chuàng)建數(shù)據(jù)庫時就是有主鍵的創(chuàng)建了主鍵,但是表之間的關(guān)系沒有聯(lián)系,要建數(shù)據(jù)庫關(guān)系圖只有主鍵沒有外鍵時不行的。
建外鍵的前提是此外鍵必須是另外一個表的主鍵。建外鍵的步驟:
第一步、打開要建外鍵表的設(shè)計器,右擊選擇“關(guān)系”。
第二步、然后彈出“外鍵關(guān)系”窗體,我們選擇“添加”,然后點擊“表和列規(guī)范”后面的小按鈕。
第三步、彈出另外一個窗體讓我們選擇主鍵表和列,記住要選擇相同的,選好之后點擊確定。
第四步、展開INSERT和UPDATE規(guī)范,在更新規(guī)則和刪除規(guī)則有四個選項,分別是“不執(zhí)行任何操作”、“級聯(lián)”、“設(shè)置為NULL”、“設(shè)置默認(rèn)值”。
默認(rèn)的不執(zhí)行任何操作。如果是“不執(zhí)行任何操作”,當(dāng)我們刪除或更新主鍵表的數(shù)據(jù)時,會告訴用戶不能執(zhí)行刪除或更新該操作。
“級聯(lián)”的意思是當(dāng)我們刪除或更新主鍵表的數(shù)據(jù)時,會刪除或更新外鍵表中所涉及的相關(guān)數(shù)據(jù)的所有行。
“設(shè)置Null”的意思是當(dāng)我們刪除或更新主鍵表的數(shù)據(jù)時,外鍵表中的外鍵列的值會設(shè)為Null,但前提是該列允許為空。
“設(shè)置默認(rèn)值”的意思是如果我們將外鍵列定義了默認(rèn)值,當(dāng)我們刪除或更新主鍵表的數(shù)據(jù)時,外鍵表中的外鍵列的值設(shè)為定義的默認(rèn)值。
當(dāng)然也可以用代碼創(chuàng)建,在創(chuàng)建數(shù)據(jù)庫表T——Card時只要加上一句代碼就可以了。“Foreign key (studentNo) references T_Student(studentNo)"。如果已經(jīng)創(chuàng)建了改表,那如何用代碼實現(xiàn)了,這也很簡單也就一句代碼“ add constraint CMPKey(外鍵名) foreign key(studentNo) references T_Student(studentNo)”。
一、主鍵是能確定一條記錄的唯一標(biāo)識,比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個人的,其他都可能有重復(fù),所以,身份證號是主鍵。
外鍵用于與另一張表的關(guān)聯(lián)。是能確定另一張表記錄的字段,用于保持?jǐn)?shù)據(jù)的一致性。比如,A表中的一個字段,是B表的主鍵,那他就可以是A表的外鍵。
主鍵和外鍵約束的方法:
create
table
Student
--建表格式:create
table
自定義的表名
(
--字段名一般為有一定意義的英文
StudentName
nvarchar(15),
--
格式:字段名類型()括號里面的是允許輸入的長度
StudentAge
int,
--int型的后面不需要接長度
StudentSex
nvarchar(2)
--最后一個字段后面不要逗號
)
--在創(chuàng)建表時就可以對字段加上約束:
create
table
Student
(
StudentNo
int
PRIMARY
KEY
IDENTITY(1,1),
--加主鍵約束,還有標(biāo)識列屬性(兩者構(gòu)成實體完整性)
StudentName
nvarchar(15)
not
null,
--加非空約束,不加"not
null"
默認(rèn)為:可以為空
StudentSchool
text(20)
FOREIGN
KEY
REFERENCES
SchoolTable(SchoolName),
--加外鍵約束,格式:FOREIGN
KEY
REFERENCES
關(guān)聯(lián)的表名(字段名)
StudentAge
int
DEFAULT
((0)),
--加默認(rèn)值約束
StudentSex
nvarchar(2)
CHECK(StudentSex=N'男'
or
StudentSex=N'女')
--加檢查約束,格式:check
(條件表達(dá)式)
)
--如果在表創(chuàng)建好了以后再加約束,則格式分別為:
--
主鍵:
alter
table
表名
add
constraint
PK_字段名--"PK"為主鍵的縮寫,字段名為要在其上創(chuàng)建主鍵的字段名,'PK_字段名'就為約束名
primary
key
(字段名)
--字段名同
--唯一約束:
alter
table
表名
add
constraint
UQ_字段名
unique
(字段名
--外鍵約束:
alter
table
表名
add
constraint
FK_字段名--"FK"為外鍵的縮寫
foreign
key
(字段名)
references
關(guān)聯(lián)的表名(關(guān)聯(lián)的字段名)
--注意'關(guān)聯(lián)的表名'和'關(guān)聯(lián)的字段名'
alter
table
表A
add
constraint
FK_B
foreign
key
(ticket_no)
references
表B(ticket_no)
alter
table
表A
add
constraint
FK_C
foreign
key
(person_no)
references
表C(person_no)
alter
table
成績表
add
constraint
FK_StudentNo
foreign
key
(StudentNo)
references
Student(StudentNo)
ON
UPDATE
CASCADE
ON
DELETE
CASCADE
級聯(lián)更新,級聯(lián)刪除,這樣在刪除主表Student時,成績表中該學(xué)生的所有成績都會刪除。
--檢查約束:
alter
table
表名
add
constraint
CK_字段名
check
(條件表達(dá)式)
--條件表達(dá)式中的條件用關(guān)系運算符連接
--默認(rèn)值約束:
alter
table
表名
add
constraint
DF_字段名
default
'默認(rèn)值'
for
字段名--其中的'默認(rèn)值'為你想要默認(rèn)的值,注意'for'
--刪除創(chuàng)建的約束:
alter
table
表名
drop
constraint
約束名--約束名為你前面創(chuàng)建的如:PK_字段這樣的約束名
--注意:如果約束是在創(chuàng)建表的時候創(chuàng)建的,則不能用命令刪除
--只能在'企業(yè)管理器'里面刪除
--
獲取SqlServer中表結(jié)構(gòu)
SELECT
syscolumns.name,systypes.name,syscolumns.isnullable,
syscolumns.length
FROM
syscolumns,systypes
WHERE
syscolumns.xusertype
=
systypes.xusertype
AND
syscolumns.id
=
OBJECT_ID('Student')
--
單獨查詢表遞增字段
SELECT
[name]
FROM
syscolumns
WHERE
id
=
OBJECT_ID(N'Student')
AND
COLUMNPROPERTY(id,name,'IsIdentity')=1
--
獲取表主外鍵約束
EXEC
sp_helpconstraint
'StuResults'
--
查詢表主鍵外鍵信息
SELECT
sysobjects.id
objectId,OBJECT_NAME(sysobjects.parent_obj)
tableName,
sysobjects.name
constraintName,
sysobjects.xtype
AS
constraintType,
syscolumns.name
AS
columnName
FROM
sysobjects
INNER
JOIN
sysconstraints
ON
sysobjects.xtype
in('C',
'F',
'PK',
'UQ',
'D')
AND
sysobjects.id
=
sysconstraints.constid
LEFT
OUTER
JOIN
syscolumns
ON
sysconstraints.id
=
syscolumns.id
WHERE
OBJECT_NAME(sysobjects.parent_obj)='StuResults'
create
table
card
(cno
int
primary
key,
----這里加主鍵
name
varchar(30),class
int
)
create
table
books1
(bno
int
primary
key,
----這里加主鍵
bname
varchar(50),
author
varchar(30),
price
money,
quantity
int
)
還有一種方法可以添加主外鍵,是在建表完成之后用alter
語句
alter
table
a
add
constraint
fk_constr111
foreign
key(bno)
references
books1(bno)
------給a表bno字段添加外鍵約束引用books1表中的bno
前提當(dāng)然是兩個字段的數(shù)據(jù)類型要一致。并且books1中bno字段為主鍵。
-----舉例修改主鍵
create
table
b(no
int
not
null)
----一定要不為空,才可設(shè)置主鍵,否則報錯
go
alter
table
b
add
constraint
asd_das
primary
key(no)
---這里的asd_das為約束名,可以自己隨便取,但要求不能和其它約束名重復(fù)。
至于那個日期類型,要么你插入的時候用getdate()
函數(shù)獲取當(dāng)前系統(tǒng)時間。否則要用單引號。
有問題繼續(xù)追問吧。
sql中怎樣創(chuàng)建外鍵約束
create table yuangongrn(rn編號 char(8) not null primary key,rn姓名 char(8) not null,rn性別 char(2) null,rn出生日期 datetime null,rn職稱 char(10),rn職務(wù) char(10),rn部門號 char(2) constraint fk_bumenhao foreign key(部門號) references bumen(部門號)rn)rnrncreate table bumenrn(rn部門號 char(2) not null primary key,rn部門名稱 char(12) not nullrn)rnrncreate table gongzirn(rn編號 char(8) not null primary key,rn收入 money null,rn支出 money nullrn)rn怎樣在yuangong表中創(chuàng)建外鍵約束添加外鍵 ,alter table B
語法:alter table 表名 add constraint 外鍵約束名 foreign key(列名) references 引用外鍵表(列名)
如:
alter table Stu_PkFk_Sc
add constraint Fk_s
foreign key (sno)
references Stu_PkFk_S(sno)
--cc是外鍵約束名,不能重復(fù),也不能是int類型(如1,2,3)
add constraint cc
--B表里的需要約束的字段(id)
foreign key (id)
--A表后的(id)可省略
references A (id)
擴(kuò)展資料:
數(shù)據(jù)查詢語言,其語句,也稱為“數(shù)據(jù)檢索語句”,用以從表中獲得數(shù)據(jù),確定數(shù)據(jù)怎樣在應(yīng)用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。
參考資料:結(jié)構(gòu)化查詢語言_百度百科
添加外鍵 ,alter table B
語法:alter table 表名 add constraint 外鍵約束名 foreign key(列名) references 引用外鍵表(列名)
如:
alter table Stu_PkFk_Sc
add constraint Fk_s
foreign key (sno)
references Stu_PkFk_S(sno)
--cc是外鍵約束名,不能重復(fù),也不能是int類型(如1,2,3)
add constraint cc
--B表里的需要約束的字段(id)
foreign key (id)
--A表后的(id)可省略
references A (id)
alter table 從表 表名 add constraint FK_ID foreign key(外鍵字段名)references 主表表名(主鍵字段名)這樣就為表添加了一個外鍵約束。
在創(chuàng)建表之后,添加外鍵約束:
alter table yuangong add constraint fk foreign key (部門號) references bumen(部門號)
或者在創(chuàng)建表的時候添加外鍵
foreign key (部門號) references bumen(部門號)放在最后,用","與列分隔
怎樣創(chuàng)建外鍵約束在寸步不讓你走路的地方灌渠橋
怎樣在用sql語句創(chuàng)建表的同時添加外鍵約束
像下面這樣就好了,F(xiàn)OREIGN KEY(外鍵) REFERENCES 表名(字段)
FOREIGN KEY (`operatorid`) REFERENCES `jr_operator` (`id`)
alter table 表2 add
consraint FK_a_b foreign key(uId) references 表1(uId);
相關(guān)推薦:
電子合同糾紛解決(簽電子合同糾紛怎么解決)
現(xiàn)戶籍所在地怎么填寫(戶籍所在地怎么填寫)
超生新生兒如何上戶(超生如何給孩子上戶口)
行政處罰會留案底嗎(行政處罰決定書會留案底嗎)
公民如何保護(hù)生命健康權(quán)(法律如何保護(hù)我們的健康)