数据查询

基础SELECT 语句

SQL提供了SELECT语句进行数据库的查询,SELECT语句是最简单也是使用最频繁的查询语句。

SELECT [ALL | DISTINCT] 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关键字后列出基本表中所有的列名;另一种是如果列的显式顺序与基本表中的顺序相同,则可以利用*指代所有列名

sql server 查询所有表的数据量 sql怎么查询表中所有数据_sql

sql server 查询所有表的数据量 sql怎么查询表中所有数据_sql_02

但在很多情况下,我们只需要查询表中的某些属性列,此时可以通过如下语句来实现:

SELECT column_name [,...n]
[FROM table_name]

sql server 查询所有表的数据量 sql怎么查询表中所有数据_逻辑运算符_03

取消重复元组

SELECT DISTINCT column_name [,..n]
FROM table_name

sql server 查询所有表的数据量 sql怎么查询表中所有数据_sql_04

通过在SELECT语句中加入DISTINCT关键字,可以取消重复值。

DISTINCT在处理NULL值时,当作相等值处理。

查询前N行记录TOP

SELECT TOP n column_name [,...]
FROM table_name

查询表中的前n行记录。

sql server 查询所有表的数据量 sql怎么查询表中所有数据_数据_05

查询计算列

在数据查询过程中,SELECT子句后的select-list列也可以是一个表达式,表达式是经过对某些列的计算而得到的结果数据。

当查询计算列时,计算列没有被指定列名,所以通过AS关键字为计算列指定别名。

sql server 查询所有表的数据量 sql怎么查询表中所有数据_数据_06

使用别名查询

查询中有时候为了方便识别列名,需要将默认的列名命名为别的名字。

SQL中有三种方式进行别名查询。

  • 列名后直接添加别名
SELECT column_name 'column_another_name' [,...n]
FROM table_name
  • 等号方式添加列名
SELECT column_another_name = column_name [,...n]
FROM table_name
  • AS关键字添加列名
SELECT column_name AS column_another_name [,...n]
FROM table_name

sql server 查询所有表的数据量 sql怎么查询表中所有数据_数据库_07

限定查询条件

在对数据库查询时,有时候我们并不需要查询所有的数据,而只需要查询满足特定条件的数据,此时需要在SELECT语句中加入WHERE子句进行查询。

SELECT column_name [,...n]
FROM table_name
WHERE condition_expression

在WHERE子句中通常会用到如下几种运算符。

比较运算符

比较运算符主要有=,<,>,<=,>=,<>和!=,分别表示等于,小于,大于,小于等于,大于等于和不等于的含义。

值得注意的是比较运算符两边的参数,数据类型必须一致。

范围运算符

范围运算符包括BETWEEN 和NOT BETWEEN,主要用于查询是否在指定范围内的数据。

WHERE expression [NOT] BETWEEN value1 AND value2

查询在或不在value1和value2之间的数据。

逻辑运算符

当查询的数据需要满足多个条件时,需要使用逻辑运算符将多个条件串联起来。

逻辑运算符有:NOT 非,AND 与和OR 或这三种。

AND表示同时满足条件;OR表示满足其中任一条件;NOT表示不满足条件

模糊查询

有时候我们无法精确的记得查询条件时,可以根据已知的条件,进行模糊查询。在进行模糊查询时,需要使用字符通配符:

_表示任意单个字符;%表示任意长度的字符串

同时在进行模糊查询时,需要使用[NOT ] LIKE关键字。

列表运算符

当检查查询的属性是否在指定的集合中时,我们需要用到[NOT] IN关键字。

列表有两种方式表示:

一种圆括号括起所有列表的值,列表值之间利用逗号隔开。

另一种通过SELECT语句产生列表。

未知值

有时候我们需要通过检查属性值是否为空来查询数据,此时需要通过IS [NOT] NULL关键字。

规范化查询

规范化查询是指,针对SELECT查询结果集进行,一定的处理,让查询结果更利于观察和分析。例如对结果集进行排序,分组查询等。

排序查询

当希望查询结果按照某个或某些属性进行排列时,可以通过ORDER BY关键字实现。

SELECT column_name [,...n]
FROM table_name
WHERE condition_expression
ORDER BY column_name [ASC | DESC] [,...n]

其中ASC表示升序排列,DESC表示降序排列。

当ORDER BY的列中包含NULL值时,NULL值默认为最大值。

分组查询

当对结果集进行分类汇总时,通过GROUP BY 关键字实现。

而对分组结果有进一步限制要求时,可以通过HAVING关键字实现。

SELECT column_name_order_by[,aggr_fun]
FROM table_name
WHERE condition_expression
ORDER BY column_name
HAVING having_condition

当进行分组查询时,SELECT 后的列名只能是GROUP BY后的列名,或者聚合函数。

HAVING函数只限于对统计组的查询。