《SQL初学者指南》——1.6 主键和外键

1.6 主键和外键

SQL初学者指南
请留意每个表的第一列:即Customers表中的CustomerID和Orders表中的OrderID。这些列通常称为主键(primary key)。主键之所以有用和有必要,有两个原因。首先,它们使你能唯一地标识表中一个单独的行。例如,如果想要查找William Smith这一行,我们可以只使用CustomerID列来获取数据。主键还确保了唯一性。当指定CustomerID列作为主键时,就保证了表中的该列针对每一行都拥有一个唯一的值。即使在数据库中,有两个不同的人都叫William Smith,这两行的CustomersID列的值也会不同。

在这个示例中,主键列的值没有任何特殊含义。在Customers表中,CustomerID列在表的3行中的值分别为1、2和3。通常情况下,我们会以这样的一种方式来设计数据库的表:当表中增加新的行时,主键列会自动生成顺序的编号。通常,我们把这种设计特性叫做自增型(auto-increment)。

使用主键的第2个原因是,可以很容易地把一个表和另一个表进行关联。在这个例子中,Orders表中的CustomerID列,指向了Customers表中对应的一行。查看一下Orders表的第4行,会发现其CustomerID列的值是3。这就意味着,CustomerID为3的客户下了这个订单,这位客户名为Brenda Harper。在表之间使用共同的列,这是关系型数据库中一项基本的设计要素。

除了可以指向Customers表,还可以把Orders表中的CustomerID列指定为外键(foreign key)。我会在第18章中详细地介绍外键,这里只需要知道,定义外键是要确保这一列有一个有效的值。例如,我们希望Orders表中的CustomerID列的值,必须是Customer表中真正存在的一个CustomerID值。指定一列作为外键,就可以实现这种限制。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-09-10 08:13:37

《SQL初学者指南》——1.6 主键和外键的相关文章

《SQL初学者指南(第2版)》——1.4 主键和外键

1.4 主键和外键 请留意每个表的第1列:即Customers表中的CustomerID和Orders表中的OrderID.这些列通常称为主键(primary key).主键之所以有用和有必要,有两个原因.首先,它们使你能够唯一地标识表中一个单独的行.例如,如果想要查找Bob Davis这一行,我们可以只使用CustomerID列来获取数据.主键还确保了唯一性.当指定CustomerID列作为主键时,就保证了表中的该列针对每一行都拥有一个唯一的值.即使在数据库中有两个不同的人都叫做Bob Dav

《SQL初学者指南》——1.8 空值

1.8 空值 SQL初学者指南 表中每个单独列的另一个重要属性是,该列是否允许包含空值.空值表示某个特定的数据元素没有数据.按照字面意思解释就是没包含数据.空值不等同于空格或空白.从逻辑上讲,空值和空格要区分对待.在第8章中,我们会详细介绍如何检索包含空值的数据. 许多SQL数据库在显示带有空值的数据时,使用大写的单词NULL来表示.这么做是要让用户能够识别它包含的是一个空值,而不是一个空格.我也会遵循这个惯例,在书中用NULL来强调它表示一个特殊类型的值. 数据库的主键不能包含NULL值.这是

《SQL初学者指南(第2版)》导读

前言 SQL初学者指南(第2版) SQL(Structured Query Language)是用于和关系数据库交互的主要语言.本书的目标是成为SQL语言的一本有用的入门指南. 本书的另一个假想的书名是The Logic of SQL(<SQL的逻辑>).这是因为,和所有的计算机语言一样,SQL语言和冷冰冰.硬邦邦的逻辑而不是和英语词汇更加相关.尽管如此,本书的书名中还是保留了Language(语言)这个词,这有几方面的原因. 1.首先,SQL中基于语言的语法和其他的计算机语言有所区别.和其他

《SQL初学者指南》——1.7 数据类型

1.7 数据类型 SQL初学者指南主键和外键为数据库表添加了结构.它们确保了数据库中所有的表都是可访问的,表之间有正确的关联.表中的每一列的另一个重要属性是数据类型. 数据类型是定义一个列所能包含数据的类型的一种方法.要为每个表中的每一列都指定一个数据类型.遗憾的是,各种关系型数据库所允许的数据类型和它们所代表的含义,有很大的不同.例如,Microsoft SQL Server.MySQL和Oracle,各自都有超过30种不同的可用数据类型. 即使只有3种数据库,我们都不可能去介绍每种可用的数据

《SQL初学者指南》——1.10 小结

1.10 小结 SQL初学者指南本章介绍了关系型数据库的背景知识,以便我们能继续学习主要的话题,这些话题涉及从数据库中检索数据.我们已经讨论过关系型数据库的一些重要的特性,诸如主键.外键和数据类型.我们还介绍了数据中可能存在的NULL值.我们会在第8章中进一步讨论空值,在第18章中,再回到数据库维护的一般性主题,并在第19章中介绍数据库设计. 为什么和数据库设计相关的所有重要的主题,都放在了本书后边去介绍?在现实世界中,先要设计和创建数据库,然后才能检索数据.为什么在本书中,我没有遵循相同的顺序

《SQL初学者指南》——第1章 关系型数据库和SQL

第1章 关系型数据库和SQL SQL初学者指南在本章中,我们将介绍一些背景知识,以便于你能够很快地上手,能在后续的章节中编写SQL语句.本章有两个主题.首先是对本书所涉及到的数据库做一个概述,并且介绍和这些数据库是如何与SQL语言相关的.我还将介绍本书的特点,这能让你快速地决定,针对你正在使用的数据库,应该采用什么样的SQL语法. 其次,我们将介绍关系型数据库的一些关键的设计特点,并且会介绍表.行.列.键以及数据类型.在掌握了这些基本信息后,你马上就可以工作了.事不宜迟,让我们开始吧. 本文仅用

如何区分SQL数据库中的主键与外键_MsSql

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的

《SQL初学者指南》——1.9 SQL的重要性

1.9 SQL的重要性 SQL初学者指南在我们离开关系型数据库的主题之前,为了让你对关系型数据库的优点和SQL的重要性有更深入的了解,我们来回顾一下历史. 回到计算机的石器时代(20世纪60年代),人们通常把数据保存在磁带上,或者保存在磁盘存储器上的文件中.使用诸如FORTRAN和COBOL这样的语言编写的计算机程序,通常通过输入文件进行读取,并且一次只处理一条记录,最终将数据移动到输出文件.过程必然是很复杂的,因为需要把过程分解成多个单独的步骤,涉及临时表.排序以及多次数据传递,直到能够生成正

《SQL初学者指南》——1.4 其他数据库

1.4 其他数据库 SQL初学者指南除了Microsoft SQL Server.Oracle和MySQL以外,还有很多其他的SQL数据库软件.一些比较流行的软件如下所示: Microsoft的Microsoft Access:IMB的DB2:IBM的Informix:Sybase的SQL Anywhere:开源数据库PostgreSQL.在列出的这些数据库中,Microsoft Access有一些特别,它对于那些想要学习SQL语言的新手特别有用.其实,Access是关系型数据库的一个图形化界面