搜档网
当前位置:搜档网 › 数据库系统2018版自考

数据库系统2018版自考

数据库系统2018版自考
数据库系统2018版自考

数据库系统原理(复习资料)

第一章数据库系统概述

一、识记:1)数据(Data):是描述事物的符号记录,是指用物理符号记录下来的、可以鉴别的信息。(P27)

2)数据库(DataBase,DB):通俗的被称作存储数据的仓库。

3)数据库管理系统(DBMS):是专门用于建立和管理数据库的一套软件,介于应用程序和操作系统之间。

4)数据库系统(DBS):是指在计算机中引入数据库技术之后的系统。

二、数据管理技术发展阶段:1)人工管理阶段、2)文件系统阶段、3)数据库系统阶段

数据库系统阶段,与人工管理、文件系统管理相比有如下特点:数据集成、数据共享性高、数据冗余度小、数据一致性、数据独立性高P32

三、数据库系统的三级模式结构:是指数据库系统是由模式、外模式和内模式

三级构成(P34)

模式:也称为概念模式或逻辑模式,它是数据库中全体数据的逻辑结构和特征

的描述,是所有用户的公共数据视图;

外模式:也成为子模式或用户模式,它是数据库用户能够看见和使用的局部数

据的逻辑结构和特征的描述,是与某一应用有关的逻辑表示;

内模式:也称储存模式,它是对数据库中数据物理结构和储存方式的描述,是

数据在数据库内部的表示形式;

三级模式结构的两层映像与数据独立性:(1)外模式/模式映像(2)模式/

内模式映像:定义了数据库全局逻辑结构与物理储存之间的对应关系(3)实现概念模式(模式)不受内模式变化影响,正是这两层映像保证了数据库系统

中数据能够具有较高的逻辑独立性和物理独立性,使得数据的定义和描述可以

从应用程序中分离出去,从而简化了数据库应用程序的开发。(P36)

四、数据库系统的运行与应用结构:目前两种,客户/服务器结构、浏览器/服

务器结构

五、数据模型:通常由数据结构、数据操作和数据约束三个要素组成;

数据模型分类:第一类:概念层数据模型,第二类:逻辑层数据模型和物理层

数据模型。

概念层数据模型:是数据抽象级别的最高层,其目的是按用户的观点来对世界

建模,通常用来抽象、表示现实世界的各种事物及其联系;

信息世界设计的基本概念如下:实体、属性、码或键、域、实体性、实体集、

联系;

概念模型表示方法:实体性(矩形表示)、属性(椭圆形表示)、联系(菱形表示)

逻辑层数据模型:逻辑层是数据抽象的中间层,描述数据整体的逻辑结构。包

括层次模型、网状模型、关系模型、面向对象模型;这里给予关系模型的数据库。(P41)

物理层数据模型:其描述数据在储存介质上的组织结构,是逻辑模型的物理实现。

第二章关系数据库

一、关系数据库的基本特征是使用关系数据模型组织数据,这种思想源于数学。

二、关系数据模型:关系模型三个组成要素,关系数据结构、关系操作集合和

关系完整性约束。

以二维表格为例,介绍关系数据库的基本术语:表、关系、列、属性、行、元组、分量、码或键、超码和超键、候选码和候选键、主码和主键、全码和全键、主属性、外码或外键、参照关系和被参照关系、域、数据类型、关系模式、关系数据库。(P44)

四、关系操作集合:常用操作包括查询操作和插入、删除、修改操作两大部分。关系数据语言的分类:关系代数语言、关系演算语言、以及兼两种特点的结

构化查询语言SQL (将在第四章详细讲解);

五、关系代数:是关系操作语言的一种传统表示方式,它是集合代数为基础发

展起来的。操作包括三大要素:操作对象、操作符、操作结果;(IBM 公司研制ISBL的纯代数数据操作语言。)

A:传统的集合运算:是二目运算,具有并、差、交、笛卡尔积 4种运算(P51看书理解)

B:专门的关系运算:不仅涉及行,还涉及列,它可分为一元专门关系操作和二元专门关系操作;其中,一元专门关系操作包括对单个关系进行垂直分解

的投影运算和进行水平分解选择运算;二元专门关系操作则是对两个关系进行

