2024年6月12日发(作者:)

SQL语法

一、 SQL简单查询

㈠ SELECT语句的语法格式

SELECT语句是用户对数据库提出问题的基础。当创建并执行一个SELECT语句时,

其实就是在“查询”数据库。一个SELECT语句由几个独立的关键字组成,这些关键字被称

为子句,可以使用子句的多种形式来定义SELECT语句,从而获得想要的信息。这些子句

中有些是必需的,而另外一些是可选择的。另外,每个子句都有一个或多个关键字,这些关

键字由必须值和可选值来描述。虽然 SELECT 语句的完整语法较复杂,但是其主要的子句

可归纳如下:

SELECT select_list

[ INTO new_table ]

FROM table_source

[ WHERE search_condition ]

[ GROUP BY group_by_expression ]

[ HAVING search_condition ]

[ ORDER BY order_expression [ ASC | DESC ] ]

SELECT语句中的各子句的功能如下:

 SELECT子句:这是SELECT语句中必须包含的最主要的子句,用户可以使用该子句

指定查询的结果集中想要显示的字段。这些字段可以是从用户所指定的一个表或视

图中提取出来的,也可以是同时从多个表中取出的。同时在SELECT子句中也可以

使用一些函数和公式。

 INTO子句:该子句用于创建新表并将结果行从查询插入到新表中。用户若要执行

带 INTO 子句的 SELECT 语句,必须在目的数据库内具有 CREATE TABLE 权限。

 FROM子句:这是SELECT语句中仅次于SELECT的子句,也是对数据库查询中的必

选项。FROM用来指定SELECT子句中的字段是从哪个表或者视图中取出的。

 WHERE子句:该子句是一个可选项。其功能是用来过滤显示结果。只有符合其<

search_condition >所指定条件的记录才会在结果中显示出来。用户可以使用标准

比较运算符、逻辑运算符和特殊运算符来检验表达式。

 GROUP BY子句:该子句也是一个可选项。如果用户想使用一些统计函数以便得到

一些统计信息。那么便可以使用GROUP BY子句把这些信息分成不同的组。GROUP BY

关键字后面的分组列可以是任何一列或是某些列的一个序列。

 HAVING子句:该子句也是一个可选项。HAVING子句是专门和GROUP BY子句相关的,

用来过滤分组后的信息。和WHERE子句类似。

 ORDER BY子句:该子句也是一个可选项。ORDER BY子句用来指出查询结果按哪个

字段进行排序,其中ASC表示按指定字段升序排序,该项为默认选项。DESC选项

表示按指定的字段降序排序。

㈡ 最简单的SELECT语句

在日常的应用中,最常用到的是对一个表的简单查询,使用SELECT进行简单查询的

语法为:

SELECT [ ALL | DISTINCT ]

[ TOP n [ PERCENT ] ]

< select_list >

< select_list > ::=

{*

1

| { table_name | view_name | table_alias }.*

{ column_name | expression}

[ [ AS ] column_alias ]

| column_alias = expression

} [ ,...n ]

[ FROM { < table_source > }]

语法中各参数含义如下:

 ALL:用于指定在结果集中可以显示重复行。ALL是默认设置。

 DISTINCT:用于指定在结果集中只能显示唯一行。空值被认为相等。

 TOP n [PERCENT]:用于指定只从查询结果集中输出前 n 行。n 是介于 0 和

4294967295 之间的整数。如果还指定了 PERCENT,则只从结果集中输出前百分之 n

行。当使用PERCENT关键字时,n 必须是介于 0 和 100 之间的整数。如果查询包

含 ORDER BY 子句,将输出由 ORDER BY 子句排序的前 n 行(或前百分之 n 行)。

如果查询没有 ORDER BY 子句,行的顺序将任意。

 < select_list >:为结果集选择的列。选择列表是以逗号分隔的一系列表达式。

 table_name:指定在 FROM 子句内返回所有表和视图内的所有列。列名按 FROM 子

句所指定的由表或视图返回,并按它们在表或视图中的顺序返回。

 column_name :是要返回的列名。限定 column_name 以避免二义性引用,当 FROM

子句中的两个表内有包含重复名的列时会出现这种情况。

 expression :是列名、常量、函数以及由运算符连接的列名、常量和函数的任意

组合,或者是子查询。

 column_alias :是查询结果集内替换列名的可选名,也称为别名。column_alias 可

用于 ORDER BY 子句。然而,不能用于 WHERE、GROUP BY 或 HAVING 子句。

1.基本SELECT语句

使用SELECT语句进行数据库查询之前,首先要分析用户的请求,即用户要做些什么?

通过分析用户的请求,要确定用户要查询哪些内容,这些内容可以从哪些数据表中获得。然

后将这些内容逐一替换到SELECT语句的相应位置上。

2.显示特定的字段

在实际的应用中,用户往往只是想查看某些字段的内容,而不是显示表中的所有列的内

容,这时就需要在SELECT子句后加上想要查询的列名。

3.使用DISTINCT关键字

最基本的查询方式会返回从表中搜索到的所有行的记录,而不管数据是否重复。使用

DISTINCT关键字就能够从返回的结果数据集合中删除重复的行,使返回值的结果更加的简

洁。

4.使用TOP、PERCENT关键字

在SQL Server 2000中提供了TOP和PERCENT关键字,用于指定返回前面n行或前百

分之n行的数据。当查询到的数据非常多(如有几万行),而只要对前面的若干条数据进行

浏览时,使用TOP关键字可以大大减少查询所用的时间。

5.操作查询的列名

在SQL Server 2000中提供了在SELECT语句中操作列名的方法。用户可以根据实际的

需要对查询数据的列标题进行修改,或者为没有标题的列指定临时的标题。

对列名进行操作有三种方法,一种是采用符合ANSI规则的标准方法,即在列表达式后

面给出列名。另一种是使用SQL Server 支持的“=”来连接列表达式。第3种是在指定列标

题时,使用AS关键字来连接列表达式和指定的列名。

2