SELECT语句基本结构
SELECT语句可以从数据表中或视图中进行查询,并将查询结果以表格的形式返回,以表格返回的结果称为结果集
SELECT select_list
[INTO new_table]
FROM table_name
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC|DESC]]
参数说明:
- select_list:制定需要查询返回的列。多个列之间使用[,]分隔。也可使用[*]表示返回表中的所有列
- INTO new_table:指定查询的表,也称来源表来源表可能包括基表、视图和连接表。FROM字句还可以包含连接说明,该说明定义了数据库用来在表之间进行导航的特定路径
- WHERE search_condition:限制返回的行的搜索条件
- GROUP BY group_by_expression:根据条件将结果集分组
- HAVING search_condition:指定组或聚合的搜索条件。HAVING子句从中间结果集对行进行筛选,通常与GROUP BY字句一起使用
- [ORDER BY order_expression [ASC|DESC]:定义结果集中的行排列的顺序。order_expression指定组成排序列表的结果集的列。ASC|DESC指定行是按升序还是按降序排序。
- 在SQL Server和MySQL数据库中,SQL代码末尾的[;]可以省略,其他数据库(Oracle)中不能省略
别名的应用
在创建数据表时,一般都会使用英文单词或英文单词的缩写来设置字段名,在查询时列名都会以英文的形式显示,可以使用别名来待敌英文列名,增强阅读性
//使用双引号创建别名
SELECT 列名 "别名" FROM 表名;
//使用单引号创建别名
SELECT 列名 '别名'FROM 表名;
//不适用引号创建别名
SELECT 列名 别名 FROM 表名;
//使用AS关键字创建别名
SELECT 列名 AS "别名" FROM 表名;
当字段为英文时
- 增强阅读性
对多个表查询时出现相同的列名
- 对多个表进行查询时可能会出现相同列命,避免造成误解可用别名区分
为计算结果设置别名列
- 在表中可以对多个列进行计算,计算后会产生一个新列,可以使用别名给该列指定列名(若不指定,则默认列名为产生的条件例如A+B)
为使用聚合函数的列设置别名
使用聚合函数对数据进行查询后会产生一个新列,可以使用别名来制定该列的列名
删除重复数据
数据表中有可能会出现重复数据。为解决数据重复问题,需要使用DISTINCT关键字,DISTINCT必须放在第一个字段名的前面
DISTINCT关键字可以从SELECT语句的结果中删除重复的行,如果未指定则将返回所有行,包括重复的行。
在SELECT列表中只能使用一次DISTINCT关键字,而且DISTINCT关键字必须放在第一位,不要在其后面添加[,]
限制查询结果
在SQL Server 数据库中限制查询结果
使用TOP关键字来限制最多返回多少行,TOP关键字可以指定返回表中的前n行数据
SELECT TOP n FROM table
在MySQL 数据库中限制查询结果
- LIMIT 子句来限制查询结果,LIMIT字句可以对查询结果的记录条数进行限定,控制输出行数
//只显示前n条
SELECT 列名 FROM 表名 LIMIT n;
//从第n-1条(n行)开始显示m条
SELECT 列名 FROM 表名 LIMIT n,m;
在查询的结果中,第一个结果的记录编号时0,而不是1
- 还可以使用LIMIT n OFFSET m (n为查询的行数,m为查询的起始位置)
//从第n行开始的m条数据
SELECT 列名 FROM 表名 LIMIT n,m;
在Oracle 数据库中限制查询结果
使用ROWNUM
//显示前n行的数据
SELECT 列名 FROM 表名 WHERE ROWNUM <= n;
Comments | 0 条评论