操作,包括连接运算和除运算。

专门的关系运算有:选择、投影、连接、除;

六、关系的完整性约束:有三类完整性约束,实体完整性约束、参照完整性约束、用户定义完整性约束。

关系模型完整性约束的检验:为了维护关系数据库中的数据的完整性,在对

关系数据库执行插入、删除和更新操作时,需要检验是否满足上述三类完整性

约束。(P56 ,看书进行补充)

七、关系数据库的规范化理论:关系模型中可能存在的冗余和异常问题:数据

冗余、更新异常、插入异常、删除异常;

现在人们提出许多种类型的数据依赖,其中最重要的是函数依赖FD,多值

依赖MVD;

八、函数依赖和关键字:(P57)

函数依赖:是指关系中属性间的对应关系。根据不同性质可分完全函数依赖、部分函数依赖、传递函数依赖;

关键字:设R为任意给定关系,U为其所含的全部属性集合,X为U的子集,若有完全函数依赖X→U,则X为R的一个候选关键字。

九、范式与关系规范化过程:关系数据库中的关系需要满足一定的要求,不同

程度的要求称为不同的范式(NF)。满足最低要求的称为第一范式(1NF),这是最基本的范式;在第一范式的基础上进一步满足一些新要求的称为第二范式

(2NF);以此类推,再进一步的范式成为第三范式(3NF)。

第一范式:设定R为任一给定关系,如果R中每个列与行的交点处的取值都是不可再分的基本元素,则R为第一范式。

第二范式:设定R为任一给定关系,若R为1NF,且其所有非主属性都完全函数依赖于候选关键字,则R为第二范式。

第三范式:设定R为任一给定关系,若R为2NF,且其每一个非主属性都不传递函数依赖于候选关键字,则R为第三范式。

BCNF:为了解决3NF有时会出现的插入及删除操作异常等问题,R.F.Boyce 和E.F.Cold提出了第3范式的改进形式BCNF。

第三章数据库设计(P64)

一、数据库设计概述

数据库生命周期:分两个阶段,数据库分析与设计阶段、数据库实现与操作阶段。

数据库设计的目标:满足应用功能需求和良好的数据库性能。

数据库设计的内容:1)数据库结构设计:是针对给定的应用环境进行数据库的模式或子模式设计,包括数据库的概念结构设计、逻辑结构设计或物理结构设计。模式定义并给出各应用程序共享的结构,是静态的。2)数据库行为设计:是确定数据库用户的行为和动作,它们通常是通过应用程序来实现的,由于用户行为会是数据库的内容发生变化,所以行为设计是动态的。

数据库设计的方法:(1)直观设计法;(2)规范设计法:{新奥尔良设计方法,四个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计} {基于E-R模型的数据库设计方法:1976年由P.P.S.Chen提出} {基于第三范式的设计方法}

二、数据库设计的过程:将数据库设计分为这样几个阶段:需求分析阶段;结构设计阶段、其中包括概念结构设计、逻辑结构设计和物理结构设计;行为设计阶段,其包括功能设计、事务设计和程序设计;数据库实施阶段,其包括加载数据库数据和调试运行应用程序;数据库运行和维护阶段。

三、数据库设计的基本步骤:(P67)

需求分析:是数据库设计的起点,一般分为四个步骤,确定数据库范围、分析数据应用过程、收集与分析数据、编写需求分析报告;

编写需求分析报告:

1)数据库的应用功能目标

2)标明不同用户视图范围

3)应用处理过程需求说明

i:数据流程图,其主要反映应用部门原始业务处理的工作流程

ii:任务分类表,其标明不同任务的功能及使用情况

iii:数据操作特征表,标明任务和数据间的联系及不同数据的不同操作特征与执行频率

iv:操作过程说明书,其根据数据流程图、任务分类表和各类原始资料

4)数据字典(DD),是数据库系统中存储三级结构定义的数据库,通常指的是数据库系统中各类数据详细描述的集合。

5)数据量:根据数据分类表中的静态数据量和操作特征表中的动态数据量,进行统计计算,求出数据总量。

6)数据约束

四、概念结构设计

设计任务是在需求分析报告的基础上,按照特定的方法设计满足应用需求的用户信息结构,该信息结构通常称为概念模型。

