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

1.4 主键和外键

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

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

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

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

时间: 2024-09-11 22:52:49

《SQL初学者指南(第2版)》——1.4 主键和外键的相关文章

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

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

《SQL初学者指南(第2版)》——第2章 基本数据检索

第2章 基本数据检索 SQL初学者指南(第2版)关键字:SELECT.FROM 在本章中,我们将介绍SQL中最重要的主题:如何从数据库中检索数据.无论是在大企业还是小企业,SQL开发人员最常遇到的需求就是报表需求.当然,把数据放入到数据库中也不是轻松的活儿.不过,一旦数据存在于数据库之中了,业务分析师的精力就转向可供他们使用的数据财富,以及希望从所有数据中获取有用的信息.SQL语言就有了用武之地. 本书所介绍的数据检索的重点,和现实世界中SQL开发人员所面临的需求密切相关.要帮助企业破解数据库的

《SQL初学者指南(第2版)》第1章 关系型数据库和SQL

第1章 关系型数据库和SQLSQL初学者指南(第2版)正如前言中所提到的,在与关系型数据库中的数据进行交互的时候,SQL是使用最广泛的软件工具.在这方面,SQL利用了自身的语言和逻辑两方面的要素.作为一种语言,SQL的独特语法用到了很多的英语单词,诸如WHERE.FROM和HAVING.作为一种逻辑表达,它指定了在关系型数据库中检索和修改数据的细节. 考虑到了这两方面因素,我们在本书中介绍SQL的各个方面的时候,尝试强调语言和逻辑这两部分.在所有语言中,无论它们是计算机语言还是口语,我们都需要学

《SQL初学者指南(第2版)》——1.8 小结

1.8 小结 本章介绍了关系型数据库的背景知识,以便你能够继续学习主要的话题,即从数据库中检索数据.我们已经讨论过关系型数据库的一些重要的特性,诸如主键.外键和数据类型.我们还介绍了数据中可能存在的NULL值.我们会在第7章中进一步讨论空值,在第18章中,再回到数据库维护的一般性主题,并且在第19章中介绍数据库设计. 为什么和数据库设计相关的所有重要的主题,都放在了本书后边去介绍?简而言之,采用这种方法,是为了让你能够直接投入到SQL的使用,而不必考虑数据库设计的细节.事实上,数据库设计是一门艺

《SQL初学者指南(第2版)》——1.5 数据类型

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

《SQL初学者指南》——1.3 Microsoft SQL Server、Oracle和MySQL

1.3 Microsoft SQL Server.Oracle和MySQL SQL初学者指南尽管我的目标是介绍SQL的核心语言,因为它适用于所有的实现,但是我也会提供SQL语法的一些具体示例.因为各个厂商的语法各异,所以我决定重点关注如下这3种数据库所使用的SQL语法: Microsoft SQL Server:Oracle:MySQL.我会在本书的正文中介绍Microsoft SQL Server的语法.然后,如果这3种数据库之间有任何的差异,我会像下面这样,专门指出MySQL或Oracle的

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

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

《C语言编程——零基础初学者指南(第3版)》一第2章 编写第一个C程序2.1 概述

第2章 编写第一个C程序 C语言编程--零基础初学者指南(第3版)本章内容 编写第一个程序使用main()函数识别数据类型本章将教你如何编写第一个C程序!如果无法理解本章的所有内容,请不要着急.放轻松些,你的目标是先熟悉C程序.经过本章的学习,你要学会识别所有C程序的共同元素. 2.1 概述 C语言编程--零基础初学者指南(第3版)本节将介绍一个简短但完整的C程序,并讨论附录B中的另一个程序--"Draw Poker扑克游戏".这两个程序都包含一些共同和不同的元素.第一个程序相当简单:

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

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

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

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