`
bsr1983
  • 浏览: 1117615 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第五章 SQL语言(一)

阅读更多

5.1 SQL简介

结构化查询语言SQL(Structured Query Language)是介乎于关系代数和元组演算之间的一种语言。

5.1.1 SQL发展史

5.1.2 SQL数据库的体系结构

SQL数据库的体系结构基本上也是三级结构,但术语与传统的关系模型术语不同。在SQL中,关系模式称为“基本表”(Base Table),存储模式称为“存储文件”(Stored File),子模式称为视图(View),元组称为“行”(ROW),属性称为“列”(Column)。

SQL数据库的体系结构要点如下:

(1)一个SQL模式(Schema)是表和约束的集合。

(2)一个表由行集构成,一行是列的序列,每列对应一个数据项。

(3)表有三种类型:基本表、视图和导出表。基本表是实际存储在数据库中的表,视图是由若干基本表或其他视图构成的表的定义,而导出表是执行了查询是产生的表。

(4)一个基本表可以跨一个或多个存储文件,一个存储文件也可以存放一个或多个基本表。每个存储文件与外部存储器上一个物理文件对应。

(5)用户可以用SQL语句对基本表和视图进行查询等操作。在用户看来,两者都是一样的,都是表。

(6)SQL用户可以是应用程序,也可以是终端用户。

5.1.3 SQL的组成

核心SQL主要有四个部分:

(1)数据库定义语言,即SQL DDL,用于定义SQL模式、基本表、视图、索引等结构。

(2)数据操纵语言。即SQL DML。

(3)嵌入式SQL语言的使用规定。

(4)数据控制语言,即SQL DCL。

5.1.4 SQL的特点

5.1.5 SQL的数据定义

5.2.1 SQL模式的创建和撤销

1.SQL模式的创建

在SQL中,一个SQL模式定义为一个基本表的集合。一个SQL模式由模式名和模式所有者的用户名或账号来确定,并包含模式中每一个元素(基本表、视图、索引等)的定义。创建SQL模式,就是定义了一个存储空间。

SQL模式的创建可用CREATE SCHEMA语句定义,其基本句法如下:

CREATE SCHEMA <模式名> AUTHORIZATION <用户名>

2.SQL模式的撤销

当一个SQL模式及其所属的基本表、视图等元素都不需要时,可以用DROP语句撤销这个SQL模式。DROP语句的句法如下

DROP SCHEMA<模式名> [CASCADE|RESTRICT]

其方式有两种:

CASCADE(级联式)方式:执行Drop语句时,把SQL模式及其下属的基本表、视图、索引等索引元素全部撤销。

RESTRICT(约束式)方式:执行DROP语句时,只有当SQL模式中没有任何下属元素时,才能撤销SQL模式,否则拒绝执行DROP语句。

大多数DBMS把“创建SQL模式”按惯例称为“创建数据库”,语句采用“CREATE DATABASE...”和“DROP DATABASE...”

5.2.2 SQL的基本数据类型

SQL允许用户使用“CREATE DOMAIN”语句定义新的域。定义好域以后,就可以像使用基本类型一样,用域名来定义属性的类型。

5.2.3 基本表的创建和撤销

1.基本表的创建

创建基本表,可用CREATE TABLE 语句实现

CREATE TABLE <基本表名>

(<列名,类型>,

...

<完整性约束>,

......)

表中每个列的类型可以是基本数据类型,也可以是用户预先定义的域名。完整性约束主要有三种子句:主键(PRIMARY KEY)、外键子句(FOREIGN KEY)和检查子句(CHECK)。

2.基本表结构的修改

(1)增加新的列用“ALTER ... ADD ...”语句,其句法如下

ALTER TABLE<基本表名> ADD <列名> <类型>

应注意,新增加的列不能定义为“NOT NULL”。基本表在增加一列后,原有元组在新增加的列上的值都被定义为空值(NULL)。

(2)删除原有的列用“ALTER ...DROP...”语句,其句法如下:

ALTER TABLE <基本表名> DROP <列名>[CASCADE|RESTRICT]

此处CASCADE方式表示:在基本表中删除某列时,所有引用到该列的视图和约束也要一起自动地被删除。而RESTRICT方式表示在没有视图或约束引用该属性时,才能在基本表中删除该列,否则拒绝删除操作。

(3)修改原有列的类型、宽度用“ALTER... MODIFY...”语句,其句法如下:

ALTER TABLE <基本表名> MODIFY <列名> <类型>

3.基本表的撤销

撤销语句的句法如下:

DROP TABLE <基本表名>[CASCADE|RESTRICT]

此处CASCADE、RESTRICT的语义同前面句法中的语义一样。

5.2.4 索引的创建和撤销

1.索引的创建

创建索引可用“CREATE INDEX”语句实现。其句法如下:

CREATE <UNIQUE> INDEX<索引名> ON<基本表名>(<列名序列>)

此处关键字UNIQUE表示每个索引值对应惟一的数据记录。

2.索引的撤销

当索引不需要时,可以用“DROP INDEX”语句撤销,其句法如下:

DROP INDEX <索引名>

5.3 SQL的数据查询

5.3.1 SELECT查询语句的基本结构

1.SELECT句型

SELECT A1,...,An

FROM R1,...,Rm

WHERE F

在WHERE子句中

2.SELECT语句的使用技术

SELECT语句使用时有三种写法:连接查询、嵌套查询和带存在量词的嵌套查询。

查询设计多个基本表时用嵌套结构逐次求解层次分明,具有结构程序设计特点,并且嵌套查询的执行效率也比连接查询的笛卡尔积效率高。在嵌套查询中,IN是常用到的谓词,其结构为“元组IN(集合)”,表示元组在集合内。

5.3.2 SELECT 语句完整的结构

1.聚合函数

SQL提供了下列聚合函数:

COUNT(*) 计算元组的个数

COUNT(<列名>) 对一列中的值计算个数

SUM(<列名>) 求某一列的总和(此列的值必须是数值型)

AVG(<列名>) 求某一列值的平均值(此列的值必须是数值型)

MAX(<列名>) 求某一列值的最大值

MIN(<列名>) 求某一列值的最小值

2.SELECT语句完整的句法

SELECT 语句的完整句法如下:

SELECT <目标表的列名或列表达式序列>

FROM <基本表名和(或)视图序列>

[WHERE <行条件表达式>]

[GROUP BY <列名序列>]

[HAVING <组条件表达式>]

[ORDER BY <列名[ASC|DESC]>,...]

句法中[ ]表示该成分可有,也可无。

整个语句的执行过程如下:

(1)读取FROM子句中基本表、视图的数据,执行笛卡尔积操作。

(2)选取满足WHERE子句中给出的条件表达式的元组

(3)按GROUP子句中指定列的值分组,同事提取满足HAVING子句中组条件表达式的那些组。

(4)按SELECT子句中给出的列名或列表达式求值输出。

(5)ORDER子句对输出的目标表进行排序,按附加说明ASC升序排列,或按DESC降序排列。

SELECT语句中,WHERE子句称为“行条件子句”,GROUP子句称为“分组子句”,HAVING子句称为“组条件子句”,ORDER子句称为“排序子句”。

5.3.3 数据查询中的限制和规定

1.SELECT子句中的规定

SELECT子句中用于描述查询输出的表格结构,即输出值的列名或表达式,其形式如下:

SELECT[ALL|DISTINCT] <列名或表达式序列> | *

(1)DISTINCT选项保证重复的行将从结果中去除;而ALL选项是默认的,将保证重复的行留在结果中,一般就不必写出。

(2)星号*是对于在FROM子句中命名表的所有列的简写。

(3)列表达式是对于一个单列求聚合之的表达式

(4)允许表达式中出现包含+、-、*和/以及列名、常数的算术表达式。

2.列和基本表的改名操作

有时,用户也可以要求输出的列名与基本表中列名不一致,可在SELECT子句中用“旧名 AS 新名”形式改名。

3.集合的并、交、差操作

当两个子查询结果的结构完全一致时,可以让这两个子查询执行并、交、差操作。并、交、差的运算符为UNION、INTERECT和EXCEPT。

(SELECT 查询语句1) UNION[ALL] (SELECT 查询语句2)

(SELECT 查询语句1) INTERECT[ALL] (SELECT 查询语句2)

(SELECT 查询语句1) EXCEPT[ALL] (SELECT 查询语句2)

上述操作中不带关键字ALL时,返回结果消除了重复元组;而带ALL时,返回结果中未消除重复元组。

5.3.4 条件表达式中的比较操作

1.算术比较操作

2.字符串的匹配操作

添加表达式中字符串匹配操作符是“LIKE”。在表达式中可使用两个通配符:

百分号(%):与零个或多个字符组成的字符串匹配

下划线(_):与单个字符匹配

为了使字符串中包含特殊字符(即%和_),SQL允许定义转义字符。转义字符紧靠特殊字符并放在它前面,表示该特殊字符将被当成普通字符。在LIKE比较中使用ESCAPE关键字来定义转义符。如果使用反斜线(\)作为转义符,那么:

LIKE'ab\%cd%'ESCAPE'\' 匹配所有以“ab%cd”开头的字符串

LIKE'ab\\%cd%'ESCAPE'\' 匹配所有以“ab\cd”开头的字符串

SQL允许使用NOT LIKE比较运算符搜寻不匹配项。

SQL还允许在字符上使用多种函数,例如连接(“||”)、提取子串、计算字符串长度、大小写转换操作。

3.空值的比较操作

SQL中允许列值为空,空值用保留字NULL表示。

SQL中规定,涉及到+、-、*、/ 的算术表达式中有一个值是空值时,表达式的值也是控制,涉及到空值的比较操作的结果认为是“false”。

在聚合函数中遇到空值时,除了COUNT(*)外,都跳过空值而去处理非空值。

4.集合成员资格比较

SQL提供SELECT语句的嵌套子查询机制。子查询是嵌套在另一个查询中的SELECT语句。

判断元组是否在子查询的结果(即集合)中的操作,称为“集合成员资格比较”。其形式如下:

<元组>[NOT]IN(<集合>)

这里的集合可以是一个SELECT查询语句,或者是元组的集合,但其结构应与前面元组的结构相同。IN操作符表示;如果元组在集合内,那么其逻辑值为true,否则为false。

5.集合成员的算术比较

其形式如下:

<元组>θ ALL | SOME | ANY (<集合>)

这里要求“元组”与集合中“元组”的结构一致。θ是算术比较运算符,“θ ALL操作表示左边那个元组与右边集合中每一个元组满足θ 运算,“θ SOME”操作便是左边那个元素组与右边集合中至少一个元组满足θ 运算。ANYSOME是同义词,早期的SQL标准用ANY,为避免与英语中ANY的意思混淆,后来的标准都改为SOME

在SQL中,不允许对聚合函数进行复合运算,因此不能写成“SELECT MAX(AVG(SCORE))”形式。

6.集合空否的测试

可以用谓词EXISTS来测试一个集合是否为非空,或空。其形式如下:

[NOT]EXISTS(<集合>)

不带NOT的操作,当集合非空时(即至少存在一个元组),其逻辑值为true,否则为false。带NOT的操作,当集合为空时,其值为true,否则为false。

7.集合中重复元组存在否的测试

可以用谓词UNIQUE来测试一个集合里是否有重复元组存在。形式如下:

[NOT]UNIQUE(<集合>)

不带NOT的操作,当集合中不存在重复元组时,其逻辑值为true,否则为false。带NOT的操作,当集合中存在重复元组时,其逻辑值为true,否则为false。

<!--EndFragment-->
分享到:
评论

相关推荐

    SQL数据库第五章作业

    SQL数据库第五章的作业可能涵盖了多个关键概念,包括查询、数据操作、表间关系以及数据库设计原则。以下是对这些核心知识点的详细阐述: 1. **SQL基本查询**:SQL查询是获取数据库中信息的基本方式。这涉及到SELECT...

    Oracle第13章SQL语言基础.pptx

    Oracle第13章SQL语言基础 本资源为Oracle第13章SQL语言基础的教学资料,涵盖了SQL语言的基础知识,包括SQL语言概述、数据查询、数据操纵、事务控制、SQL函数等内容。 SQL语言概述 SQL(Structured Query Language...

    C#语言和SQL Server数据库基础-第5章上机练习.zip

    在本资源"C#语言和SQL Server数据库基础-第5章上机练习.zip"中,我们主要探讨了C#编程语言与SQL Server数据库的基础知识及其在实际应用中的结合。这一章节的上机练习将帮助初学者深入理解这两个核心概念,通过实践来...

    Oracle 数据库应用:第5章 SQL 语言.ppt

    Oracle 数据库应用:第5章 SQL 语言.ppt

    Oracle 11g 第5章 SQL语言基础(DML).ppt

    Oracle 11g SQL语言基础(DML) Oracle 11g 第5章 SQL语言基础(DML).ppt

    C#语言和SQL Server数据库基础第5章.zip

    在本资源包"C#语言和SQL Server数据库基础第5章.zip"中,我们可以深入学习C#编程语言与SQL Server数据库的基础知识。C#是微软公司推出的一种面向对象的、安全的、类型强化的编程语言,广泛应用于Windows平台的开发,...

    第六章 数据库及SQL查询语言

    《第六章 数据库及SQL查询语言》 数据库是存储和管理信息的核心工具,SQL(Structured Query Language)则是访问和操作这些数据库的标准语言。本章将深入探讨数据库的基础知识以及SQL的使用。 6.1 数据库基础知识 ...

    C#语言和SQL Server数据库基础-第8章上机练习.zip

    《C#语言与SQL Server数据库基础-第8章上机练习》 在深入探讨C#语言与SQL Server数据库的基础知识时,我们首先需要理解这两者的核心概念。C#是一种面向对象的编程语言,由微软公司开发,广泛应用于Windows平台上的...

    第3章SQL语言.ppt

    【SQL语言概述】 SQL,全称为Structured Query Language,即结构化查询语言,是1972年由IBM公司为实验型关系数据库管理系统SYSTEM R设计的一种查询语言。起初名为SQUARE,后改为SEQUEL,最终简化为SQL。SQL是关系...

    C#语言和SQL Server数据库基础第7章.zip

    5. **SQL Server基础知识**:了解数据库的概念、表的创建与管理,掌握SQL语言的基本操作,如SELECT查询、INSERT插入、UPDATE更新和DELETE删除记录。 6. **事务处理**:理解SQL Server中的事务概念,如何通过BEGIN ...

    C#语言和SQL Server数据库基础第9章.zip

    它支持标准的SQL语言,包括SELECT、INSERT、UPDATE、DELETE等基本操作,以及更复杂的JOIN、子查询、视图、存储过程等功能。在SQL Server中,我们可以通过创建数据库、表、索引来组织和优化数据。安全性方面,SQL ...

    第四章sql语言基础练习.doc

    SQL 语言基础知识点 SQL 语言是关系数据库管理系统的核心语言,用于完成数据定义、数据操纵、数据控制等核心功能。SQL 语言的核心功能包括 SELECT、CREATE、DROP、ALTER、INSERT、UPDATE、DELETE、GRANT、REVOKE 等...

    第三章-SQL语言练习题和答案.doc

    "SQL语言练习题和答案" 第三章 SQL 语言练习题和答案是关系数据库管理系统中的一种重要语言,用于定义、操作和控制关系数据库中的数据。下面我们将对该语言的基本概念和操作进行详细的解释。 SQL 语言的基本概念 ...

    SQL语言简明讲稿-第一章

    ### SQL语言简明讲稿-第一章 #### 一、SQL简介 结构化查询语言(Structured Query Language),简称SQL,是一种特殊目的的编程语言,主要用于存取数据以及查询、更新和管理关系数据库系统。SQL不仅是一种数据库查询...

    图解SQL数据库语言轻松入门.pptx

    本书第五章介绍了如何使用SQL管理数据库,包括创建、修改和删除表,以及如何维护数据库的完整性和安全性。还讲解了索引的概念、创建和使用方法。 《图解SQL数据库语言轻松入门》是一本非常实用的学习指南,旨在帮助...

    关系数据库与SQL语言ppt课件

    "第2章:SQL语言(3).ppt"至"第2章:SQL语言(5).ppt"可能涵盖了SQL的数据查询、插入、更新和删除操作,即DQL(Data Query Language)、DML(Data Manipulation Language)和DDL(Data Definition Language)。...

    C#语言和SQL Server数据库基础第2章.zip

    2. **SQL语言**:SELECT语句用于查询数据,INSERT用于插入数据,UPDATE用于更新数据,DELETE用于删除数据。还有JOIN操作用于连接不同表的数据。 3. **T-SQL扩展**:存储过程、触发器、函数(内置函数与自定义函数)...

Global site tag (gtag.js) - Google Analytics