一.关于T-SQL T-SQL是ANSI和ISO SQL标准的MS SQL扩展,其正式名称为Transact-SQL,但一般程序员都称其为T-SQL. 二.逻辑查询处理各个阶段 2.1 逻辑查询处理流程总览 2.2 逻辑查询处理阶段解释 (1)FROM:标识出查询的来源表,处理表运算符.每个运算符会应用一系列的子阶段.eg.在JOIN连接运算中涉及的阶段是笛卡尔积.ON筛选器和添加外部行.FROM阶段会生成一个虚拟表,这里暂定为VT1. (1-J1)笛卡尔积:对涉及到的两个表执行笛卡尔积(交叉联…
Chapter 2 Single-Table Queries GROUP BY之后的阶段的操作对象就是组(可以把一组想象成很多行组成的)了,HAVING负责过滤掉一些组.分组后的COUNT(*)表示每组的行数.COUNT(*)会把包含NULL的行也数进来,比如有5行的一组数据是30, 10, NULL, 10, 10,列名叫qty,那么COUNT(qty)会返回4,而COUNT(*)返回5.可以SELECT DISTINCT,也可以在聚合函数中指定DISTINCT,例如:COUNT(DISTIN…
第二章 查询结果排序 2.1 按查询字段排序 order by sal asc; desc;-- 3表示sal 2.2 按子串查询 );--按job的最后两个字符排序 2.3 对字符数字混合排序 create view v as select ename ||' ' ||deptno as data from emp;--创建视图 select * from v; 创建视图后把两个字段链接成一个字符串 利用translate()函数把数字或者字符替换 然后排序 ','##########'),'…
第四章 子查询:在外部查询内嵌套的内部查询(按照期望值的数量分为,标量子查询 scalar subqueries,多值子查询multivalued subqueries)(按照子查询对外部查询的依赖性分为独立子查询self-contained subqueries和相关子查询 correlated subqueries) 应用一:关系分区问题,使用group by和distinct count 来解决关系分区问题 Eg:NorthWind返回每个美国员工至少为其处理过一个订单的所有客户 独立子查…
C#语言中并不缺少控制程序流程的结构,for.while.do/while和foreach等都可以做到这一点.但我们还有更好的方式:查询语法(query syntax) 下面这段代码演示了用命令式的方式填充一个数组,然后将其内容输出到控制台: int foo = new int[100]; for(int num = 0; num < foo.length; num++) { foo[num] = num * num; } foreach(int i in foo) Console.WriteL…
第五章 元数据查询 查询数据库本身信息 表结构 索引等 5.1 查询test库下的所有表信息 MYSQL SELECT * from information_schema.`TABLES` WHERE TABLE_SCHEMA = 'test'; ORACLE select table_name from all_tables where owner = 'test'; 5.2 查询表中列的信息 MYSQL SELECT * from information_schema.`COLUMNS` W…
系统先操作地址空间,真正要用的时候才申请物理内存,进行使用. Reserved Memory  保留内存,虚拟内存 Commited Memory 提交内存,物理内存 [如何判断SQL SERVER 内存不足?] 如果进程的用户态CPU时间比较高,一般说明它没有遇到其他瓶颈,正全力运行.如果内存有瓶颈,一般用户态的CPU时间不会很高,但核心态的CPU时间反而升高,因为系统要做的paging动作(pages/sec计数器).同时磁盘也会比较繁忙.但磁盘繁忙,而paging不忙,却不能说明内存不足.…
每次SQL SERVER启动的时候,会重新创建. 用于 0.临时表 1.排序 2.连接(merge join,hash join) 3.行版本控制 临时表与表变量的区别: 1)表变量是存储在内存中的,当用户在访问表变量的时候,SQL Server是不产生日志的,而在临时表中是产生日志的; 2)在表变量中,是不允许有非聚集索引的; 3)表变量是不允许有DEFAULT默认值,也不允许有约束; 4)临时表上的统计信息是健全而可靠的,但是表变量上的统计信息是不可靠的; 5)临时表中是有锁的机制,而表变量…
执行计划对性能影响甚大. 系统是怎么得出一个号的执行计划的?主要是依赖于准确的统计信息.统计信息准确的前提下,执行语句重用性高,可避免频繁编译,这也有助于提高性能. 但如果怀疑统计信息不够准确,可以强制待执行的SQL语句编译.主要方法为清除内存中的执行计划,运用编译语句等. 为何索引重建后查询速度变快? 1.消除了数据碎片 2.更新了统计信息.…
第三章 操作多个表 表连接的内连接和外连接 A表 B表id name id name 1 a 1 b 2 b 3 c4 c内连接就是左表和右表相同的数据,查询结果只有相等的数据:select * from A inner join B on A.id=B.id select * from A,B where A.id=B.id id name id name 1 a 1 b 外连接分为:左外连接.右外连接.全外连接左外连接就是以左表为准,去匹配右表,左表有多少条数据,结果就是多少条数据selec…