SQLserver外关联,数据库表外键关联

关联两个表有几种方法,比如说是sqlserver数据库的关联方式

关联两个表的方式包含内连接,外连接(左外连接,右外连接),交叉连接。

创新互联成立与2013年,我们提供高端网站建设、微信平台小程序开发、电商视觉设计、APP应用开发及网络营销搜索优化服务,在传统互联网与移动互联网发展的背景下,我们坚守着用标准的设计方案与技术开发实力作基础,以企业及品牌的互联网商业目标为核心,为客户打造具商业价值与用户体验的互联网+产品。

参考语句:

内连接

select * from student a

inner join stuMarks b

on a.stuid=b.stuid

外连接

select * from student a

inner join stuMarks b

on a.stuid=b.stuid

交叉连接

select * from student a

crossjoin stuMarks b

sqlserver怎么删除有外键关联的数据?

--使用SYSREFERENCES

--删除外键

set xact_abort on

begin tran

DECLARE @SQL VARCHAR(99)

DECLARE CUR_FK CURSOR LOCAL FOR

SELECT 'alter table ['+ OBJECT_NAME(FKEYID) + '] drop constraint ' + OBJECT_NAME(CONSTID) FROM SYSREFERENCES

--删除所有外键

OPEN CUR_FK

FETCH CUR_FK INTO @SQL

WHILE @@FETCH_STATUS =0

BEGIN

EXEC(@SQL)

FETCH CUR_FK INTO @SQL

END

CLOSE CUR_FK

DEALLOCATE CUR_FK

-- 删除所有表

DECLARE CUR_TAB CURSOR LOCAL FOR

SELECT 'DROP TABLE '+ NAME FROM SYSOBJECTS WHERE XTYPE='U' -- AND NAME LIKE 'xx%'

OPEN CUR_TAB

FETCH CUR_TAB INTO @SQL

WHILE @@FETCH_STATUS =0

BEGIN

EXEC(@SQL)

FETCH CUR_TAB INTO @SQL

END

CLOSE CUR_TAB

DEALLOCATE CUR_TAB

commit tran

--使用sys.foreign_keys

--disable and enable 外键

这里解释下 { CHECK | NOCHECK } CONSTRAINT

Specifies that constraint_name is enabled or disabled. This option can only be used with FOREIGN KEY and CHECK constraints. When NOCHECK is specified, the constraint is disabled and future inserts or updates to the column are not validated against the constraint conditions. DEFAULT, PRIMARY KEY, and UNIQUE constraints cannot be disabled.

上面的解释是,NOCHECK对应于disable, CHECK则对应于enable

select

'ALTER TABLE '+o.name+' NOCHECK CONSTRAINT '+fk.name+';' AS Command

from

sys.foreign_keys fk

JOIN sys.all_objects o ON (fk.parent_object_id=o.object_id)

具体会有多少条记录,取决于你的数据库里面,有多少个外键了。

然后复制结果, 粘贴出来执行. 就停用 外键约束了.

再删除数据

数据删除好了, 再启用外键约束

select

'ALTER TABLE ' + o.name + ' CHECK CONSTRAINT ' + fk.name + ';' AS Command

from

sys.foreign_keys fk

JOIN sys.all_objects o ON (fk.parent_object_id = o.object_id)

和前面的一样, 把查询出来的结果, 复制一下, 然后粘贴出来去执行.

--使用sys.foreign_key_columns

--查出外键

select name

from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id

where f.parent_object_id=object_id('表名')

--删除外键

alter table 表名 drop constraint 外简名

sqlserver外键关系有什么用?

SQL的主键和外键的作用:

外键取值规则:空值或参照的主键值。

(1)插入非空值时,如果主键表中没有这个值,则不能插入。

(2)更新时,不能改为主键表中没有的值。

(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。

(4)更新主键记录时,同样有级联更新和拒绝执行的选择。

简而言之,SQL的主键和外键就是起约束作用。

主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。


名称栏目:SQLserver外关联,数据库表外键关联
文章起源:http://myzitong.com/article/dscpgph.html