下列关于数据库对象的描述错误的是(对象数据库有哪些)

今天我们就和小伙伴们一起聊聊对象数据库。希望以下意见能帮助您找到您想要的百科全书。

计算机领域有很多很棒的设计理念和想法,比如:

下列关于数据库对象的描述错误的是(对象数据库有哪些)

在Unix中,一切皆文件。在面向对象的编程语言中,一切都是对象。

关系数据库也有自己的设计理念:在SQL中,一切都是关系的。

关系模型

关系模型由E.F.Codd博士于1970年提出,基于集合论中的关系概念;现实世界中的实体对象以及它们之间的联系都是通过关系来表示的。我们在数据库系统中看到的关系是一个二维表(Table),它由行(Row)和列(Column)组成。因此,也可以说关系表是数据行的集合。

关系模型由三部分组成:数据结构、关系操作和完整性约束。

关系模型中的数据结构是关系表,包括基表、派生表(查询结果)和虚拟表(视图)。常用的关系操作包括添加、删除、修改和查询(CRUD),使用SQL语言。其中查询操作最为复杂,包括选择、投影、并集、交集、异常、笛卡尔积等。完整性约束用于维护数据完整性或满足业务约束,包括实体完整性(主键约束)、参照完整性(外键约束)和用户定义完整性(非空约束、唯一约束、检查约束和默认值)。

数据结构

在关系模型中,用于存储数据的逻辑结构称为关系;对于用户来说,关系就是一个二维表。

下面是一个员工信息表,它与Excel表格非常相似,由行和列组成。

在不同的场景下,你可能会听到对同一个概念的不同看法。这里我们列出了关系数据库中的一些常见概念:

关系,也称为表,用于表示现实世界中的实体(Entities)或实体之间的关系(Relationship)。例如,公司的员工、部门、职位都是实体,分别对应员工信息表、部门信息表、职位信息表;销售的产品和订单都是实体,它们之间有联系,对应订单明细表。行,也称为记录,表示关系中的单个实体。上图中,作业号为4的数据行存储的是“诸葛亮”的信息。关系(表)可以被视为行的集合。列,也称为字段,表示实体的属性。上图中的第二列包含员工姓名。表中的每一列都有相应的数据类型。常见的数据类型包括字符类型、数值类型、日期时间类型等。

有了关系结构之后,就需要根据关系来定义数据操作。

操作设定

常见的数据操作包括创建、检索、更新和删除,或统称为CRUD。

其中,最常用、最复杂的操作是查询,具体包括选择、投影、并集、交集、例外和笛卡尔积。产品)等。我们将介绍如何使用SQL语句完成各种数据操作。

为了维护数据完整性或满足业务需求,关系模型还定义了完整性约束。

完整性约束

关系模型中定义了三种完整性约束:实体完整性、参照完整性和用户定义完整性。

实体完整性是指表的主键字段不能为空。现实中的每个实体都是唯一的,例如每个人都有一个唯一的ID号;在关系数据库中,这个唯一标识每一行数据的字段称为主键(PrimaryKey),主键字段不能为空。每个表可以有且只有一个主键。引用完整性是指外键引用的完整性。外键代表两个表之间的关系,例如某个员工属于某个部门;因此,员工表中有一个部门编号字段,它引用了部门表中的部门编号字段。对于外键引用,引用的数据必须存在,员工不能属于不存在的部门;删除部门之前,还需要对该部门内的员工进行相应的处理。用户定义的完整性是指根据业务需求定制的约束。非空约束(NOTNULL)保证对应的字段不会有空值,例如员工必须有姓名;使用唯一约束(UNIQUE)来保证字段中的值不会重复,并且每个员工的电子邮件地址必须是唯一的;检查约束(CHECK)可以定义更多的业务规则。例如工资必须大于0、字符必须大写等;默认值(DEFAULT)用于将默认数据插入到字段中。

存储引擎是MySQL中用于管理、访问和修改物理数据的组件。不同的存储引擎提供不同的功能和特性。从MySQL5.5开始,默认使用InnoDB存储引擎,支持事务处理(ACID)、行级锁定、故障恢复、多版本并发控制(MVCC)、外键约束等。

关系数据库使用SQL作为访问和操作数据的标准语言。现在,让我们直观地感受一下SQL语句的特点。

语法特征

SQL是一种声明性编程语言,其语法接近自然语言(英语)。大多数数据库操作都是通过几个简单的英文单词完成的,比如SELECT、INSERT、UPDATE、CREATE、DROP等。下面是一个简单的查询示例:

