我们在建立数据库的时候,需要为每张表指定一个主键,所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。当然,其它字段可以辅助我们在执行这些操作时消除共享冲突,不过就不在这里讨论了。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。所以数据库在设计时,主键起到了很重要的作用。
常见的数据库主键选取方式有:
-
自动增长字段
-
手动增长字段
-
UniqueIdentifier
-
“COMB(Combine)”类型
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
详细例子:
创建来年各个简单的表:Author表和Detail表
Sql语句如下:
create table Author
(
id int identity(1,1) primary key not null,
name varchar(50)
)
create table Detail
(
idint identity(1,1) primary key not null,
author_id int,
detail varchar(50)
)
--添加外键约束语法注释:alter table 表名 add constraint 约束名 foreign key (引用外键列名) references 外键表(外键列)
可视化的操作方法:
table->选中表->design->选中需要设置外键的字段->选择“关系”->选择"添加"->在表和列规范处选择右边省略号(见图一)->再选择相应关系(见图二)。
如图:
图一:

图二:

备注:
1.。。外键和主键的字段的数据类型必须相同。
2.。。在删除表的时候要先删除外键表才能删除主键表
3.。。图二中主键表选择要设置外键字段参照的表(即主键表的一个主键是将要设计的外键),外键表就是要添加外键的表。
下面提供一个网上搜集的综合实例.
--创建数据库
USE master
GO
IF EXISTS(SELECT * FROM sysdatabases WHERE NAME='study')
DROP DATABASE study
GO
CREATE DATABASE study
ON
( NAME = study_dat,
FILENAME = 'c:/study/study_data.mdf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
LOG ON
( NAME = 'study_log',
FILENAME = 'c:/study/study_log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
--打开库
use study
--创建表
IF EXISTS(SELECT * FROM sysobjects WHERE NAME='Stu_PkFk_S')
DROP TABLE Stu_PkFk_S
GO
create table Stu_PkFk_S
(
sno char(6),
sname char(10),
age int,
sex char(2),
constraint PK_S primary key (sno), --主键
constraint CK_age check(age>=0 and age<=150) --约束
)
create table Stu_PkFk_C
(
cno char(8),
cname char(16),
credit int,
constraint PK_C primary key (cno), --主键
constraint CK_credit check (credit>=0) --约束
)
create table Stu_PkFk_SC
(
sno char(6),
cno char (8),
constraint PK_SC primary key (sno,cno),
constraint FK_s foreign key (sno) references Stu_PkFk_S(sno), --外键
constraint FK_c foreign key (cno) references Stu_PkFk_C(cno)
)
--测试数据
insert into Stu_PkFk_S values ('001','zhang',19,'男')
insert into Stu_PkFk_S values('002','li',16,'女')
insert into Stu_PkFk_C values('001','li',100)
insert into Stu_PkFk_SC values('002','001')
select * from Stu_PkFk_S
select * from Stu_PkFk_C
select * from Stu_PkFk_SC
DELETE FROM Stu_PkFk_S
DELETE FROM Stu_PkFk_SC
--测试添加删除外键
--添加外键约束语法注释:alter table 表名 add constraint 约束名 foreign key (引用外键列名) references 外键表(外键列)
--删除外键
alter table Stu_PkFk_Sc drop constraint FK_s
alter table Stu_PkFk_SC drop constraint FK_c
--添加外键
alter table Stu_PkFk_Sc
add constraint Fk_s
foreign key (sno)
references Stu_PkFk_S(sno)
go
alter table Stu_PkFk_SC
add constraint Fk_c
foreign key (cno)
references Stu_PkFk_C(cno)
go
--测试添加删除主键
--删除主键
alter table Stu_PkFk_S drop constraint PK_S
go
--增加主键
alter table Stu_PkFk_S add constraint PK_S primary key (sno)
go
分享到:
相关推荐
在SQL Server中,标识列(Identity Column)是一种自增型字段,常用于自动为表中的记录分配唯一的序列号。这在创建主键或唯一索引时非常有用,尤其是在需要为新记录自动分配唯一编号的情况下。但是,在某些情况下,...
在SQL Server 2005中,主键与外键是数据库设计中非常重要的概念,它们主要用于确保数据的完整性和一致性。特别是在复杂的数据关系管理中,复合主键的应用更是能够帮助我们有效地处理多对多的关系或者是更为复杂的...
《SQLServer--关系数据库系统管理与开发(2)》这一资料主要聚焦于SQL Server这一关系数据库管理系统在管理和开发中的深入探讨。SQL Server是Microsoft公司推出的一款强大的数据存储、处理和分析平台,它广泛应用于...
课件可能会详细讲解SQL Server的安装和配置过程,包括选择适当的版本(如Express、Developer或Enterprise),以及如何设置服务器属性、数据库实例和安全设置。 接着,你会学习到如何创建数据库和表。在SQL Server中...
【郝斌老师-sql-server-2005数据库大纲】主要涵盖了数据库的基础概念、重要性、安装与卸载,以及数据库的学习方法。首先,我们来深入理解数据库的本质: 数据库,从狭义上讲,是存储数据的仓库,而广义上,它包括了...
在 SQL Server 2008 中绘制 ER 图是一项非常实用且重要的技能,它有助于设计师和开发者更好地理解数据库结构,并能够有效地进行数据库设计和优化。通过上述步骤,您可以轻松地在 SQL Server Management Studio 中...
SQL Server 2008是Microsoft推出的一款关系型数据库管理系统,具有广泛的应用于数据存储、分析和报告。在本教程中,我们将深入探讨其体系结构、安装、配置以及数据库的建立与维护。 首先,SQL Server 2008的体系...
在SQL Server 2000中,这涉及表的创建、字段定义、主键和外键约束、索引设计等。良好的数据库设计可以避免数据冗余,保证数据一致性,并优化查询性能。 10. **故障排查与监控** SQL Server 2000提供了一系列工具,...
- 连接到SQL Server实例后,展开“数据库”节点,选择`student`数据库,接着展开“表”节点。 - 右键点击“表”,选择“新建表”命令,打开“表设计器”。 2. **定义列属性**: - 在表设计器中定义表的各列,...
SqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则
描述中提到的"SQLServer生成所有外键存储过程"是一个专门设计的存储过程,它的目标是在不违反外键约束的情况下,批量地将数据库中所有表的varchar字段转换为Nvarchar。这是因为varchar只能存储非Unicode字符,而...
SQL Server数据库是微软公司开发的一款关系型数据库管理系统,它在企业级数据存储、管理和分析方面具有广泛的应用。作为初学者,了解SQL Server的基本使用对于掌握数据库管理至关重要。本资源专区将带你逐步走进SQL ...
通过这个实验,不仅掌握了创建和管理SQL Server 2012数据库的基本操作,如设计表结构、设置完整性约束,还熟悉了查询语言和表间关系的建立。同时,也认识到在实际应用中,对SQL Server的深入理解和熟练运用是十分...
通过本次实验,我们不仅学习了如何使用 SQL Server 2021 设计并创建表,还掌握了如何设置主键、非空约束等用户自定义约束条件,以及如何在表之间建立连接和参照关系。这些技能对于确保数据库的完整性和安全性至关...
SQL Server 2005 Express Edition 是微软推出的一款轻量级数据库管理系统,特别适用于小型企业和个人开发者。在64位(X64)系统上安装SQL Server 2005 Express,可以充分利用更大的内存和处理器资源,从而提高数据...
### 使用PowerDesigner设计SQL Server数据库知识点详解 #### 一、PowerDesigner概述 - **PowerDesigner**是一款由SAP公司开发的强大的数据建模工具,它能够帮助开发者进行数据库设计、元数据管理和数据仓库构建等...
- 服务器网络实用工具:配置SQL Server的网络设置,管理连接选项。 - 作业代理:调度和执行数据库维护任务,如备份、清理等。 5. **安全性与权限管理** - 用户和登录:定义数据库用户并分配相应的登录权限。 - ...
SQL Server 数据库对象是数据库中的基本组成部分,包括表、主键、外键、视图、约束、默认值、规则、索引、存储过程和触发器等。 * 表:是数据库中的基本存储单元,用于存储数据。 * 主键:是一个或多个列的组合,...
### 相关知识点 ...通过上述步骤,用户可以掌握 SQL Server 2008 R2 的基本操作,包括启动服务、创建数据库和表以及执行基本的 SQL 查询操作。这些技能对于管理和维护 SQL Server 数据库至关重要。