用SQL定义实体属性及联系例题
在计算机领域,存在着诸多伟大的设计理念和思想。例如,在Unix中,一切都被视为文件;在面向对象的编程语言中,一切皆是对象。同样,关系数据库也有其独特的设计思想:在SQL中,一切皆为关系。
关系模型是数据库系统的核心概念,由E.F.Codd博士于1970年提出。它以集合论中的关系概念为基础,无论是现实世界中的实体对象还是它们之间的联系,都使用关系来表示。我们所见到的数据库系统中的关系,实际上就是二维表,由行和列构成。也可以说关系表是由数据行构成的集合。
关系模型主要由三部分组成:数据结构、关系操作以及完整性约束。
1. 数据结构即关系表,包括基础表、派生表(查询结果)和虚拟表(视图)。
3. 完整性约束用于维护数据的完整性或满足业务约束的需求,包括实体完整性、参照完整性以及用户定义的完整性。
在关系模型中,用于存储数据的逻辑结构被称为关系或表。以下是一个员工信息表的示例,它和Excel表格非常类似,由行和列构成。在不同的场景下,关于同一个概念可能有不同的表述。在此,我们列出了关系数据库中的一些常见概念。关系也称为表,用于表示现实世界中的实体或实体之间的联系。例如,公司的员工、部门和职位都是实体,对应着员工信息表、部门信息表和职位信息表。销售的产品和订单是实体,它们之间存在联系,对应订单明细表。行也称为记录,代表了关系中的单个实体。列也称为字段,表示实体的某个属性。有了关系结构之后,就需要定义基于关系的数据操作。常见的数据操作包括增加、查询、更新以及删除,其中使用最多也最复杂的操作是查询。接下来,为了维护数据的完整性或满足业务需求,关系模型还定义了完整性约束。
关系数据库使用SQL作为访问和操作数据的标准语言。让我们来感受一下SQL语句的特点。例如,查询员工表中月薪大于10000的员工的工号、姓名和月薪,并按照工号进行排序的SQL语句非常简单直观。在以上查询中,SELECT、FROM等称为关键字(也称为子句),表名、列名等内容一般小写;分号表示语句的结束。值得注意的是,SQL语句不区分大小写。SQL中的查询可以完成各种数据操作,例如过滤转换、分组汇总、排序显示等;但它们本质上都是针对表的操作,结果也是表。不仅仅是查询语句,SQL中的插入、更新和删除都是以集合为操作对象的。此外我们还可以通过CREATE TAE语句创建表,然后使用INSERT INTO语句插入数据。虽然通常我们一次插入一条数据,但一条数据也是一个集合,只不过它只有一个元素而已。Oracle不支持一次插入多行数据的语法,可以使用其他插入语句进行插入操作。SQL还支持并集运算如UNION ALL等用于将两个集合组合成一个更大的集合的操作。我们会在后续的内容中详细介绍这些内容。