五、逻辑结构设计的目标是将概念模型转换为等价的、并为特定DBMS所支

持数据模型的结构。数据库逻辑模型一般由层次、网状、关系数据模型表示。(P71)

(1)逻辑结构设计的输入与输出信息

(2)逻辑结构设计的步骤

六、物理设计

是指对于一个给定的数据库逻辑结构,研究并构造物理结构的过程,其

具体任务主要是确定数据库在存储设备上的存储结构及存取方法,因DBMS的不同还可能包括建立索引和聚焦,以及物理块大小、缓冲区个数和大小、数据压

缩的选择等。

六、数据库实施

实施阶段主要包括:加载数据、应用程序设计和数据库试运行。(P72)

七、数据库运行和维护

系统维护中最困难的工作是数据库重组和重构。重组适当空间利用率和存取效率下降时进行的,它并不改变数据库的逻辑结构和物理结构,只是利用DBMS提供的设施调整数据库中的数据的存储位置。重构是指部分修改数据库的逻辑结构或物理结构。

第三节关系数据库设计方法

一、关系数据库:是一类采用关系模型作为逻辑数据模型的数据库系统,它的

设计过程遵从数据库设计基本步骤:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库的运行和维护。

二、关系数据库设计过程与各级模式:在逻辑设计阶段采用E-R图转换成具体

数据库产品支持的关系数据模型,形成数据库逻辑模式,然后根据用户处理的

要求、安全性的考虑,在基本表的基础上再建立必要的视图,形成数据的外模式;在物理结构的设计阶段,根据关系数据库管理系统的特点和处理的需要,

进行物理存储安排、建立索引,形成数据库内模式,关系数据库各级模式如图:

二、概念结构设计方法:通常采用自顶向下法,通过两个步骤完成概念设计,

即首先建立局部信息结构,然后将局部信息结构合成为全局信息结构并优化。

1、E-R图的表示方法i)实体性,用矩形表示;ii)属性,用椭圆形表

示;iii)联系,用菱形表示。

2、两个实体型之间的联系:①一对一联系(1:1);②一对多联系(1:N)

③多对多联系(M:N)

3、两个以上的实体型之间的联系:(P75)也存在一对一;一对多;多对

多;

4、单个实体型内的联系:同一个实体集内各实体之间也可以存在一对一,

一对多,多对多的联系。

5、局部信息结构设计:根据需求分析报告中标明的不同用户视图范围所建

立的满足该范围内用户需求的信息结构称为局部信息结构。局部信息结构

设计步骤如下:(P77看实例演示)

(1)确定局部范围(2)选择实体(3)选择实体的关键字属性(4)确定实体间联系(5)确定实体的属性

6、全局信息结构设计:是将上述产生的所有局部信息结构合并成为一个全

局信息结构。合并过程是一个不断发现和解决冲突的过程,通常,各局

部E-R图之间的冲突主要表现在三个方面:属性冲突、命名冲突、结构冲

突。(P79看具体理解)

(1)属性冲突:属性域冲突和属性取值单位冲突;

(2)命名冲突:同名异义和异名同义;

(3)结构冲突:i)同一对象在一个局部E-R图中作为实体,而在另一个

局部E-R图中作为属性

ii)同一个实体在不同的E-R图中属性个数和类型不同

iii)实体之间的联系在不同的E-R图中是不同的类型

三、逻辑结构设计方法

逻辑结构设计任务是把概念结构设计产生的概念模型转换为具体的DBMS所支持的逻辑数据模型,也就是导出特定的DBMS可以处理的数据库逻辑结构(数据库的模式和外模式),这些模式在功能、性能、完整性和一致性约束方面满

足应用要求。那么在关系数据库设计中,逻辑结构设计的任务就是把概念结构

设计阶段已设计好的E-R图转换为关系数据库管理系统所支持的关系模型,通

常包括以下三项工作:

1.E-R图向关系模型的转换

2.数据模型的优化

3.设计用户子模式

四、物理设计方法(P81看实例讲解)

物理设计的主要任务是通过对关系建立索引和聚集来实现与应用相关数据的

逻辑连接和物理聚集,以改善对数据库的存取效率。

