亮剑SqlServer----数据库表外键设置
? ? ? 我们在建立数据库的时候,需要为每张表指定一个主键,所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。当然,其它字段可以辅助我们在执行这些操作时消除共享冲突,不过就不在这里讨论了。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。所以数据库在设计时,主键起到了很重要的作用。 常见的数据库主键选取方式有:
?外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。 详细例子: ? ? ?创建来年各个简单的表:Author表和Detail表 Sql语句如下: create table Author create table Detail ? ? ? ? detail ? ? ? ? ? ?varchar(50)
--添加外键约束语法注释:alter table 表名 add constraint 约束名 foreign key (引用外键列名) references 外键表(外键列) 可视化的操作方法: ? table->选中表->design->选中需要设置外键的字段->选择“关系”->选择"添加"->在表和列规范处选择右边省略号(见图一)->再选择相应关系(见图二)。 如图: 图一: 图二: 备注: 1.。。外键和主键的字段的数据类型必须相同。2.。。在删除表的时候要先删除外键表才能删除主键表 3.。。图二中主键表选择要设置外键字段参照的表(即主键表的一个主键是将要设计的外键),外键表就是要添加外键的表。 下面提供一个网上搜集的综合实例.
--创建数据库 CREATE DATABASE study --打开库 --创建表 IF EXISTS(SELECT * FROM sysobjects WHERE NAME='Stu_PkFk_S') create table Stu_PkFk_C create table Stu_PkFk_SC --测试数据 insert into Stu_PkFk_S values('002','li',16,'女') insert into Stu_PkFk_C values('001',100) insert into Stu_PkFk_SC values('002','001') select * from Stu_PkFk_S DELETE FROM Stu_PkFk_S ? --删除外键 --添加外键 alter table Stu_PkFk_SC ? --测试添加删除主键 ?--删除主键 --增加主键 alter table Stu_PkFk_S add constraint? PK_S primary key (sno)?? go (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server – 如何为SQL Server 2008创建链接服务器,其中有
- sql – 从Oracle DB查找ghost约束
- SQLServer和Oracle的常用函数对比 .
- 实体框架 – 如何在使用Include()时避免在EF中大量生成的SQ
- SQL Server连接GROUP BY
- 无法启用数据库中的 Service Broker 的解决方法
- linq – 实体框架首先选择没有.ToList()的新POCO
- Mysql limit 优化,百万至千万级快速分页 复合索引的引用并
- sqlserver exists,not exists的用法
- sql-server – 为什么每个人都使用sa登录是不好的做法?