随笔分类 - SQLServer
摘要:很多朋友都会使用T-SQL编写查询,但实际上对于其工作原理大多知之甚少。下面我们来分析一下查询的逻辑工作原理,也就是说一个查询到底是怎么一步一步的工作,最终给我们展示数据的。认真观察下面这个图。想想看,这是我们常写的语句,你真的有没有想过哪个部分是先执行,而哪是个后面执行的呢ON,WHERE,HAVING是三种筛选的子句。正因为他们是在SELECT语句执行之前执行的,所以他们所用的表达式是不可以为SELECT子句中重命名的列的他们还有一个共同特征,如果比较运算符的一个部分为NULL,则既不返回TRUE也不返回FALSE,而是返回UNKNOWN
阅读全文
摘要:在优化你的数据库时,你可能没有用到这些细节的优点。以下是10个关于你的数据库性能的问题,需要你问问自己……1. 假设你的数据库不需要存储特殊字符的能力,尤其是Unicode标准中规定的那些字符,你有没有在系统中把nchar类型替换成char之类的各种适用的字段类型?2. 你是不是在用smalldatetime类型,而不是datetime?如果你不清楚这两种类型有什么区别,这是一个简单介绍:smalldatetime类型可以存储1900年1月1日至2079年6月6日的日期,而datetime类型把这一范围扩展到了1753年1月1日至9999年12月31日。你需要这么大的范围吗?3. 你是不是例行
阅读全文
摘要:完整代码如下:View Code --创建表create table t_money(userid varchar(20),username varchar(30),[money] int)go--插入数据insert into t_money values('1111','puter',1000)insert into t_money values('2222','judy',1000)go--创建转账存储过程create proc proc_updatemoney@adduserid varchar(30), --转入的用户
阅读全文
摘要:convert日期转换格式为20或120时,得到的字符串是不带毫秒的。如 select CONVERT(VARCHAR(23),getdate(),120或20)2003-01-07 21:46:43日期转换格式为21或121时,得到的字符串是带毫秒的select CONVERT(VARCHAR(23),getdate(),121或21)2003-01-07 21:47:34.360日本标准日期转换格式为111时,得到的字符串是yyyy/mm/ddselect CONVERT(VARCHAR(23),getdate(),111)2003/01/07具体参见convert help不带世纪数位
阅读全文
摘要:一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。 二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表由系统来维护﹐它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行 完成后﹐与该触发器相关的这两个表也被删除。Deleted表存放由于执行Delete或Update语句而要从表中删除的所有行。Inserted表存放由于执行Insert或Update语句而要向表中插入的所有行。三﹕Inste
阅读全文
摘要:用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200)2.删除字段 ALTER TABLE table_NAME DROP COLUMN column_NAME3.修改字段类型 ALTER TABLE table_name ALTER COLUMN column_name new_data_type4.sp_rename 改名 更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。 语法 sp_rename [ @objname = ] 'object_name' , [ @newname = ]
阅读全文
摘要:SQL SERVER 与ACCESS、EXCEL的数据转换熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助。利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下:一、SQL SERVER 和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQL Server,
阅读全文
摘要:1.创建测试环境,(插入100万条数据大概耗时5分钟)。create database DBTestuse DBTest--创建测试表create table pagetest(id int identity(1,1) not null,col01 int null,col02 nvarchar(50) null,col03 datetime null)--1万记录集declare @i intset @i=0while(@i<10000)begin insert into pagetest select cast(floor(rand()*10000) as int),left(new
阅读全文
摘要:代码如下:View Code 1 with temp(nodeid,nodename,parentid) as 2 ( 3 select ou.nodeid,ou.nodename,ou.parentid from OU ou where ou.parentid=(select parentid from OU where nodeid ='010201')and ou.nodeid='010201' 4 union all 5 select ou.nodeid,ou.nodename,ou.parentid from OU ou,temp tm where o
阅读全文
摘要:代码如下:View Code 1 create table userOURealation(2 userid int not null,3 nodeid varchar(20) not null,4 primary key(userid,nodeid)5 )6 go
阅读全文