1.建立索引(通常有动态和静态两种)

2.建立聚集(聚集是将相关数据集中存放的物理存储技术,借以提高I/O

的数据命中率而改善存取速度,其功能由具体的DBMS所提供)数据聚集结构的一种有效方式--块结构方式。

第四章 SQL与关系数据库基本操作

关系数据库各种基本操作的SQL语句,包括数据定义、数据更新、数据查询、视图使用。

一、SQL概述:

SQL是1974年由Boyce和Chamberlin提出;

SQL的特点:1)SQL不是某个特定的数据库供应商专有的语言。几乎所有重要

的关系数据库管理系统都支持SQL,所以掌握SQL可以帮助用户与几乎所有的

关系数据库进行交互。

2)SQL简单易学。它的语句全都是由具有很强的描述性的英语单词所组成,而

且这些单词的数目不多。

3)SQL尽管看上去很简单,但它实际上是一种强有力的语言,灵活使用其语言

元素,可以进行非常复杂和高级的数据库操作。

SQL的组成:SQL是集数据查询、数据定义、数据操纵、数据控制四大功能为

一体。核心包括以下几个部分:

1.数据定义语言(DDL):数据定义语言包括主要SQL语句有以下三个:

1)CREATE:用于创建数据库或数据库对象

2)ALTER:用于对数据库或数据库对象进行修改

3)DROP:用于删除数据库或数据库对象

2.数据操纵语言(DML):主要用于操纵数据库中各种对象,特别是检索和修改数据。主要包括语句如下:

1)SELECT:用于从表或视图中检索数据,其是数据库中使用最为频繁

的SQL语句之一。

2)INSERT:用于将数据插入到表或视图中。

3)UPDATE:用于修改表或视图中的数据,其即可修改表或视图中一行

数据,也可同时修改多行或全部数据。

4)DELETE:用于从表和视图中删除数据,其中可根据条件删除指定的

数据。

3.数据控制语言(DCL):主要用于安全管理,例如确定哪些用户可以查看

或修改数据库中的数据,主要包括以下SQL语句:

1)GRANT:用于授予权限,可把语句许可或对象许可的权限授予其他用户

和角色。

2)REVOKE:用于收回权限,其功能与GRANT相反,但不影响该用户或角色从其他角色中作为成员继承许可权限。

4.嵌入式和动态SQL规则:规则规定了SQL语句在高级程序设计语言中使

用的规范方法,以便适应较为复杂的应用。

5.SQL调用和会话规则:SQL调用包括SQL例程和调用规则,以便提高SQL

的灵活性、有效性、共享性以及使用SQL具有更多的高级语言的特征。SQL会

话规则则可使应用程序连接到多个SQL服务器中的某个,并与之交互。

二、MySQL预备知识

目前,使用MySQL数据库管理系统构建各种信息管理系统或互联网网站的应用

环境主要有如下构架方式:

1)LAMP,Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库管理系统,PHP、Perl或Python语言作为服务器端脚本解释器。

2)WAMP,Windows作为操作系统,Apache作为Web服务器,MySQL作为数据库管理系统,PHP、Perl或Python语言作为服务器端脚本解释器。

三、MySQL中的SQL(P87)

MySQL作为一种关系型数据库管理系统,遵循SQL标准,提供了对数据定义语

言DDL,数据操纵语言DML、数据控制语言DCL、并且同样支持关系数据库的三

级模式结构。如图

MySQL在SQL标准的基础上增加了部分扩展语言要素:包括常量、变量、运算符、表达式、函数、流程控制语句和注释。

1)常量:是指在程序运行过程中值不变的量,也称为字面值或标量值。常量的使用格式取决于值的数据类型,可分为字符串常量、数值常量、十六进制常量、时间日期常量、位字段值、布尔值和NULL值。

2)变量:用于临时存储数据,变量有名字和数据类型两个属性。其中变量的名字用于标识变量,变量的数据类型用于确定变量中存储数值的格式和可执行的

运算。在MySQL中,变量分为用户变量和系统变量,在使用时,用户变量前常添一个符号“@”,用于将其和列名区分开;而大多数系统变量应用于其他SQL语句时,必须在系统变量名前加两个“@”

3)运算符(P88)

