基本的查询流【MSSQL】

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】的更多相关文章
- 数据库学习笔记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 ...
- 查询显示MSSQL表结构 [转]
SELECT 表名 = Case When A.colorder= Then D.name Else '' End, 表说明 = Case When A.colorder= Then isnull(F ...
- MySQL连接查询流程源码
http://blog.itpub.net/29510932/viewspace-2129300/ 初始化: 点击(此处)折叠或打开 main |-mysqld |-my_init // 初始话线程变 ...
- SQL Server 百万级数据提高查询速度的方法
1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...
- Stream 流操作
Stream 类 先看下面的图 Stream 是所有流的抽象基类(不能被实例化,需要使用他的派生类FileStream/MemoryStream/BufferedStream).流是字节序列的抽象概 ...
- C++的那些事:流与IO类
1.流的概念 "流"就是"流动",是物质从一处向另一处流动的过程,比如我们能感知到的水流.C++的流是指信息从外部输入设备(如键盘和磁盘)向计算机内部(即内存) ...
- SQLServer查询速度慢的原因
查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存 ...
- 50种方法优化SQL Server数据库查询
查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 ...
- SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种) .
今天看到一位博友的文章,觉得不错,转载一下,希望对大家有帮助,更多文章,请访问:http://blog.haoitsoft.com 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺 ...
随机推荐
- [bzoj3513][MUTC2013]idiots_FFT
idiots bzoj-3513 MUTC-2013 题目大意:给定$n$根木棍,问随机选择三根能构成三角形的概率. 注释:$1\le n\le 3\cdot 10^5$,$1\le a_i\le 1 ...
- NOIP 2009 潜伏者
P1071 潜伏者 题目描述 RR 国和 SS 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 SS 国的 RR 国间谍小 CC 终于摸清了 SS 国军用密码的编码规则: ...
- Memcached集群之通过Repcached实现主从复制(待实践)
暂时了解有这东西,不搭建了. Mamcached可以通过Repcached实现主从复制.有以下优缺点: 优点: 1.能够实现Cache的冗余功能 2.主从之间可以互相读写(亮点) 参考: http:/ ...
- Servlet的Cookies处理
以下内容引用自http://wiki.jikexueyuan.com/project/servlet/cookies-handling.html: Cookies是存储在客户端计算机上的文本文件,用于 ...
- java编程思想-复用类(2)
如果java的基类拥有某个已被多次重载的方法名称,那么在导出类中重新定义该方法名称并不会屏蔽其在基类中的任何版本(这一点与C++不同) class Homer { char doh(char c) { ...
- 用vhd挂载并安装win7且建立分差vhd
准备:硬盘分区激活第一个分区; imagex.exe; install.wim; winpe boot pc 1.cmd命令下,创建主vhd (1)diskpart (打开dis ...
- 实战c++中的vector系列--emplace_back造成的引用失效
上篇将了对于struct或是class为何emplace_back要优越于push_back,可是另一些细节没有提及.今天就谈一谈emplace_back造成的引用失效. 直接撸代码了: #inclu ...
- python可变參数调用函数问题
一直使用python实现一些想法,近期在使用python的过程中出现这样一个需求,定义了一个函数.第一个是普通參数.第二个是默认參数,后面还有可变參数,在最初学习python的时候,都知道非keywo ...
- node+vue-cli+webpack搭建教程
链接:https://segmentfault.com/a/1190000009160934?_ea=1849098 链接:https://www.jianshu.com/p/2769efeaa10a ...
- 连通分量模板:tarjan: 求割点 && 桥 && 缩点 && 强连通分量 && 双连通分量 && LCA(近期公共祖先)
PS:摘自一不知名的来自大神. 1.割点:若删掉某点后.原连通图分裂为多个子图.则称该点为割点. 2.割点集合:在一个无向连通图中,假设有一个顶点集合,删除这个顶点集合,以及这个集合中全部顶点相关联的 ...