
4.1 SELECT语句的语法
查询数据是数据库操作中常用的操作,通过对数据库的查询,用户可以从数据库中获取需要的数据。数据库中可能包含多个表,表中可能包含多条记录。Oracle数据库中使用SELECT语句查询数据,既可以用来判断表达式,也可以从一个或多个表中查询数据。
SELECT [ ALL | DISTINCT ] select_list FROM <tablename1>, <tablename2>[, …] [WHERE <search_condition>] [GROUP BY <group_by_expression> [HAVING<search_condition>]] [ORDER BY <ordery_by_expression>[ASC | DESC]]
在上述语法中,中括号([])中的内容是可选的,主要参数的说明如下。
(1)SELECT子句:SELECT子句之后可以使用“*”将所有列(即字段)的内容全部查询出来,或者查询指定的数据列。
(2)ALL|DISTINCT:用来标识在查询结果集中对相同行的处理方式。关键字ALL表示返回查询结果集的所有行,其中包括重复行;关键字DISTINCT表示如果结果集中有重复行,那么只显示一行,默认值为ALL。
(3)select_list:表示需要查询的字段列表。如果返回多列,列名之间用“, ”隔开;如果需要返回所有列的数据信息,则可以用“*”表示。
(4)FROM子句:用于指明要查询的数据表。
(5)WHERE子句:用来指定限定返回行的搜索条件。
(6)GROUP BY子句:用来指定查询结果的分组条件。
(7)HAVING子句:该子句与GROUP BY子句组合使用,用来对分组的结果进一步限定搜索条件。
(8)ORDER BY子句:用来指定结果集的排序方式。
(9)ASC|DESC:指定排序方式。ASC表示升序排列,默认值;DESC表示降序排列。
注意
在SELECT语句中FROM、WHERE、GROUP BY和ORDER BY子句必须按照语法中列出的次序依次执行。例如,如果把GROUP BY子句放在ORDER BY子句之后,就会出现语法错误。
在完整的SELECT语句查询中,SELECT子句和FROM子句是必选项。各个子句的执行顺序依次是FROM、WHERE、GROUP BY、HAVING、SELECT以及ORDER BY。另外,在本书编写时会经常用到如上所示的“SELECT子句”、“FROM子句”、“WHERE子句”以及“HAVING子句”等术语,这些都是一些习惯性的称呼,指的是关键字之后的内容。