下面是详细讲解“SQL Server主键与外键设置以及相关理解”的完整攻略。
什么是主键?
主键是用来保证关系型数据库中某张表中的记录唯一性的一种约束方式。主键可以是一个或多个字段的组合。主键一般情况下是指定给该表中的一个字段,并且该字段的值不能为NULL。
在SQL Server中,可以通过下面的代码来创建主键:
ALTER TABLE TableName ADD CONSTRAINT PK_TableName PRIMARY KEY (ColumnName);
其中,TableName
为表名,ColumnName
为列名。
什么是外键?
外键是指链接两个表格的一列或多列,它用于指定一张表格中的数据会与另一张表中的数据产生关联关系。实际上,外键是一种指向另一张表格的主键的一列或一组列,用于确保指向另一表格的行的完整性。
在SQL Server中,可以通过下面的代码来创建外键:
ALTER TABLE TableName ADD CONSTRAINT FK_TableName FOREIGN KEY (ColumnName) REFERENCES ForeignKeyTableName (ForeignKeyColumnName);
其中,TableName
为表名,ColumnName
为列名,ForeignKeyTableName
为外键关联的表名,ForeignKeyColumnName
为外键关联的列名。
主键与外键的关系
在数据库中,主键和外键可以用来建立表与表之间的关系。例如,在一个订单表和一个顾客表中,订单表中的顾客ID字段可以作为外键指向顾客表中的主键,以此来建立这两张表之间的关系。下面的代码演示了如何在SQL Server中为订单表添加一个指向顾客表的外键:
ALTER TABLE OrderTable ADD CONSTRAINT FK_OrderTable_Customer FOREIGN KEY (CustomerID) REFERENCES CustomerTable (CustomerID);
在上面的代码中,OrderTable
是订单表名称,CustomerID
是订单表中指向顾客表的外键列,CustomerTable
是顾客表名称,CustomerID
是指向顾客表的主键列。
示例1
下面是一个示例,假设我们有两个表格,Student和Classroom,以及一个字表格,Courses,其中Courses表格的外键是指向名为StudentID的Student表格中的主键,而另一个外键则是指向名为ClassroomID的Classroom表格中的主键:
CREATE TABLE Classroom (
ClassroomID int PRIMARY KEY,
ClassroomName varchar(50)
);
CREATE TABLE Student (
StudentID int PRIMARY KEY,
FirstName varchar(50),
LastName varchar(50),
ClassroomID int FOREIGN KEY REFERENCES Classroom(ClassroomID)
);
CREATE TABLE Courses (
CourseID int PRIMARY KEY,
CourseName varchar(50),
StudentID int FOREIGN KEY REFERENCES Student(StudentID)
);
在上面的代码中,定义了三个表格,分别是Classroom、Student和Courses。其中,Classroom表格包含ClassroomID和ClassroomName两个字段,Student表格包含StudentID、FirstName、LastName和ClassroomID四个字段,Courses表格包含CourseID、CourseName和StudentID三个字段。在Student表格中,ClassroomID字段被设置成了外键,指向Classroom表格中的主键。在Courses表格中,StudentID字段被设置成了外键,指向Student表格中的主键。
示例2
下面是另一个示例,假设我们在之前的基础上增加一个Orders表格,可以使用Orders表格的OrderID字段来关联Student表格中的StudentID字段,并使用Students表格中的StudentID和Orders表格中的OrderID字段来关联Courses表格中的StudentID字段,进而建立四个表格之间的关系:
CREATE TABLE Orders (
OrderID int PRIMARY KEY,
OrderDate datetime,
StudentID int NOT NULL,
FOREIGN KEY (StudentID) REFERENCES Student(StudentID)
);
CREATE TABLE Classroom (
ClassroomID int PRIMARY KEY,
ClassroomName varchar(50)
);
CREATE TABLE Student (
StudentID int PRIMARY KEY,
FirstName varchar(50),
LastName varchar(50),
ClassroomID int FOREIGN KEY REFERENCES Classroom(ClassroomID)
);
CREATE TABLE Courses (
CourseID int PRIMARY KEY,
CourseName varchar(50),
StudentID int NOT NULL,
OrderID int NOT NULL,
FOREIGN KEY (StudentID, OrderID) REFERENCES Orders(StudentID, OrderID),
FOREIGN KEY (StudentID) REFERENCES Student(StudentID)
);
在上面的代码中,增加了一个Order表格,并在Student和Courses表格中增加了一个OrderID字段,用来关联Order表格中的OrderID字段。在Orders表格中,StudentID字段被设置成了外键,指向Student表格中的主键。在Courses表格中,StudentID和OrderID字段被设置成外键,分别指向Student表格中的主键和Orders表格中的OrderID字段。
通过上述两个示例的说明,我们了解了SQL Server中主键和外键的设置方法以及其在关系型数据库中的作用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL Server主键与外键设置以及相关理解 - Python技术站