㈠ sql SERVER中,主外键关系是怎么回事
主键、外键和索引的区别
定义:
主键--唯一标识一条记录,不能有重复的,不允许为空
外键--表的外键是另一表的主键,
外键可以有重复的,
可以是空值
作用:
主键--用来保证数据完整性
外键--用来和其他表建立联系用的
个数:
主键--主键只能有一个
外键--一个表可以有多个外键
SQL的主键和外键的作用:
外键取值规则:空值或参照的主键值。
(1)插入非空值时,如果主键表中没有这个值,则不能插入。
(2)更新时,不能改为主键表中没有的值。
(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。
(4)更新主键记录时,同样有级联更新和拒绝执行的选择。
简而言之,SQL的主键和外键就是起约束作用。
㈡ sql中数据库主外键关联问题
你先把student
和
teacher
表建立起来,并且分别把cno和tno设为primarykey.
然后在建立
课程
和
选课
两个表。建立课程表的时候把Tno字段对应上教师表的主键,也就是课程表的Tno字段为教师表主键的外键字段。
同理:成绩表的Sno字段对应学生表的主键,这样两个驻外见关系就建立起来了。
㈢ 如何禁用和启用mysql外键约束
1、可以使用SET FOREIGN_KEY_CHECKS=0;
来禁用外键约束.
2、再用SET FOREIGN_KEY_CHECKS=1;
来启动外键约束.
3、查看当前FOREIGN_KEY_CHECKS的值可用如下命令
SELECT @@FOREIGN_KEY_CHECKS;
㈣ sql server怎样删除外键约束
1.首先,我们使用SQLSERVER2008打开需要删除外键约束的表,点击左侧的“dbo”通道项,选择“setclick”。
注意事项:
可以双击键约束来添加外键约束,它有四个不同的选项:CASCADE、SETNULL、NOACTION、restricted。
1.级联:删除或更新父表中相应的行,并自动删除或更新表中匹配的行。[在删除CANSCADE和更新CANSCADE都支持InnoDB。
2.SETNULL:删除或更新父表中对应的行,并将子表中的外键列设置为空。注意,这些外键列没有设置为NOTNULL。InnoDB支持删除集空值和更新集空值。
3.无操作:InnoDB拒绝删除或更新父表。
4.限制:拒绝删除或更新父表。
㈤ 在SqlServer2005中怎么禁用外键
A表引用B表 意思是B表是主键 A表是外键 这样的话是不能自动关联删除的
可以在删除A表数据后 再删除相应的B表信息
换言之 多写个删除语句.....
㈥ 关于SQL Server主外键设置问题
1、要建立外键关系,首先要保证用来建立外键关系的列具有唯一性,即具有UNIQUE约束,通常是某表的主键作为另外一个表的外键;
㈦ SQL主外键设置
你可以在[dbo].[tb_Article]这个表中的[CategoryID]
[int]
NOT
NULL
后面增加外键关系
primarykey
references
[dbo].[tb_Category]([categoryid]);
主外键主要是为了控制你在表[dbo].[tb_Article]中插入数据的时候必须是
该条数据的[CategoryID]
必须是已经在
[dbo].[tb_Category]中出现的,而且他们的数据类型以及长度都必须相同,完全一致。
㈧ 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 ,
[introction] [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中怎样删除表的主外键
--删除主键
alter table Stu_PkFk_S drop constraint PK_S
删除SQL SERVER外键
alter table Stu_PkFk_Sc drop constraint FK_s
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键
比如
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键
成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键
同理 成绩表中的课程号是课程表的外键
㈩ 怎样删除存在主外键关系的数据,怎样编写SQL语句
如果你的表里面 使用了级联关系 你删除主表时 子表也就删除了。 如果咩有的话 你只能写where语句比较了之前如果有级联关系(级联关系:主键执行的操作同时影响外键)的话,只需要运行delete 列名 from 表名 where 约束条件