4)表达式:表达式是常量、变量、列名、复杂计算、运算符、函数的集合。

5)内置函数:

●数学函数,例如ABS()函数、SORT()函数

●聚合函数,例如COUNT()函数

●字符串函数,例如ASCII()函数、CHAR()函数

●日期和时间函数,例如NOW()函数、YEAR()函数

●加密函数,例如ENCODE()函数、ENCRYPT()函数

●控制流程函数,例如IF()函数、IFNULL函数

●格式化函数,例如FORMAT()函数

●类型转换函数,例如CAST()函数

●系统信息函数,例如USER()函数、VERSION()函数

四、数据定义

SQL的数据定义功能包括数据库模式定义、表定义、索引定义

和视图定义。(P89)

㈠数据库模式定义:包含数据库的创建、选择、修改、删除、查看等操作。

1.创建数据库,可以使用CREATE DATABASE或CREATE SCHEMA。

2.选择数据库,使用USE语句,指定某个数据库为当前数据库之后,才能对该数据库及其存储的数据对象进行各种操作。

3.修改数据库,可以使用ALTER DATABASE或ALTER SCHEMA,来修改

已被创建的数据库的相关参数。

4.删除数据库,可以使用DROP DATABASE或DROP SCHEMA。

5.查看数据库,可以使用SHOW DATABASE或SHOW SCHEMA。可选项“LIKE”关键字用于匹配指定的数据库名称,可选项“WHERE”从句用于指定数据库名称查询范围的条件。

㈡表定义:只有成功创建数据库之后,才能在数据库中创建数据表,数据表

是关系数据库中最重要、最基本的数据对象,也是数据库存储的基本单位。

1.创建表,MySQL使用CREATE TABLE语句创建表。该语法主要由表的创建

定义、表选项、和分区选项等内容构成。

1)临时表与持久表,带TEMPORARY为临时表,不带为持久表

2)数据类型,主要有数值类型、布尔型、日期和时间类型、字符串类型、空间数据类型等。

3)关键字AUTO_INCREMENT

4)指定默认值

5)NULL值,指没有值或缺值。

6)主键,通过PRIMARY KEY关键字来指定,主键值必须唯一,且一定要为NOT NULL。

2.更新表,为了实现数据库表的规范化设计的目的,可以使用ALTER TABLE语句来更改原有表的结构,有以下几个子句:

1)ADD[COLUMN]子句,增加新列,也可增加多个列。也可在ALTER TABLE下

ADDPRIMARY KEY、ADD INDEX和ADDFOREIGN KEY为原表添加一个主键、索引和外键。

2)CHANGE[COLUMN]子句,修改制定列的名称和数据类型,且在ALTER TABLE 下同时放入多个CHANGE[COLUMN]子句。

3)ALTER[COLUMN]子句,修改或删除指定列的默认值。

4)MODIFY[COLUMN]子句,与ALTER[COLUMN]不同的是,只是修改列的数据类型,不会干涉列名。

5)DROP[COLUMN]子句,用于卸除多余的列,一旦卸除列,原本存储在该列的一切内容都会跟着被卸除。

6)RENAME[COLUMN]子句,为表重新赋予一个表名。

3.重命名表,除了前面ALTER TABLE 语句,也可以直接用RENAME TABLE进行更改表的名字。

4.删除表,通过DROP TABLE语句实现,但操作者必须有该命令权限,删除表时,数据和分区信息均会被删除,但权限不会删除。

5.查看表,1)显示表的名称,使用SHOW TABLES语句;

2)显示表的结构,使用SHOW COLUMNS语句。

五、索引定义

索引,就是DBMS根据表中的一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表,因而索引实质上是一张描述索引列值与原表中记录行之间一一对应关系的有序表。

索引是提高数据文件访问效率的有效方法,也存在弊端:

1)索引是以文件的形式存储的,DBMS会将一个表的所有索引保存在同一个索引文件中,索引文件需要占用磁盘空间;

2)索引在提高查询速度的同时,会降低更新表的速度。

索引在逻辑上通常包含以下几类:

1)普通索引(INDEX),通常使用关键字INDEX或KEY

2)唯一性索引(UNIQUE),索引列的所有值都只能出现一次