SELECTemp_id、emp_name、salaryFROM员工WHERE工资ORDERBYemp_id;

查询员工表(employee)中月薪大于的员工,返回工号、姓名和月薪,并按工号排序。可以看到,SQL语句非常简单直观。

查询中的SELECT、FROM等称为关键字(也称为子句),一般为大写字母;表名、列名等内容一般都是小写字母;分号(;)表示语句的结束。SQL语句不区分大小写,但遵循一定的规则可以使代码更容易阅读。

SQL是一种声明性语言。声明性语言的主要思想是告诉计算机它想要什么结果,但没有指定如何去做。此类语言还包括HTML、正则表达式和函数式编程。

收藏导向

对于一条SQL语句来说,它操作的对象是一个集合(表),操作的结果也是一个集合(表)。例如以下查询:

SELECTemp_id、emp_name、salaryFROM员工;

其中employee是一张表,是该语句查询的对象;同时,查询的结果也是一张表。那么,我们可以继续扩展这个查询:

SELECTemp_id,emp_name,salaryFROM(SELECTemp_id,emp_name,salaryFROM员工)dt;

我们将括号中的查询结果(名为dt)作为外部查询的输入值传递;整个语句的最终结果仍然是一个表。

SQL中的查询可以完成各种数据操作,如过滤和转换、分组和汇总、排序和显示等;但本质上都是对表的操作,结果也是表。

不仅仅是查询语句,SQL中的插入、更新和删除都是对集合进行操作。我们来看另一个插入数据的例子:

CREATETABLEt(idINTEGER);--适用于MySQL、SQLServer和PostgreSQLINSERTINTOt(id)VALUES(1),(2),(3);

我们首先使用CREATETABLE语句创建表,然后使用INSERTINTO语句插入数据。在执行插入操作之前,会在内存中创建一个包含3条数据的临时集合(表),然后将该集合插入到目标表中。由于我们通常是一次插入一条数据,所以我们认为是按照数据行插入的;事实上,一条数据也是一个集合,只不过它只有一个元素。

Oracle不支持插入多行数据的语法。您可以使用以下插入语句:

--适用于OracleINSERTINTOt(id)SELECT1FROMDUALUNIONALLSELECT2FROMDUALUNIONALLSELECT3FROMDUAL;

UNIONALL是SQL中的联合操作,用于将两个集合组合成一个更大的集合。此外,SQL还支持交集运算(INTERSECT)、差值运算(EXCEPT)和笛卡尔积。我们将在第18部分介绍这些内容,它们也是对集合的操作。

我们介绍了SQL语言的声明式和面向集合的编程思想。在正式学习编写SQL语句之前,需要做一些准备工作,主要是安装示例数据库。

样本数据库

在学习过程中,我们主要使用一个虚构的公司数据模型。此示例数据库包含3个表:员工表(employee)、部门表(department)和职位表(job)。以下是它们的结构图,也称为实体关系图:

部门表(department),包括部门编号(dept

id)和部门名称(dept

name)字段,主键是部门编号。该表总共包含6条数据。职位列表(job),包括职位编号(job

id)和职位(职位

title)字段,主键是位置编号。该表总共包含10条数据。员工表(employee),包含员工编号(emp

id)和员工姓名(emp

name)等字段,主键是员工编号、部门编号(dept

id)字段是外键,引用部门表,职位编号(job

id)字段是引用职位表的外键,经理编号(manager)字段是引用员工表本身的外键。该表共包含25条数据。

我们在GitHub上为您提供了示例表和初始数据创建脚本以及安装说明,支持Oracle、MySQL、SQLServer和PostgreSQL。单击链接进行下载。

选择数据库后,复制创建表的脚本并插入数据到左侧窗口,点击“BuildSchema”进行初始化;点击“浏览器”查看表结构;在右侧窗口中输入SQL语句,点击“运行SQL”即可运行并查看结果。该工具提供的数据库不是最新版本,但可以运行大部分示例。

本文中的所有示例均已在以下数据库版本上进行了验证:

Oracle数据库18cMySQL8.0SQLServer2017PostgreSQL12

概括

关系模型中定义了一种简单的数据结构——关系(表),用于存储数据。SQL是关系数据库的通用标准语言。它采用接近自然语言(英语)的语法,以声明的方式进行数据定义、数据操作、访问控制等。对于SQL来说,一切都是关系(表)。

感激涕零的意思解释(感激涕零的意思是)
上一篇 2024-09-12 08:10:08
相逢何必曾相识的下句是什么(相逢何必曾相识这句话什么意思)
下一篇 2024-09-12 08:31:16

相关推荐