摘要:
为了最简单地说明问题,我特地设计了一张这样的表。 一、GROUP BY单值规则 规则1:单值规则,跟在SELECT后面的列表,对于每个分组来说,必须返回且仅仅返回一个值。 典型的表现就是跟在SELECT后面的列,如果没有使用聚合函数,必须出现在GROUP BY子句后面。 如下面这个查询报错... 阅读全文
摘要:
为了最简单地说明问题,我特地设计了一张这样的表。 一、GROUP BY单值规则 规则1:单值规则,跟在SELECT后面的列表,对于每个分组来说,必须返回且仅仅返回一个值。 典型的表现就是跟在SELECT后面的列,如果没有使用聚合函数,必须出现在GROUP BY子句后面。 如下面这个查询报错... 阅读全文
摘要:
操作结果集 为了配合测试,特地建了两个表,并且添加了一些测试数据,其中重复记录为东吴的人物。 表:Person_1魏国人物 表:Person_2蜀国人物 A、Union形成并集 Union可以对两个或多个结果集进行连接,形成“并集”。子结果集所有的记录组合在一起形成新的结果集... 阅读全文
摘要:
嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询。其中外层查询也称为父查询,主查询。内层查询也称子查询,从查询。 嵌套查询的工作方式是:先处理内查询,由内向外处理,外层查询利用内层查询的结果嵌套查询不仅仅可... 阅读全文
摘要:
一、关联子查询-查日期最新列 前天在工作中遇到一条非常有用的SQL语句,想了好久愣是没搞出来。今天将这个问题模拟出来:先看表 需求是,对于每个人,仅显示时间最新的那一条记录。 答案如下:select * from record as a where not exists (select n... 阅读全文
摘要:
一、连接查询简介 连接查询中用来连接连个表的条件称为连接条件或连接谓词。其形式为:[].[]. 常见的连接运算符包括 1、比较运算符:=、>、=、].[].and[].。二、连接按照结果集分类 1、内连接:表中的行互相连接。结果集的行数等于每个表满足条件的行数的乘积,参与连接的表示平等的... 阅读全文
摘要:
表中数据的变化牵一发而动全身,会同时导致到索引中数据的变化。因此如果查询语句不需要索引,就应该删除无用的索引以提高效率。一、INSERT语句 1、基本插入语句 insert用于向表中输入数据,其具体的语法结构如下: INSERT INTO 表名称 VALUES (值1, 值2,....) ... 阅读全文
摘要:
一、语法结构select select_list[ into new_table ]from table_source[ where search_condition ][ group by broup_by_expression ][ having search_condition ][order... 阅读全文
摘要:
UDF的定义 和存储过程很相似,用户自定义函数也是一组有序的T-SQL语句,UDF被预先优化和编译并且尅作为一个单元爱进行调用。UDF和存储过程的主要区别在于返回结果的方式。 使用UDF时可传入参数,但不可传出参数。输出参数的概念被更为健壮的返回值取代了。和系统函数一样,可以返回标量值,这个值的... 阅读全文
摘要:
存储过程(stored procedure)有时也称sproc,它是真正的脚本,更准确地说,它是批处理(batch),但都不是很确切,它存储与数据库而不是单独的文件中。 存储过程中有输入参数,输出参数以及返回值等。一、创建存储过程 创建存储过程的方法和创建数据库中任何其他对象一样,除了他使用... 阅读全文
摘要:
游标是面向行的,它会使开发人员变懒,懒得去想用面向集合的查询方式实现某些功能。 在性能上,游标会迟更多的内存,减少可用的并发,占用带宽,锁定资源,当然还有更多的代码量。 用一个比喻来说明为什么游标会占用更多的资源。当你从ATM机取款的时候,是一次取1000的效率更高呢,还是10次100呢?既... 阅读全文
摘要:
CASE简介 基于列的逻辑表达式,其实就是CASE表达式.可以用在SELECT,UPDATE,DELETE,SET以及IN,WHERE,ORDER BY和HAVING子句之后。由于这里讲的是T-SQL查询,所以只说到CASE表达式在SELECT子句和ORDER BY子句中的使用。 CASE表达式... 阅读全文
摘要:
公用表表达式(CTE) 在编写T-SQL代码时,往往需要临时存储某些结果集。前面我们已经广泛使用和介绍了两种临时存储结果集的方法:临时表和表变量。除此之外,还可以使用公用表表达式的方法。公用表表达式(Common Table Expression)是SQL Server2005版本的引入的一个特性... 阅读全文
摘要:
T-SQL变量 变量的种类: 在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable) 1、全局变量是由系统定义的,在整个SQL Server实例内都能访问到的变量,全部变量以@@开头,用户只能访问,不能赋值。 2、局部变量由... 阅读全文
摘要:
运行时生成语句 1、用EXECUTE执行动态命令 EXECUTE命令可以执行存储过程、函数和动态的字符串命令。注意此语句的作用正如前面在介绍批处理时,如果批中的第一条语句是"EXECUTE存储过程",则可以省略关键字"EXECUTE"。 语法:{ EXEC | EXECUTE } ... 阅读全文
摘要:
运算符 1、算术运算符算术运算符说明+加法-减法*乘法/除法%取模,两个整数相除后的余数 2、位运算符位运算符说明&(与、and)按位逻辑与运算|(或、OR)按位逻辑或运算~(非、NOT)按位逻辑非运算(互斥OR)按位互斥运算3、比较运算符比较运算符说明>大于=等于>=大于等于不等于!=不等于!... 阅读全文
摘要:
1、USE语句 USE语句用于设置当前数据库,如果没有USE语句,那么就由执行脚本的任何用户来确定执行脚本时当前数据库是正确的。如果只是一个通用脚本,那么省去USE语句实际上可能更有益。通常,如果在脚本中命名特定于数据库的表(非系统表),那么需要使用USE命令。如果脚本用于修改一个特定的数据库... 阅读全文
摘要:
CREATE 语句 CREATE语句的开头都是一样的,然后是特定的细节。 CREATE 一、CREATE DATABASE CREATE DATABASE命令用于创建一个数据库,创建一个数据库的最基本语法如下所示: CREATE DATABASE CREATE DATABASE的完... 阅读全文
摘要:
控制流语句 批处理: 一个批处理段是由一个或者多个语句组成的一个批处理,之所以叫批处理是因为所有语句一次性被提交到一个SQL实例。 批处理是分批提交到SQL Server示例,因此在不同的批处理里局部变量不可访问。 在不同批处理中,流程控制语句不能跨批处理。 如果想让多个语... 阅读全文
摘要:
一、标识符 在T-SQL语言中,对SQLServer数据库及其数据对象(比如表、索引、视图、存储过程、触发器等)需要以名称来进行命名并加以区分,这些名称就称为标识符。 通常情况下,SQLServer数据库、数据库以及各种数据对象都应该有一个标识符,但对于某些对象来说,比如约束,标识符是可选的。推... 阅读全文
|