3)主键(PRIMARY KEY),主键是一种唯一性索引,创建主键时,必须指定关键字PRIMARY KEY,且不能有空值。

实际使用中,索引通常索引通常被创建程单列索引和组合索引。

1.索引的创建

1.使用CREATE INDEX语句创建索引,但该句不能创建主键。语法格式:CREATE[UNIQUE]INDEX index_name

ON tbl_name(index_col_name... )

关键字:ASC(升序)和DESC(降序),默认时为ASC

2.使用CREATE TABLE语句创建索引,索引可以在创建表的同时被创建。

3.使用ALTER TABLE语句创建索引,在使用ALTER TABLE语句修改表的同时,可以向已有的表中添加索引。(语法项P100)

4.索引的查看,可以使用SHOW INDEX语句

5.索引的删除,可以使用DROP INDEX或ALTER INDEX语句来删除。

七、数据更新(P102)

数据更新在SQL中三类相应语句,插入数据(INSERT)、修改数据(UPDATE)、删除数据(DELETE)

㈠插入数据_(详细看书)

1.使用INSERT...VALUES语句插入单行或多行元组数据

语法格式:INSERT[INTO]tbl_name[(col_name,…)]

{VALUES|VALUE}({expr|DEFAULT},…),(…),…

语法中:1)”tbl_name”指定欲被插入数据的表名

2)”col_name”指定需要插入数据的列名列表

3)通过关键字”VALUES”或”VALUE”引导的子句,其包含各列需要插入的数据单.

I)”expr”表示常量、变量或一个表达式,也可以是空值NULL,其

值的数据类型要与列的数据类型一致。

II)关键字“DEFAULT”即用于指定此列值为该列的默认值,前提是该

列之前已经明确指定了默认值,否则插入语句会出错。

2.使用INSERT...SET语句插入部分列值数据

可以使用INSERT...SET语句直接给表中的某(些)列指定对应的列值,既要插入数据的列名在SET子句中指定,这种方式更灵活,语法格式如下: INSERT[INTO]tbl_name

SET col_name={expr|DEFAULT},…

3.使用INSERT...SELECT语句插入子查询数据

子查询不仅可以嵌套在SELECT语句中,用于构造父查询的条件,也可以嵌套在INSERT语句中,用于生成要批量插入的数据。语法格式:

INSERT[INTO]tbl_name[(col_name,…)]

SELECT …

㈡删除数据

在MySQL中,可以使用DELETE语句删除表中的一行或多行数据,语法格式如下:

DELETE FROM tbl_name

[WHERE where_condition]

[ORDER BY…]

[LIMIT row_count]

㈢修改数据

可以使用UPDATE语句来修改更新一个表中的数据,实现对表中行的列数据进行修改,语法格式如下:

UPDATE tbl_name

SET col_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]…

[WHERE where_condition]

[ORDER BY…]

[LIMIT row_count]

八、数据查询(P105)

数据查询是SQL语言的核心功能,其用途是从数据库的一张或多张表中检索出

满足条件的数据信息。

SQL是提供SELECT语句进行数据查询,该功能强大、使用灵活,数学理论

基础是关系数据模型中对表对象的一组关系运算,既选择、投影和连接。

㈠SELECT语句

使用SELECT可以在需要时从数据库中快捷方便的检索、统计或输出数据。该语句的执行过程是从数据库中选取匹配的特定行和列,并将这些数据组织成

一个结果集,然后以一张临时表的形式返回。SELECT语法格式如下:SELECT

[ALL|DISTINCT|DISTINCTROW]

seiect_expr[,select_expr…]

FROM table_references

[WHERE where_condition]

[GROUP BY{col_name|expr|position}

[ASC|DESC],…[WITH ROLLUP]]

[HAVING where_condition]

[ORDER BY{col_name|expr|position}

[ASC|DESC],…]

[LIMIT{[offset,]row_count|row_count OFFSET offset}]

此语法结构中,SELECT子句用于指定输出字段;FROM子句用于指定数据的来源;WHERE子句用于指定数据的选择条件;ORDER BY子句用于对查询的结果进行排序。在这些子句中,SELECT子句和FROM子句是必需的,其他子句都是可选的,并且在SELECT语句的使用中,所有被添加选用的子句必须依照SELECT语句的

