那些年我们用过的SQL Select语句

       众所周知在SQL的世界中共有九种SQL语句,而在这些语句中最复杂的就属我们的Select语句了,它是我们数据库中用的最多的语句,于是乎如果我们把Select语句掌握了那我们的SQL语言就至少掌握了一半多了。那么就请跟随我们介绍来学习Select语句吧。

       在我们找东西时最先采取的战略是知道他放哪儿了,想到了放哪儿那就很好找了,相同的道理在进行数据检索时,我们必须知道需要的数据放在哪儿了。当然了我们的Select语句可以有多个查询字句组成也可进行Select语句的嵌套。

首先让我们来认识下Select语句可用于哪些检索:      


     SQL

可用于的查询

全部的行和列;

全部的行和特定的列

限定的范围的行

隐藏有重复值的行

与一组值匹配的行

根据未知值检索的行

根据多个搜索条件检索的行

接下来我们开始认识Select语句的基本结构:

      Select[ALL | Distinct] select_list [INTO [new_table_name]] From {table_name |view_name} [[,{table_name2 | view_name2} […,{table_name16} ]] [Where search_conditions] [Group Bygroup_by_list] [Having search_conditons] [Order By order_list [ASC|Desc]]

这是经过简化后的Select结构,并不是SQL语句中的标准结构,上面简化的是我们经常使用的结构。但那么多的英文名字让我们怎么理解呢?不用着急,让我来一一解读。

Select语句——字句

Select字句指定了需要同多查询返回表的列,它的语法为:Select [ALL|DISTINCT] [TOP n] <select_list>     

ALL

指明查询结构中可以显示值相同的列,它是系统默认的

ALL和Distinct的区别

all可以显示相同

值,且它是系统

的但distinct不

会显示值,相同的列时

显示其中之一即可。

DISTINCT

指明查询结果中如果有值相同的列,则只显示其中的一列。

对Distinct选项来说,Null值被认为是相同的值;

TOP n [PERCENT]

制定返回查询结果的前n行数据,如果percent关键字指定的话,

则返回查询结果的前百分之n行数据

select_list

表示需要查询的字段的列表,字段名称之间用逗号分隔这个列

中既可以包含数据源表或视图中的字段名称,换可以包含其它表达式。如用*,则系统将返回数据表中的所有字段

当然我们还有其它的子句,下面我们按照分类来介绍每个子句。

  那些年我们用过的SQL Select语句_第1张图片

INTO子句:

INTO子句:用于把查询结果存放到一个新建的表中

 

语法为:INTO new_table

new_table制定了新建表的名称,新表的列由

SELECT字句中指定的列构成

新表中的数据行是由WHERE字句指定的如果

SELECT字句中制定了计算列在新表中对应

的列则不是计算列而是一个实际存储在表中的列其中的数据由执行SELECT_INTO语法运算。


UNION子句:

UNION子句:将两个或两个以上的查询结果合并为一个结果集。它与使用连接查询合并两个表的列是不同的,

使用UNION操作符合并查询结果需要遵循两个基本规则:列的树木和顺序在所有查询中必须是一致的;数据

类型必须兼容

 

语法:

Select 语句

UNION [ALL]

Select 语句

注意:

①使用union子句获得的结果集的字段名称与union运算符之前的select语句结果集中的字段

名相同,union运算符之后的select与语句的结果集的字段名将被忽略;

②在默认情况下,union运算符将从最终集中删除重复的记录。如果希望最终结果既保留所

有的记录,则必须使用all关键字;

③在使用union运算符时,单独的select语句中不能包含其自己的order by或compute子句,

只能在最后一个select语句的后面使用一个order by或compute子句,此时,该子句将适用

于最终的组合结果集;

④若需要对查询结果进行分组以及在分组后对结果使用having子句进行过滤,则必须在单

独的select语句中指定group by和having子句。


WHERE子句:

WHERE子句:指定需要检索的条件,以限制返回的数据行

 

 

查询条件

比较运算符:<、<=、>、>=、=、>、!=、!<、!>

范围说明:Between A and B、Not Between A and B

可选值列表:IN、Not In

模式匹配LIKE,NOT Like

是否空值IS NULL,IS Not Null

上述条件的逻辑组合AND,OR,NOT


HAVING子句:指明分组搜索条件,常与Group By子句一起使用。Text、Ntext、Image数据类型不能用于HAVING子句。其语法为:HAVING <search_condition>


FROM子句;

FROM子句:指定需要进行数据查询的表

 

 

      语法为:FROM {<table_source>} [,…n]

 

table_source:指明SELECT语句要用到的表、视图等数据源,该列表中的数据表明和试图名之间使用逗号分隔。

From子句还可以指定数据表或视图之间联接的类型,这些类型将决定于on子句中指定的连接条件。


GROUP BY子句:

GROUP BY子句:指定查询结果的分组条件

 

语法为:

GROUP BY [ALL]

 <group_by_expression>

[,n] 

[WITH {CUBE | ROLLUP}]

group_by_expression:指明分组条件。通常是一个

列名,但不能是列的别名。数据类型为TEXT、

NTEXT、IMAGE或BIT类型的列不能作为分组条件

CUBE除了返回由GROUP BY子句指明的列外,

换返回按组统计的行。返回的结果先按分组的第一

个条件列排序显示,以此类推。统计行包括了

GROUP BY子句指定的列的各种组合的数据统计。

ROLLUP:与CUBE不同的是,此选项对GROUP 

BY子句中的列顺序敏感,它只返回第一个分组条

件指定的列的统计行,改编列的顺序会使返回的

结果行数发生变化。


ORDER BY子句:

ORDER BY子句:指定查询结果的排列方式

 

语法为:

ORDER BY 

{order_by_

expression

 [ASC | DESC] }

 [,n]

 

order_by_expression:指定排序的规则order_by_expression

可以是表或视图的列的名称或别名,如果SELECT语句中没有

使用DISTINCT选项或UNION 操作符,那么ORDER BY子句中

可以包含select list中没有出现的列名或别名。ORDER BY子句

也不能使用TEXT、NTEXT和IMAGE数据类型。

ASC:指明查询结果按升序排序这是系统默认值。

DESC:指明查询结果按降序排列。


COMPUTE子句:

COMPUTE子句:在查询结果末尾生成一个汇总数据行

 

 

语法:

Compute 

{ {AVG | COUNT 

| MAX | MIN | SUM}

expression}

 [,n] [BY expression 

[,n]]

expression:指定需要统计的列的名称,此列需要包含于

SELECT列表中,且不能用别名。COMPUTE子句也不能

使用TEXT、NTEXT、和IMAGE数据类型。

BY expression:在查询结果中生成分类统计的行。如果

使用此选项,则必须同时使用ORDER BY子句。

Expression是对应的ORDER BY子句中的

order_by_expression的子集或全集。

AVG | COUNT | MAX | MIN | SUM以上参数与对应的函

数有相同的含义这些函数均会忽略NULL值且DISTINCT

选项不能在此使用。


        对Select语句的应用无非就是对它的子句、函数和几种查询的应用,在此我们主要介绍了select语句的子句,在下片博客中主要介绍SQL查询命令,有不对的地方还请指出。

你可能感兴趣的:(sql,list,image,table,null,search)