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是一个随机数,这种方法对性能有一定影响。

时间: 2024-12-31 09:36:32

SQL Server 查询的相关文章

用SQL Server查询所有数据并显示

利用SQL Server查询数据,并把所有数据显示在页面上. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@page import="jdbc.sqlServer"%> <%@page import="java.sql.Connection"%> <%@page imp

SQL Server 查询锁表和接锁表

SQL Server 查询锁表 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) as tableName ,* from sys.dm_tran_locks where resource_type='OBJECT' and OBJECT_NAME(resource_associated_entity_id) is not null SQL Server 解锁表 declare @spid int

使用WinDbg调试SQL Server查询

上一篇文章我给你介绍了WinDbg的入门,还有你如何能附加到SQL Server.今天的文章,我们继续往前一步,我会向你展示使用WinDbg调试SQL Server查询需要的步骤.听起来很有意思?我们开始吧! 假设在你面前有个简单的查询,你想在WinDbg里调试那个特定的查询.听起来很简单,但一旦你开始考虑这个问题,就会碰到很多问题: 在我特定执行的查询上,我如何标识出正确的工作者线程? 在sqlservr.exe里,我应该在哪里设置断点? 我们来具体讲解下这2个问题. 标识出正确的工作者线程

SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查询性能优化中的作用

原文:SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查询性能优化中的作用 近段时间以来,一直在探究SQL Server查询性能的问题,当然也漫无目的的查找了很多资料,也从网上的大神们的文章中学到了很多,在这里,向各位大神致敬.正是受大神们无私奉献精神的影响,所以小弟也作为回报,分享一下关于SET STATISTICS IO和SET STATISTICS TIME这两条T_SQL命令,在查询优化性能中的作用. 首先我想说明一下这篇文章不是关于如何

如何找出你性能最差的SQL Server查询

原文:如何找出你性能最差的SQL Server查询 我经常会被反复问到这样的问题:”我有一个性能很差的SQL Server.我如何找出最差性能的查询?“.因此在今天的文章里一些让你很容易找到问题答案的信息和向导. 问SQL Server! SQL Server的一个优点是它本身能回答几乎所有你的问题,因为SQL Server在各个DMV和DMF里存储了很多故障排除信息.另一方面这也是个缺点,因为你必须知道各个DMV/DMF,还有如何把它们解释和关联在一起. 至于你的最差性能SQL Server查

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括:如何在SQL Server存储过程中获取另一存储过程的执行结果记录集?如何在存储过程中检索动态SQL语句的执行结果?如何实现类似SELECT * FROM (EXEC procedure_name @parameters_var) AS datasource ... 的功能?procedure_

SQL Server查询中特殊字符的处理方法

SQL Server查询中,经常会遇到一些特殊字符,比如单引号"'"等,这些字符的处理方法,是SQL Server用户都应该需要知道的. 我们都知道SQL Server查询过程中,单引号"'"是特殊字符,所以在SQL Server查询的时候要转换成双单引号"''".但这只是特殊字符的一个,在实际项目中,发现对于like操作还有以下特殊字符:下划线"_",百分号"%",方括号"[]"以及尖

sql server 查询数据库所有的表名+字段

原文:sql server 查询数据库所有的表名+字段 SELECT * FROM INFORMATION_SCHEMA.columns WHERE TABLE_NAME='Account' SELECT    (case when a.colorder=1 then d.name else '' end) as 表名,--如果表名相同就返回空       a.colorder as 字段序号,       a.name as 字段名,       (case when COLUMNPROPER

利用SET STATISTICS IO和SET STATISTICS TIME 优化SQL Server查询性能

首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET STATISTICS TIME这二条被经常忽略的Transact-SQL命令的. 从表面上看,查询性能的调节是一件十分简单的事.从本质上讲,我们希望查询的运行速度能够尽可能地快,无论是将查询运行的时间从10分钟缩减为1分钟,还是将运行的时间从2秒钟缩短为1秒种,我们最终的目标都是减少运行的时间. 尽

SQL Server 查询性能优化 相关文章

来自: SQL Server 查询性能优化——堆表.碎片与索引(一) SQL Server 查询性能优化——堆表.碎片与索引(二) SQL Server 查询性能优化——覆盖索引(一) SQL Server 查询性能优化——覆盖索引(二) SQL Server 查询性能优化——创建索引原则(一) SQL Server 查询性能优化——创建索引原则(二) SQL Server 查询性能优化——索引与SARG(一) SQL Server 查询性能优化——索引与SARG(二) SQL Server 查