文章分类 - MSSQL
摘要:在程序中有用到 让用户自定义一些定时执行的提醒或工作任务所以可能需要用到SQLServer相关创建的Job因目前不熟作业创建的SQL语句所以就1.通过企业管理器的管理处作业的向导 直接建立一个作业2.查看该作业的SQL语句 相关SQL语句如下 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www...
阅读全文
摘要:1临时表 临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。 临时表有局部和全局两种类型 2者比较: 局部临时表的名称以符号 (#) 打头 仅对当前的用户连接是可见的 当用户实例断开连接时被自动删除 全局临时表的名称以符号 (##) 打头 任何用户都是可见的 当所有引用该表的用户断开连接时被自动删除 实际上局部临时表在tempdb中是有唯一名称的 例如...
阅读全文
摘要:1: 普通SQL语句可以用Exec执行 eg: Select * from tableName Exec('select * from tableName') sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2: 字段名,表名,数据库名之类作为变量时,必须用动态SQL eg: declare...
阅读全文
摘要:@@identity是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值 是系统定义的全局变量。一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。 比如有个表A,它的自增列是id,当向A表插入一行数据后,如果插入数据后自增列的值自动增加至101, 则通过select @@identity得到的值就是101。使用@@identity的前提是在进行inse...
阅读全文
摘要:数据库事务是指作为单个逻辑工作单元执行的一系列操作。 设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作: · 更新客户所购商品的库存信息 · 保存客户付款信息--可能包括与银行系统的交互 · 生成订单并且保存到数据库中 · 更新用户相关信息,例如购物数量等等 正常的情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果在这一...
阅读全文
摘要:RANK ( ) OVER ( [query_partition_clause] order_by_clause ) DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause ) 可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序, 其中PARTITION BY 为分组字段,ORDER BY 指定排序字段 over不...
阅读全文
摘要:SQLserver2005中的四个评价函数(也叫排名函数) ---- 使用ROW_NUMBER函数计算行数 ----对freight从小到大来产生行号 use northwind go select orderid,CustomerID,Employeeid,freight, 行号=row_number() over(order by freight) from orders ---可以用PAR...
阅读全文
摘要:一直不习惯Sql Server 2000提供的错误处理机制----繁琐,别扭...如今,Sql Server 2005提供了对Try...Catch的支持,我们总算可以象写程序一样写SQL语句了:) 考虑这么一个情形,现在我需要写一个存储过程,要删除一条交通卡记录,同时要删除该交通卡的所有交易记录.我需要两条类似下面的SQL语句组成一个事务: --删除卡的记录delete from ...
阅读全文
摘要:PL/SQL也提供GOTO语句,其语法是 GOTO label; 这里label是在PL/SQL块中定义的标签.标签是用双箭头括号括起来的.当执行GOTO语句的时候,控制会立即转到由标签标识的语句. 例如,我们可以按照下面的方式实现前面的循环示例. Declare vn:=1; begin loop insert into temptable values(vn,'loopcount'); vn...
阅读全文
摘要:CREATE PROCEDURE [dbo].[pro_CURSOR]ASBEGIN--声明一个游标DECLARE MyCURSOR CURSOR FOR SELECT userid,depid FROM users--打开游标open MyCURSOR--声明两个变量declare @userid varchar(50)declare @depid varchar(50)--循环移动fetch ...
阅读全文
摘要:我们书写查询语句的时候,Join 参数之前可以是下面三个 { LOOP | MERGE | HASH } JOIN 。 如果不使用,则系统自己分析那种方式快,使用那种方式。 这其实是SQL Server 联结时候使用的三种算法。尽管每种算法都并不是很复杂,但考虑到性能优化,在产品级的优化器实现时往往使用的是改进过的变种算法。譬如SQL Server 支持block nested loops、i...
阅读全文
摘要:我们仍然是通过例子来理解OR运算符的特征 我们仍然使用 http://blog.joycode.com/ghj/archive/2008/01/18/113870.aspx 中的 member 表,这时候,这个表的索引如下: 名字描述列member_corporation_linknonclustered located on PRIMARYcorp_nomember_identcluster...
阅读全文
摘要:对于数据库来说,它不会每次有一个数据页变化后,就存到硬盘。而是变化达到一定数量级后才会作这个操作。 这时候,数据库并不是以数据页来作为操作单元,而是以64k的数据(8个数据页,一个区)作为操作单元。 区是管理空间的基本单位。一个区是八个物理上连续的页(即 64 KB)。这意味着 SQL Server 数据库中每 MB 有 16 个区。 为了使空间分配更有效,SQL Server 不会将所有...
阅读全文
摘要:我们通过一个实例来看 有And 操作符时候的最常见的一种情况。我们有下面一个表, CREATE TABLE [dbo].[member]( [member_no] [dbo].[numeric_id] IDENTITY(1,1) NOT NULL, [lastname] [dbo].[shortstring] NOT NULL, [firstname] [dbo].[shortstri...
阅读全文
摘要:使用索引的意义 索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。 使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。 使用索引的代价 索引需要占用数据表以外的物理存储空间。 创建索引和维护索引要花费一定的时间。 当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。 创建索引的列 主键 外键或在表联接操作中经常用到的列 ...
阅读全文
摘要:在SQL Server 2005 中新增了一个函数:newsequentialid(),MSDN 中对这个函数的描述如下: 在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID。 NEWSEQUENTIALID() 不能在查询中引用。 NEWSEQUENTIALID() 只能与 uniqueidentifier 类型表列上的 DEFAULT 约束一起使用。 这个函...
阅读全文
摘要:有些人可能对主键和聚集索引有所混淆,其实这两个是不同的概念,下面是一个简单的描述。不想看绕口文字者,直接看两者的对比表。尤其是最后一项的比较。 主键(PRIMARY KEY ) 来自MSDN的描述: 表通常具有包含唯一标识表中每一行的值的一列或一组列。这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性。在创建或修改表时,您可以通过定义 PRIMARY KEY 约束来创建主键...
阅读全文
摘要:如何获得索引的一些信息 比如:查看索引的深度SQL 脚本如下: select INDEXPROPERTY (OBJECT_ID('ChargeHeap'),'ChargeHeap_NCInd','IndexDepth') 其中的 'ChargeHeap' 为我们要查看索引所在的表名,'ChargeHeap_NCInd' 为所要查看的索引名,'IndexDepth' 为所要查看的索引属性。 更多...
阅读全文
摘要:不论是 聚集索引,还是非聚集索引,都是用B+树来实现的。我们在了解这两种索引之前,需要先了解B+树。如果你对B树不了解的话,建议参看以下几篇文章: BTree,B-Tree,B+Tree,B*Tree都是什么 http://blog.csdn.net/manesking/archive/2007/02/09/1505979.aspx B树 即二叉搜索树: 1.所有非叶子结点至多...
阅读全文
摘要:不论是缓存的数据信息,还是物理保存的信息,他们的基本单位都是数据页。所以理解数据页是最最基础的知识点,本篇博客就介绍跟索引有关的数据页的一些基础知识。 数据页的基础知识 SQL Server 中数据存储的基本单位是页(Page)。数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。磁盘 I/O 操作在页级执行。也就是说,SQL Se...
阅读全文