语法格式所罗列的顺序来写。

此外,在SELECT语句的语法结构中,三个关键字“ALL”“DISTINCT”“DISTINC TROW”为可选项,用于指定是否应返回结果集中的重复行。

㈡列的选择与指定

在SELECT语句中,语法项“select_expr”主要用于指定需要查询的内容,其指定的方法有以下几种:

1)选择指定的列(P107详细)

选择一个或多个表中的某个或某些列作为SELECT语句的查询列。若查询列有多个,则各列名之间需要用逗号进行分隔,且查询结果返回时,结果集中各

列的次序是依照SELECT语句中指定列的次序给出的;若查询一个表中所有列,则可在SELECT语句指定列的位置上直接使用星号“*”通配符,而不必逐个列

出所有列名,此时结果集中各列的次序一般是这些列在表定义中出现的次序。

另外,列名的指定可以采用直接给出该列的名称的方式,也可以使用完全限定

的列名方式,既“tbl_name.col_name”

2)定义并使用列的别名

在系统输出查询结果集中某些列或所有列的名称时,若希望这些列的名称

显示为自定义的列名,而非原表中的列名,则可以在SELECT语句中添加AS子

句到指定列名之后,以此来修改查询结果集中列的别名。其具体使用方法是将SELECT语句的语法项“select_expr”指定如下语法格式:

column_name[AS]column_alias

3)替换查询结果集中的数据

在对表进行查询时,若希望得到对某些列的查询分析结果,而不是由查询

得到的原始具体数据,则可以在SELECT语句中替换这些列,其中需要用到CASE表达式。具体使用方法是可将SELECT语句的语法项“select_expr”指定

为如下语法格式:

CASE

WHEN 条件1THEN表达式1

WHEN 条件2THEN表达式2

ELSE表达式

END[AS]column_alias

4)计算列值

使用SELECT语句进行查询时,在结果集中可以输出对列值计算后的值,其具体使用方法是将SELECT语句的语法项“select_expr”指定为对应列参与计算的

表达式。

5)聚合函数

SELECT语句的语法项“select_expr”也可以指定为聚合函数。聚合函数通常

是数据库系统中一类系统内置函数,常用于对一组值进行计算,然后返回单个值。(P109)

聚合函数表:

㈢FROM子句与多表连接查询

SELECT语句的查询对象是由FROM子句指定的,其可根据用户的查询需要

实现单表或多表查询。

多表连接查询是关系数据库中最主要的查询,其连接方式主要包括交叉连接、内连接、外连接。

1)交叉连接,又称笛卡尔积。它是通过FROM子句中使用关键字“CROSS JOIN”来连接两张表,从而实现一张表的每一行和另一张表的每一行的笛卡尔乘积。

在FROM子句也可以省略关键字CROSS JOIN,而使用逗号分隔交叉联接的两张表。

2)内连接,是一种最常用的连接类型。它是通过在查询中设置连接条件的方

I)等值连接

II)非等值连接

III)自连接

3)外连接,内连接是在交叉连接的结果集上返回只满足条件的记录,但有时也会存在输出那些不满足连接条件的元组信息的查询需求。这就需要外连接来。

外连接首先将连接的两张表分为基表和参考表,根据连接表的顺序分左外连接和右外连接。(P111)

I)左外连接,使用语法格式与内连接大致相同,区别仅在于它在FROM子句中使用“LEFT OUTER JOIN”来连接两张表。

II)右外连接,右表为基表。

㈣WHERE子句与条件查询

在SELECT语句中,可以使用WHERE子句指定过滤条件,从FROM子句中间结果中选取适当的数据行,实现数据过滤。WHERE子句中设置过滤条件常用几个方法:(P112)

1)比较运算,用于比较两个表达式的值。比较运算符如下:

2)判定范围

I) BETWEEN…AND,当查询的过滤条件被限定在值的某个范围时,可以使用BETWEEN。

II)IN,可以指定一个值的枚举表。

3)判定空值,判定一个表达式是否为空值,使用关键字“IS NULL”实现

4)子查询,可以使用SELECT语句创建子查询。MYSQL中区分如下四类:

I)表子查询

II)行子查询

III)列子查询

相关主题