本章的重点内容包括:
什么是数据库查询
如何使用SELECT语句
利用WHEREB子句为查询添加条件
使用列别名
从其他用户的表里选择数据
本章将介绍数据库查询,主要是SELECT语句的使用。
7.1 什么是查询
查询是使用SELECT语句对数据库进行探究。我们利用查询,根据需要从数据库里以一种可理解的格式提取数据。
7.2 SELECT语句
SELECT语句代表了SQL里的数据查询语言(DQL),是构成数据库查询的基本语句。
SELECT语句绝对是SQL里功能最强大的。FROM子句是一条必要的子句,必须总是与SELECT联合使用。
SELECT语句里有4个关键字(或称为子句)是最有价值的,如下所示:
SELECT
FROM
WHERE
ORDER BY
7.2.1 SELECT语句
简单的SELECT语句如下所示:
SELECT [*|ALL|DISTINCT COLUMN1, COLUMN2]
FROM TABLE [, TABLE2];
在查询里,关键字SELECT后面是字段列表,它们是查询输出的组成部分。星号()表示输出结果里包含表里的全部字段,其详细使用方式请查看相应实现的文档。选项ALL用于显示一列的全部值,包括重复值。选项DISTINCT禁止在输出结果里包含重复的行。选项ALL是默认的操作方式,这意味着它并不在SELECT语句中明确指定。*关键字FROM后面是一个或多个表的名称,用于指定数据的来源。**SELECT语句后面的字段列表中使用逗号进行分隔,FROM子句里的表也是如此。
在SQL语句的列表里,使用逗号分隔各个参数。参数是SQL语句或命令里必需的或可选的值。常见的参数列表包括查询中的字段列表、查询中的表列、插入到表里的数据列表、WHERE子句里的条件。
我们还可以用圆括号把选项DISTINCT和ALL与相应的字段包围在一起。在SQL及其他很多语言里,我们都利用圆括号来提高代码的可读性。
SELECT DISTINCT(PROD_DESC)
FROM CANDY_TBL;
7.2.2 FROM子句
FROM子句必须与SELECT语句联合使用,它是任何查询的必要元素,其作用是告诉数据库从哪些表里获取所需的数据,它可以指定一个或多个表,但必须至少指定一个表。
FROM子句的语法如下所示:
from table1[ , table2]
7.2.3 WHERE子句
查询里的条件指定了要返回满足什么标准的信息。条件的值是TRUE或FALSE,从而限制查询中获取的数据。WHERE子句用于给查询添加条件,从而除去用户不需要的数据。WHERE子句里还可以有多个条件,它们之间以操作符AND或OR连接。
WHERE子句的语法如下所示:
select [all | * | distinct column1, column2]
from table1 [ , table2]
where [ condition1 ] expression1]
[ and | or condition2 | expression2]
7.2.4 ORDER BY子句
我们一般需要让输出以某种方式进行排序,为此可以使用ORDER BY子句,它能够以用户指定的列表格式对查询结果进行排序。ORDER BY子句的默认次序是是升序。(从A到Z,从1到9)
ORDER BY子句的语法
select [all | * | distinct column1, column2]
from table1 [ , table2]
where [ condition1 ] expression1]
[ and | or condition2 | expression2]
ORDER BY column1|integer [ASC | DESC]
其中使用的ASC/DESC选项,它可以在ORDER BY子句中的任意一个字段之后出现。
SQL排序是基于字符的ASCII排序。数字0~9会按其字符值进行排序,并且位于字母A到Z之前。由于数字值在排序时是被当作字符处理的,所以下面这些数字的排序是这样的:1、12、2、255、3。
SQL里存在着一些简化方式。ORDER BY子句里的字段可以缩写为一个整数,这个整数取代了实际的字段名称(排序操作中使用的一个别名),表示字段在关键字SELECT之后列表里的位置。
ORDER BY子句里指定的字段次序决定了排序过程的完成方式。
7.2.5 大小写敏感性
MySQL和Microsoft SQL Server默认是大小写不敏感的。
Oracle默认是大小与敏感的。
在大多数情况下,数据在关系型数据库里似乎都是以大写形式保存的,以便保存数据的一致性。
7.3 简单查询的范例
命令可以在一行输入,或是根据喜好使用软回车。
确保所做的查询有约束条件。
7.3.1 统计表里的记录数量
利用一个简单的查询就可以了解表里的记录数量,或是某个里值的数量。
COUNT函数的语法如下所示:
SELECT COUNT(*)
FROM TABLE_NAME;
如果被统计的字段是NOT NULL(必填字段),那么其值的数量就与表里记录的数量相同。但一般来说,我们使用COUNT(*)来统计表里的记录数量。
如果要统计表中特定列所出现的值的种类,需要在COUNT函数中使用DISTINCT关键字。
7.3.2 从另一个用户表里选择数据
要访问另一个用户的表,必须拥有相应的权限,否则不能进行访问。为了在SELECT语句里访问另一个用户的表,必须在表的名称之前添加规划名或相应的用户名。
7.3.3 使用字段别名
在进行某些查询时,我们使用字段别名来临时命名表的字段,语法如下:
SELECT COLUMN_NAME ALIAS_NAME
FROM TABLE_NAME;
如果要访问的表在数据库里有别名,就可以不必指定表的规划名。别名就是表的另一个名称。
当字段名称在SELECT语句里被重新命名时,其名称实际上并没有被修改,这种改变只在特定的SELECT语句里有效。
7.4 小结
SELECT语句是一种数据查询语言(DQL)命令,用于在SQL里创建查询。每个SELECT语句里都必须包含FROM子句。另外,利用WHERE子句可以为查询设置条件,利用ORDER BY子句可以为数据进行排序。