sql用命令創建主鍵與外鍵。
用命令創建主鍵與外鍵.rn用命令創建默認值對象,并與表中字段綁定.rn用命令創建CHECK約束定義某字段.rn用命令創建規則對象,并與表中字段綁定.rn用命令創建用戶自定義數據類型,并用該數據類型定義表中字段.1、為了方便大家理解,使用一個例子來幫助大家理解。意思大概就是通過引用表二中的字段完成對表一字段的約束。方法:
2、這里一共兩個表,先創建外鍵表,因為先有外鍵,主鍵才能引用。首先創建數據庫,新建查詢。
3、新建外鍵表【teacher】,輸入命令:create table teacher。添加需要的字段teacher_xingming并設置它為【主鍵】。輸入命令:teacher_xingming nchar(10) primary key,
4、選中需要執行的命令行,單擊【執行】,下方會有是否成功的提示。現在對表進行刷新操作后,會發現已經成功創建了一個新表【teacher】。
5、接下來就要創建學生表了,create table student( student_xingming nchar(10) primary key not null,——該程序段意思為創建一個【student】表,表中新建一個主鍵【student_xingming字段,類型為nchar(10) ,并不允許為空。】
6、繼續寫,輸入:student_banji nchar(10) not null,——表中新建一個【student_banji字段,類型為nchar(10) ,并不允許為空。】
7、創建外鍵,輸入命令student_jiaoshi nchar(10) foreign key references teacher(teacher_xingming)看起來很長,實際意思很簡單:表中新建一個【student_jiaoshi字段】,它是外鍵,nchar(10)類型,它來至 teacher_xingming中的內容。
8、選中,點擊【執行】,沒有錯誤,就說明成功了。刷新一下表,看看是不是多了一個表【student】?所有約束已經創建好了。
9、來試一下看看是否真正實現所說的功能。打開【teacher表】,填寫“劉老師”。打開【student表】,前面任意填,最后填寫“劉老師”,沒有錯誤說明沒問題。
10、如何想測試約束是否真的有效,填寫其他內容,看看是否成功,只要不是【teacher】字段中的內容,他就會報錯。
創建主鍵約束,語法: alter table 表名 add constraint [主鍵名稱] primary key (主鍵字段)。
舉例:alter table Student Add constraint PK_Student primary key (Id).
創建外鍵約束,語法: alter table 表名 add constraint [外鍵名稱] foreign key (字段) references 外鏈表名(字段)。
舉例:alter table Student Add constraint FK_Student_Cid foreign key (Id) references Grade(Id).
擴展資料:
通過創建主鍵約束可強制表的實體完整性。當創建或更改表時可通過定義 PRIMARY KEY 約束來創建主鍵。一個表只能有一個 PRIMARY KEY 約束,而且 PRIMARY KEY 約束中的列不能接受空值。由于 PRIMARY KEY 約束確保唯一數據,所以經常用來定義標識列。
在有些數據庫中,雖然主鍵不是必需的,但最好為每個表都設置一個主鍵,不管是單主鍵還是復合主鍵。它存在代表著表結構的完整性,表的記錄必須得有唯一區分的字段,主鍵主要是用于其他表的外鍵關聯,以及本記錄的修改與刪除。
--用命令創建主鍵與外鍵.
--使用SQL語句創建主鍵約束可以在創建表(Create Table)或修改表(Alter Table)時進行 創建。
--例創建表時
create table tablename
(
id int (CONSTRAINT pk_id) PRIMARY KEY
)
--例修改表時
ALTER TABLE tablename --修改表
ADD
CONSTRAINT tb_PRIMARY
PRIMARY KEY CLUSTERED (列名) /*將你要設置為主鍵約束的列*/
--用命令創建默認值對象,并與表中字段綁定.
--使用SQL語句創建主默認值對象可以在創建表(Create Table)或修改表(Alter Table)時進行 創建。
--例創建表時
create table tablename
(
id int DEFAULT 0
)
--例修改表時
ALTER TABLE tablename --修改表
ADD
CONSTRAINT tb_DEFAULT
DEFAULT '10011' FOR 列名 /*將你要設置為默認值對象的列*/
--用命令創建CHECK約束定義某字段.
USE 銷售管理系統 --引入數據庫
ALTER TABLE 銷售表 --修改表
ADD CONSTRAINT ck_sl --創建檢查約束
CHECK (數量 >= 1 and 數量 <= 10000) --添加約束條件
--用命令創建規則對象,并與表中字段綁定.
--創建規則使用CREATE RULE語句創建
CREATE RULE RULE_AGE --創建規則
AS
@AGE !> 40 --規則條件不能大于40
CREATE RULE list_rule --創建規則
AS
@list IN ('1001', '1002', '1003') --規則條件只能輸入1001、1002、1003
CREATE RULE pattern_rule --創建規則
AS
@value LIKE '_ _-%[0-9]' --規則條件在任意兩個字符的后面跟一個連字符和任意多個字符,并以 0 到 9 之間的整數結尾
--創建好一個規則后,必須使用綁定才能夠使用規則,一般情況下,規則可以綁定在用戶自定義數據類型或是數據列中。下面可以使用SQL Server中的系統存儲過程sp_bindrule將規則綁定在數據表中。
EXEC sp_bindrule 'RULE_AGE','操作員信息表.操作員年齡'
--用命令創建用戶自定義數據類型,并用該數據類型定義表中字段.
--在“student”數據庫中,創建用來存儲郵政編碼信息的“postalcode”用戶定義數據類型。
--SQL語句如下:
USE student
EXEC sp_addtype postalcode,'char(8) ','not null'
用命令創建主鍵與外鍵方法如下:
--用命令創建主鍵與外鍵.
--使用SQL語句創建主鍵約束可以在創建表(Create
Table)或修改表(Alter
Table)時進行
創建。
--例創建表時
create
table
tablename
(
id
int
(CONSTRAINT
pk_id)
PRIMARY
KEY
)
--例修改表時
ALTER
TABLE
tablename
--修改表
ADD
CONSTRAINT
tb_PRIMARY
PRIMARY
KEY
CLUSTERED
(列名)
/*將你要設置為主鍵約束的列*/
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怎么設置外鍵
sql怎么設置外鍵sql server中建立外鍵約束有3中方式:enterprise manager中,tables,design table,設置table的properties,可以建立constraint, reference key;enterprise manager中,diagrams, new diagrams,建立兩個表的關系;直接用transact sql語句。
1、三個方法都需要先建立數據表。
1)創建表author :
create table [dbo].[author] (
[id] [bigint] not null ,
[authorname] [char] (10) null ,
[address] [char] (480) null ,
[introduction] [ntext] null
)
2)創建表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、設置表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也會被級聯刪除或更新。如果沒有選中,是不可以對author表中已被mybbs表關聯的id進行update或者delete操作的。
拓展資料:
SQL的主鍵和外鍵的作用:
1、插入非空值時,如果主鍵表中沒有這個值,則不能插入。
2、更新時,不能改為主鍵表中沒有的值。
3、刪除主鍵表記錄時,你可以在建外鍵時選定外鍵記錄一起級聯刪除還是拒絕刪除。
4、更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。
簡而言之,SQL的主鍵和外鍵就是起約束作用。
創建數據庫時就是有主鍵的創建了主鍵,但是表之間的關系沒有聯系,要建數據庫關系圖只有主鍵沒有外鍵時不行的。
建外鍵的前提是此外鍵必須是另外一個表的主鍵。建外鍵的步驟:
第一步、打開要建外鍵表的設計器,右擊選擇“關系”。
第二步、然后彈出“外鍵關系”窗體,我們選擇“添加”,然后點擊“表和列規范”后面的小按鈕。
第三步、彈出另外一個窗體讓我們選擇主鍵表和列,記住要選擇相同的,選好之后點擊確定。
第四步、展開INSERT和UPDATE規范,在更新規則和刪除規則有四個選項,分別是“不執行任何操作”、“級聯”、“設置為NULL”、“設置默認值”。
默認的不執行任何操作。如果是“不執行任何操作”,當我們刪除或更新主鍵表的數據時,會告訴用戶不能執行刪除或更新該操作。
“級聯”的意思是當我們刪除或更新主鍵表的數據時,會刪除或更新外鍵表中所涉及的相關數據的所有行。
“設置Null”的意思是當我們刪除或更新主鍵表的數據時,外鍵表中的外鍵列的值會設為Null,但前提是該列允許為空。
“設置默認值”的意思是如果我們將外鍵列定義了默認值,當我們刪除或更新主鍵表的數據時,外鍵表中的外鍵列的值設為定義的默認值。
當然也可以用代碼創建,在創建數據庫表T——Card時只要加上一句代碼就可以了。“Foreign key (studentNo) references T_Student(studentNo)"。如果已經創建了改表,那如何用代碼實現了,這也很簡單也就一句代碼“ add constraint CMPKey(外鍵名) foreign key(studentNo) references T_Student(studentNo)”。
一、主鍵是能確定一條記錄的唯一標識,比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個人的,其他都可能有重復,所以,身份證號是主鍵。
外鍵用于與另一張表的關聯。是能確定另一張表記錄的字段,用于保持數據的一致性。比如,A表中的一個字段,是B表的主鍵,那他就可以是A表的外鍵。
主鍵和外鍵約束的方法:
create
table
Student
--建表格式:create
table
自定義的表名
(
--字段名一般為有一定意義的英文
StudentName
nvarchar(15),
--
格式:字段名類型()括號里面的是允許輸入的長度
StudentAge
int,
--int型的后面不需要接長度
StudentSex
nvarchar(2)
--最后一個字段后面不要逗號
)
--在創建表時就可以對字段加上約束:
create
table
Student
(
StudentNo
int
PRIMARY
KEY
IDENTITY(1,1),
--加主鍵約束,還有標識列屬性(兩者構成實體完整性)
StudentName
nvarchar(15)
not
null,
--加非空約束,不加"not
null"
默認為:可以為空
StudentSchool
text(20)
FOREIGN
KEY
REFERENCES
SchoolTable(SchoolName),
--加外鍵約束,格式:FOREIGN
KEY
REFERENCES
關聯的表名(字段名)
StudentAge
int
DEFAULT
((0)),
--加默認值約束
StudentSex
nvarchar(2)
CHECK(StudentSex=N'男'
or
StudentSex=N'女')
--加檢查約束,格式:check
(條件表達式)
)
--如果在表創建好了以后再加約束,則格式分別為:
--
主鍵:
alter
table
表名
add
constraint
PK_字段名--"PK"為主鍵的縮寫,字段名為要在其上創建主鍵的字段名,'PK_字段名'就為約束名
primary
key
(字段名)
--字段名同
--唯一約束:
alter
table
表名
add
constraint
UQ_字段名
unique
(字段名
--外鍵約束:
alter
table
表名
add
constraint
FK_字段名--"FK"為外鍵的縮寫
foreign
key
(字段名)
references
關聯的表名(關聯的字段名)
--注意'關聯的表名'和'關聯的字段名'
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
級聯更新,級聯刪除,這樣在刪除主表Student時,成績表中該學生的所有成績都會刪除。
--檢查約束:
alter
table
表名
add
constraint
CK_字段名
check
(條件表達式)
--條件表達式中的條件用關系運算符連接
--默認值約束:
alter
table
表名
add
constraint
DF_字段名
default
'默認值'
for
字段名--其中的'默認值'為你想要默認的值,注意'for'
--刪除創建的約束:
alter
table
表名
drop
constraint
約束名--約束名為你前面創建的如:PK_字段這樣的約束名
--注意:如果約束是在創建表的時候創建的,則不能用命令刪除
--只能在'企業管理器'里面刪除
--
獲取SqlServer中表結構
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
前提當然是兩個字段的數據類型要一致。并且books1中bno字段為主鍵。
-----舉例修改主鍵
create
table
b(no
int
not
null)
----一定要不為空,才可設置主鍵,否則報錯
go
alter
table
b
add
constraint
asd_das
primary
key(no)
---這里的asd_das為約束名,可以自己隨便取,但要求不能和其它約束名重復。
至于那個日期類型,要么你插入的時候用getdate()
函數獲取當前系統時間。否則要用單引號。
有問題繼續追問吧。
sql中怎樣創建外鍵約束
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職務 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表中創建外鍵約束添加外鍵 ,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是外鍵約束名,不能重復,也不能是int類型(如1,2,3)
add constraint cc
--B表里的需要約束的字段(id)
foreign key (id)
--A表后的(id)可省略
references A (id)
擴展資料:
數據查詢語言,其語句,也稱為“數據檢索語句”,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。
參考資料:結構化查詢語言_百度百科
添加外鍵 ,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是外鍵約束名,不能重復,也不能是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 主表表名(主鍵字段名)這樣就為表添加了一個外鍵約束。
在創建表之后,添加外鍵約束:
alter table yuangong add constraint fk foreign key (部門號) references bumen(部門號)
或者在創建表的時候添加外鍵
foreign key (部門號) references bumen(部門號)放在最后,用","與列分隔
怎樣創建外鍵約束在寸步不讓你走路的地方灌渠橋
怎樣在用sql語句創建表的同時添加外鍵約束
像下面這樣就好了,FOREIGN KEY(外鍵) REFERENCES 表名(字段)
FOREIGN KEY (`operatorid`) REFERENCES `jr_operator` (`id`)
alter table 表2 add
consraint FK_a_b foreign key(uId) references 表1(uId);
相關推薦:
農轉非戶口(農轉非戶口有什么好處)
嫖娼被抓有什么處罰(嫖娼被抓后如何處置)
人口普查能上戶口嗎(人口普查可以給孩子上戶口嗎)
身份證遺失如何辦理(公民身份證遺失如何補辦)
網貸逾期怎么處罰(網貸逾期會怎么樣會受到什么處罰)