SQL Server 查询
from子句
在查询语句中from应该是必须的,虽然可以没有,但是那样没有意义。
因为from子句是其他部分的基础,输出、where条件、order by等所有要访问的表都必须包含在from子句中。
简单的可以包含一个表,也可以合并多个数据源的数据和多个数据类型的数据。最大访问数量是256个表。
可以接受的数据来源:本地SQL SERVER表、子查询、视图、表值用户定义的函数返回的行和列、分布式数据源。。。
表的别名:from子句中 “表名 AS 别名”这种格式为表起一个别名。AS可以省略,但最好不要这样。
如果表名、别名、列名等等名称与关键字冲突,可以将名称放在中括号[]中,以表示其不是关键字。(非标准SQL)
同样 如果表名、列名等名称中间包含空格,也可以放在中括号[]中,但绝不建议这样做。
完全限定的名称 由4部分组成:Server.Database.Schema.Table 在当前数据库中则不需要服务器和数据库名,也就是一般情况下我们需要些后面两部分就可以了。使用限定的名称有两个好处,①避免意外的错误,②提高查询的性能,所以建议养成好的习惯。
where条件
筛选from子句的输出结果,并限制结果集中返回的行。
比较运算符 标准的六个 >、>=、=、=<、<、<> SQL Server特有的三个 !=、!<、!>
代数的使用 子句条件中的 col+20=60 与col=60-20 等价,但是后者可以提高性能,这个简单的例子,道理是一样的,所以一定要注意书写习惯,改掉坏毛病。
其他比较运算符 BETWEEN IN LIKE IS SOME ANY ALL
BETWEEN x and z 相当于大于等于x且小于等于z;它经常与日期一起使用,日期时间
IN 用例一 region IN (‘Hebei’,‘Henan’); 用例二 ‘Hebei‘ IN (col1,col2,col3…)
LIKE 包含通配符的条件。SQL通配符与DOS通配符不同,避免混淆,现在只说SQL的通配符:%代表任意个数的任意字符, _代表一个任意字符, []所附字符中的一个, [^]不在所附字符中。举例说明:‘Able’ LIKE ’A%’ ‘Able’ LIKE ’Abl_’ ‘A’ LIKE ‘[A-E]’ ‘a’ LIKE ‘abf’ ‘A’ LIKE ‘[^WXYZ]’
逻辑运算符 NOT AND OR 连接多个where条件 ,运算顺序即 NOT AND OR。可以加()以增强可读性。
SELECT…WHERE… SELECT ‘abc’ AS col WHERE 条件。如果条件为真,则返回 abc ,如果条件为假,返回为空。
返回结果
星号* 特殊通配符 代表表顺序的所有列;如果多个表也是所有表的所有列。tablename.*则只包括来自该表的列。
别名显示在结果集中;如果没有别名,表达式和常量一般显示为空白列标题;包含空格或者关键字的别名放在方括号、单引号或者双引号内(不过最好还是不用那些)。
限定的列用表名限定列,防止产生误会和错误。
结果集排序
通过列名指定排序 order by col1,col2…
使用表达式指定排序 order by 表达式
使用列别名指定排序 (where子句不允许使用列别名,OK)
使用列的顺序位置 order by 1; 不是很好,因为有时候列的顺序位置会改变
升序、降序:默认升序ASC;降序DESC。例,ORDER BY col1 DESC;
排序规则
谓词
首先解释一下谓词的意思,根据《现代汉语》的定义,词语分两类:体词包括名词、数词、量词;谓词包括动词和形容词。在计算机语言的环境下,谓词是指条件表达式的求值返回真或假的过程。SQL中的谓词跟在SELECT后面
ALL/DISTINCT ALL返回所有行(默认); DISTINCT把重复的行删除,保留一个。
TOP(n) 在order by的条件下,TOP(n)表示返回结果的前n行;TOP(n) PERCENT 则返回结果集中的前n%。
WITH TIES 与TOP(n)一起使用,表示允许并列第n名等情况的发生
随即行选择 用ORDER BY NewID()排序,然后选择第一行。newID是一个随机数,这种方法对性能有一定影响。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。