GBase 8s SQL 指南:教程———3编写SELECT语句

3编写SELECT语句

SELECT语句是最重要且最复杂的SQL语句。可使用它和SQL语句INSERT、 UPDATE和DELETE操纵数据。可以使用SELECT语句从数据库检索数据。将它用作 INSERT语句的一部分来生成新行或将它作为UPDATE语句的一部分来更新信息。

SELECT语句是查询数据库中信息的主要方法。它是检索程序、报告、表单或电子表格中 的数据的关键。可以将SELECT语句与查询工具DB-Access配合使用或在应用程序中嵌入 SELECT 语句。

本章介绍了使用SELECT语句查询和检索关系数据库数据的基本方法。本章讨论如何调整 语句以从一个或多个表中选择信息行和列,如何在SELECT语句中包含表达式和函数以 及如何创建数据库表之间的各种连接条件。SELECT语句的语法和使用方法在GBase 8s SQL指南:语法中有详细描述。

本出版物中的大部分示例来自stores_demo数据库中的各表,该数据库随GBase 8s SQL API 或数据库实用程序的软件提供。为了简便起见,示例只显示了每个SELECT语句检索的数 据的一部分。有关演示数据库的结构和内容的信息,请参阅《GBase 8s SQL参考指南》。 为了着重强调,虽然SQL不区分大小写,但是在示例中用大写字母显示关键字。

3.1介绍SELECT语句

SELECT语句允许您查看关系数据库中的数据的子句构成。这些子句允许您从一个或多个 表或视图中选择列和行、指定一个或多个条件、对数据进行排序和总结以及将选择的数据 放置在临时表中。

本章介绍了如何使用五个SELECT语句子句。如果包含全部五个子句,那么它们必须按照 下列顺序岀现在SELECT语句中:

Projection 子句
FROM子句
WHERE 子句
ORDER BY 子句
INTO TEMP 子句
只有Projection子句和FROM子句是必需的。这两个子句构成每个数据库查询的基础, 原因是它们指定要检索的列值,以及包含这些列的表。使用以下列表中的一个或多个其它 子句:

•添加WHERE子句以选择特定行或创建连接条件。

添加ORDER BY主键以更改生成数据的顺序。
添加INTO TEMP子句以将结果保存为表以供进一步查询。
还有两个SELECT语句子句GROUP BY和HAVING,使您可以执行更复杂的数据检索。 编写高级SELECT语句中对它们进行了描述。另一个子句INTO指定要从应用程序中的 SELECT语句中接收数据的程序或主变量。关于使用SELECT语句的完整语法和规则在 GBase 8s SQL指南:语法中有所描述。

SELECT语句的输出
虽然在所有GBase 8s产品中语法相同,但是结果输出的格式和显示取决于应用程序。本章 和编写高级SELECT语句中的示例如同您在DB-Access中使用“交互式查询语言”选项 时那样显示SELECT语句及输出。

大对象数据类型的输出

当发出包含大对象的SELECT语句时,DB-Access按如下所示显示结果:

对于TEXT列或CLOB列,显示列的内容。
对于BYTE列,显示词<BYTE value〉而不是实际值。
对于BLOB列,显示词<SBlob data>而不是实际值。
用户定义的数据类型的输出

DB-Access使用特殊约定来显示包含复杂或不透明数据类型的列的输出。

非缺省代码集的输出

可以发出查询NCHAR列而不是CHAR列,或者NVARCHAR列而不是VARCHAR列 的SELECT语句。

一些基本概念
SELECT语句不同于INSERT、UPDATE和DELETE语句,它不修改数据库中的数据。 一次只能有一个用户修改数据,而多个用户可同时查询或选择数据。有关修改数据的语句 的更多信息,请参阅修改数据。INSERT、UPDATE和DELETE语句的语法描述位于

《GBase 8s SQL指南:语法》中。

在关系数据库中,列是包含岀现在表中的每一行中的特定信息类型的数据元素。行是在数 据库表中的所有列上有关单个实体的信息的一组相关项。

可以从数据库表、系统目录表(包含有关数据库的信息的特殊表)、或视图(创建来包含 一组定制数据的虚拟表)中选择列和行。有关系统目录表的信息在GBase 8s SQL参考指 南中有所描述。

特权

在查询数据之前,确保您对数据库具有Connect特权和表的Select特权。通常这些特权授 予所有用户。在GBase 8s SQL指南:语法的GRANT和REVOKE语句中描述了数据库 访问权。

关系操作

关系操作涉及处理一个或多个表或者关系以产生另一个表,三种关系操作为选择、投影和 连接。本章包括选择、投影和连接操作的一些示例。

选择和投影

在关系术语中,选择被定义为取得满足特定条件的单个表的行的水平子集。此类SELECT 语句返回表中的某些行和所有列。选择是通过SELECT语句的WHERE子句实现的,如 下图所示:

图:查询

SELECT * FROM customer WHERE state = 'NJ';

该结果包含的列数与customer表相同,但只是后者的行的子集。在此示例中,DB-Access显 示单独行上来自每列的数据。

图:查询结果

customejnum 119

fname

Bob

lname

Shorter

company

The Triathletes Club

address1

2405 Kings Highway

address2

city

Cherry Hill

state

NJ

zipcode

08002

phone

609-663-6079

customejnum 122

fname

Cathy

lname

O'Brian

company

The Sporting Life

address1

543d Nassau

address2

city

Princeton

state

NJ

zipcode

08540

phone

609-342-0054

在关系术语中,投影被定义为从保留唯一行的单个表的列中获取垂直子集。此类S ELECT语 句返回表中的某些行和某些列。

投影是通过SELECT语句的Projection子句中的投影列表实现的。如下图所示。

图:查询

SELECT city, state, zipcode FROM customer;

此结果包含的列数与customer表相同,但只是投影表中列的子集。因为只从每行中选择一 小部分的数据,所以DB-Access能够在一行上显示行的所有数据。

图:查询结果

city state zipcode

Sunnyvale

CA

94086

San Francisco

CA

94117

Palo Alto

CA

94303

Redwood City

CA

94026

Los Altos

CA

94022

Mountain View

CA

94063

Palo Alto

CA

94304

Redwood City

CA

94063

Sunnyvale

CA

94086

Redwood City

CA

94062

Sunnyvale

CA

94085

Oakland

CA

94609

Cherry Hill

NJ

08002

Phoenix

AZ

85016

Wilmington

DE

19898

Princeton

NJ

08540

Jacksonville

FL

32256

Bartlesville

OK

74006

最常见的SELECT语句都同时使用选择和投影。此类查询返回表的某些行和某些列。如下 图所示。

图查询

SELECT UNIQUE city, state, zipcode

FROM customer

WHERE state = 'NJ';

图6包含customer表的列的子集和行的子集。

图:查询结果

city state zipcode

Cherry Hill NJ 08002

Princeton NJ 08540

连接

当两个或多个表被同一列或多个列连接时发生连接,它创建新的结果表。下图显示了一个 查询,该查询使用items和stock表的子集来说明连接的概念。
————————————————
版权声明:本文为CSDN博主「aisirea」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/aisirea/article/details/122999409

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值