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)”。
建外键的前提是此外键必须是另外一个表的主键。建外键的步骤:
第一步、打开要建外键表的设计器,右击选择“关系”。
第二步、然后弹出“外键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮。
第三步、弹出另外一个窗体让我们选择主键表和列,记住要选择相同的,选好之后点击确定。
第四步、展开INSERT和UPDATE规范,在更新规则和删除规则有四个选项,分别是“不执行任何操作”、“级联”、“设置为NULL”、“设置默认值”。
默认的不执行任何操作。如果是“不执行任何操作”,当我们删除或更新主键表的数据时,会告诉用户不能执行删除或更新该操作。
“级联”的意思是当我们删除或更新主键表的数据时,会删除或更新外键表中所涉及的相关数据的所有行。
“设置Null”的意思是当我们删除或更新主键表的数据时,外键表中的外键列的值会设为Null,但前提是该列允许为空。
“设置默认值”的意思是如果我们将外键列定义了默认值,当我们删除或更新主键表的数据时,外键表中的外键列的值设为定义的默认值。
当然也可以用代码创建,在创建数据库表T——Card时只要加上一句代码就可以了。“Foreign
key
(studentNo)
references
T_Student(studentNo)"。如果已经创建了改表,那如何用代码实现了,这也很简单也就一句代码“
add
constraint
CMPKey(外键名)
foreign
key(studentNo)
references
T_Student(studentNo)”。
展开全部
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的主键和外键就是起约束作用。
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的主键和外键就是起约束作用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两种方法,命令与图形化
图形化,在控制台左边的小窗格中,找到要设置的表格名,右键,新建外键,然后根据要求设置既可。(新建关系图-->添加表
然后直接用鼠标拖字段连接就可以建立外键约束了
)
命令方式
sql
ce表中建立外键约束的语法:CREATE
TABLE
DetectTable(UserID
integer,StartTime
datetime
not
null,EndTime
datetime
not
null,MassName
nvarchar(10),
foreign
key
(UserID)
references
UserTable(UserID)),其中,UserID为UserTable表中的主键。
图形化,在控制台左边的小窗格中,找到要设置的表格名,右键,新建外键,然后根据要求设置既可。(新建关系图-->添加表
然后直接用鼠标拖字段连接就可以建立外键约束了
)
命令方式
sql
ce表中建立外键约束的语法:CREATE
TABLE
DetectTable(UserID
integer,StartTime
datetime
not
null,EndTime
datetime
not
null,MassName
nvarchar(10),
foreign
key
(UserID)
references
UserTable(UserID)),其中,UserID为UserTable表中的主键。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以在创建表的时候创建,也可以在创建表之后创建。
创建表时创建:
create
table
student
(id
int
primary
key,
name
char(4),
dept
char(9)
sex
char(4))
create
table
grade
(id
int
,
grade
int
constraint
id_fk
foreign
key
(id)
references
student
(id)
)
或创建了两表之后再建
alter
table
grade
add
constraint
id_fk
foreign
key
(id)
references
student
(id)
呵呵,希望能帮助你。
创建表时创建:
create
table
student
(id
int
primary
key,
name
char(4),
dept
char(9)
sex
char(4))
create
table
grade
(id
int
,
grade
int
constraint
id_fk
foreign
key
(id)
references
student
(id)
)
或创建了两表之后再建
alter
table
grade
add
constraint
id_fk
foreign
key
(id)
references
student
(id)
呵呵,希望能帮助你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
若是创建了表,添加外键时,语法参照如下:
ALTER
TABLE
`o2o`.`tb_product_category`
ADD
CONSTRAINT
`shop_id`
FOREIGN
KEY
(`shop_id`)
REFERENCES
`o2o`.`tb_shop`
(`shop_id`)
ALTER
TABLE
`o2o`.`tb_product_category`
ADD
CONSTRAINT
`shop_id`
FOREIGN
KEY
(`shop_id`)
REFERENCES
`o2o`.`tb_shop`
(`shop_id`)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询