4个DML(Data Manipulation Language)命令

SELECT INSERT UPDATE DELETE

查询语法有一个特有的固定顺序

SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY

FROM子句数据源

  • 本地SQL Server表。(单个SQL SELECT语句中可访问的表的数量不能超过256个)
  • 子查询作为派生表,也称为子选择或内联视图。
  • 视图或存储的SELECT语句。
  • 表值用户定义的函数返回行和列。
  • 分布式数据源使用openquery()和其他分布式函数从其他SQL Server数据库、其他SQL Server、其他数据库平台(例如Microsoft Access、Oracle和Foxpro)或应用程序(如Excel)中提取数据。
  • 全文搜索可以返回包含有关哪些行包括特定词的信息的数据集。
  • 透视在FROM子句内创建交叉表。
  • XML数据源使用XQuery。
  • 行构造函数使用values()子句构建硬编码的行。
  • 来自插入、更新或删除命令的插入和删除的虚拟表,可使用output子句以子查询的形式将它们传递到外部查询。

表别名

AS关键字是可选的直接列名后跟空格加别名即可,但为了提高代码可读性帮助防止错误产生不建议省略。

使用关键字AS为数据源指派别名,一旦列或数据源有别名,就必须使用这个新名称引用它。

示例:SELECT Name AS 姓名,'abc',SellDate + 365 销售日期 FROM Production.Product;

   第一列使用AS关键字把别名更改为姓名。

   第二列是没有别名的表达式,所以它没有列名。

     第三列是使用别名来命名表达式,省略了AS关键字。

表名称

1、如果数据库对象的名称,如表名或列名与SQL保留字相冲突,可以将它放在方括号内让SQL清楚它是对象的名称。[Order]

2、方括号特定于SQL Server且不属于ANSI SQL标准的一部分。

3、虽然在数据库对象名称之间包含空格是非常低劣的做法,但它仍是可行的。例:[Order Details]

完全限定的名称

服务器名(Server).数据库名(Database).架构名(Schema).对象名(Table不局限于表,有视图等)

除了编写较简洁的代码外,还有两个特别的好处:

  • 同一个表可能存在于多个架构中。如果是这样的话,那么选择的架构基于用户的默认架构。限定名称可避免意外地使用了错误的对象。
  • 查询引擎重用查询执行计划需要限定的表名称,这对于提高性能非常重要。

WHERE条件

1、!=(不等于)  !<(不小于)  !>(不大于)不是ANSI标准的SQL。<>运算符可移植;而!=运算符不可以。

2、BETWEEN 1 and 10实际意义:大于等于第一个值1,且小于等于第二个值10的简短表达方式。

3、IN搜索条件相当于对多个EQUALS比较进行OR运算,因为它搜索列表中的精确匹配

  两种用法:1、where city IN ('中国','美国','日本')   //列中是否精确包含括号中的值

       2、where '中国' IN (city)  //值是否精确包含于括号中的列

          3、可结合NOT IN使用,用以排除某些行。例where city not in ('中国','美国','日本')

          4、对于NOT IN条件来说,如果列表中有Null值,则每行都将被判定为false。

          例 where a not in (b,NULL)  //因为未知的Null值无法从逻辑上判定

4、LIKE搜索条件

  使用通配符搜索字符串内的模式。但是该通配符与你熟悉的MS-DOS通配符有区别

      说明 SQL通配符 MS-DOS通配符     示例
任意数量(0或更多)的任意字符 % * 'Able' LIKE 'A%'
一个任意字符 _ ? 'Able' LIKE 'Abl_'
所附的字符中的一个 [] n/a

'a' LIKE '[a-g]'

'a' LIKE '[abcdefg]'

匹配不在字符范围内 [^] n/a

'a' LIKE '[^w-z]'

'a' LIKE '[^wxyz]'

    

      示例:where name like 'Chain%'  //Chain开头的任何数量任何字符

            where name like '[d-f]%'  //d-f之间(包括d和f)字母开头的任何数量任何名称

  5、多个WHERE条件

    1、逻辑运算符存在优先级:NOT - AND - OR  

    2、()的优先级可以改变结果,因为括号优先级是最高的。

    SELECT...WHERE:没有FROM子句的SELECT语句返回单行。

              如果WHERE条件为真,则按预想那样执行,为假,仍然执行,但返回0行。

    例:select 'abc' as col where 1 > 0 

    3、*返回每一个表的所有列,但不建议使用,会严重浪费资源影响性能。

  6、限定的列

    查询的一个常见的问题是列名在多个表中重复。

    create table t1(col1 int)

    create talbe t2(col1 int)

    select col1 from t1 cross join t2  //列名col1不明确

    select t1.col1 from t1 cross join t2  //正确的做法加上表名.列名

基本的查询流【MSSQL】的更多相关文章

  1. 数据库学习笔记3 基本的查询流 2 select lastname+','+firstname as fullname order by lastname+','+firstname len() left() stuff() percent , select top(3) with ties

    数据库学习笔记3 基本的查询流 2   order by子句对查询结果集进行排序 多列和拼接 多列的方式就很简单了 select firstname,lastname from person.pers ...

  2. 查询显示MSSQL表结构 [转]

    SELECT 表名 = Case When A.colorder= Then D.name Else '' End, 表说明 = Case When A.colorder= Then isnull(F ...

  3. MySQL连接查询流程源码

    http://blog.itpub.net/29510932/viewspace-2129300/ 初始化: 点击(此处)折叠或打开 main |-mysqld |-my_init // 初始话线程变 ...

  4. SQL Server 百万级数据提高查询速度的方法

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...

  5. Stream 流操作

     Stream 类 先看下面的图 Stream 是所有流的抽象基类(不能被实例化,需要使用他的派生类FileStream/MemoryStream/BufferedStream).流是字节序列的抽象概 ...

  6. C++的那些事:流与IO类

    1.流的概念 "流"就是"流动",是物质从一处向另一处流动的过程,比如我们能感知到的水流.C++的流是指信息从外部输入设备(如键盘和磁盘)向计算机内部(即内存) ...

  7. SQLServer查询速度慢的原因

    查询速度慢的原因很多,常见如下几种:  1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应.  3.没有创建计算列导致查询不优化.  4.内存 ...

  8. 50种方法优化SQL Server数据库查询

    查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 ...

  9. SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种) .

    今天看到一位博友的文章,觉得不错,转载一下,希望对大家有帮助,更多文章,请访问:http://blog.haoitsoft.com 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺 ...

随机推荐

  1. Apache 使用localhost(127.0.0.1)可以访问,使用本机IP(局域网)不能访问

    本机ip是:192.168.1.25,输入后提示: Forbidden You don't have permission to access / on this server 对于此问题的解决办法, ...

  2. Java发送邮件示例

    利用Java发送邮件示例: 1.发送QQ邮件 import java.util.Properties; import javax.mail.Message; import javax.mail.Mes ...

  3. 使用RoboCopy 命令[转载]

    经常进行文件管理操作的朋友们,不满意于Windows系统内置的复制功能,因为它太龟速了.于是大家就使用FastCopy.TeraCopy之类的软件来加速复制,但是你是否知道Windows 7已经内置快 ...

  4. SSLStrip 终极版 —— location 瞒天过海

    之前介绍了 HTTPS 前端劫持 的方案,尽管非常有趣.然而现实却并不理想. 其唯一.也是最大的缺陷.就是无法阻止脚本跳转.若是没有这个缺陷,那就非常完美了 -- 当然也就没有必要写这篇文章了. 说究 ...

  5. Lvs 负载均衡 (VS/NAT模式)

    一.LVS简介 LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器.这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirt ...

  6. 『GCD』详解

    2. GCD 任务和队列 学习 GCD 之前,先来了解 GCD 中两个核心概念:任务和队列. 任务:就是执行操作的意思,换句话说就是你在线程中执行的那段代码.在 GCD 中是放在 block 中的.执 ...

  7. [Canvas画图] 藏图阁(16) 人体穴位

    本节目标: 趁着今天是愚人节.阿伟决定来重温一下学医的那段日子. 有那么一段时间, 阿伟对武侠小说和医学同一时候产生了浓厚的兴趣,当时最想学的就是葵花点穴手, 一阳指之类的点穴功夫.轻轻一点.就能把别 ...

  8. lambda和委托那点事

    Lambda 简介 Lambda 表达式是一种可用于创建委托或表达式目录树类型的一种匿名函数(匿名方法+Lambda).通过使用 lambda 表达式,可以写入可作为参数传递或作为函数 调用值返回的本 ...

  9. jQuery通过地址获取经纬度demo

    在开始之前,首先需要登录百度地图API控制台申请密钥ak. 1.登录百度地图开放平台http://lbsyun.baidu.com 注册账号,完善信息,点击网站右上角的“API控制台”,点击,创建应用 ...

  10. NinePatchChunk.java分析

    最近在Swing中使用.9图片,用到了NinePatchChunk.java文件,但是发现有时会出现无法完美展示的情况,决定修复一下这个问题,顺便研究一些.9的绘制过程 通过分析发现draw函数先是计 ...