随笔分类 - SQL SERVER
SQL SERVER技术
摘要:有些场景下,需要隔离不同的DB,彼此DB之间不能互相访问,但实际的业务场景又需要从A DB访问B DB的情形,这时怎么办?我认为有如下常规的三种方案: 1.双方提供RESET API,需要访问不同DB数据时,可以通过API来获取指定数据; 这种方案优点是隔离性、定制性强,统一出入口,只能通过指定的A
阅读全文
摘要:.NET事务应用原则 1.在同一个数据库内进行CRUD时,应使用同一个DbConnection对象,且显式指定DbConnection均为同一个DbTransaction,示例代码如下: //在同一个DB中操作一个表时,可以不用显式指定事务,因为单条SQL命令就是一个最小的事务单元 using (D
阅读全文
摘要:SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下:/******************/--Author:梦在旅途(www.Zuowenjun.cn)--CreateDate:2015-06-02--Function...
阅读全文
摘要:在设计数据表时,如果将某些列设置为关联其它表的外键,那么如果对其进行增加、修改操作时,其关联表若没有相匹配的记录则报错,或者在对其关联表进行删除时,也会报错,这就是外键约束的作用,当然除了外键还有许多约束,在此暂不讨论,本篇文章主要讲的是,如何判断是否为SQL的引用约束异常,从而能够更好的将SQL复...
阅读全文
摘要:第一种方法:利用系统表进行查询--将text替换成你要查找的内容select namefrom sysobjects o, syscomments swhere o.id = s.idand text like '%text%'and o.xtype= 'P'xtype:对象类型。可以是下列对象类型...
阅读全文
摘要:首先看以下SQL逻辑语句块:
DECLARE @fieldname varchar(50)
DECLARE @fieldvalue nvarchar(100)
SET @fieldname='chassisno' --这里可传入chassisno,plateno,owner,contacttelno其中之一或不传
SET @fieldvalue='Zuowenjun'
IF @fieldname = 'chassisno'
BEGIN
SELECT * FROM TABLENAME WHERE chassisno=@fieldvalue
END
ELSE IF @fieldname = 'plateno'
BEGIN
SELECT * FROM TABLENAME WHERE plateno=@fieldvalue
END
ELSE IF @fieldname = 'owner'
BEGIN
SELECT * FROM TABLENAME WHERE [owner]=@fieldvalue
END
ELSE I
阅读全文
摘要:方法一:创建一个维护计划对数据库进行备份
方法二:创建一个SQL作业对数据库进行备份
方法三:创建WINDOWS任务计划对数据库进行备份
方法一与方法二其实原理基本相同,都必需开启SQL代理服务,都会调用SQL作业。
方法二与方法三在备份方法上相同,均用到BACKUP DATABASE命令。
阅读全文
摘要:以下SQL段,大家认为结果是什么呢? DECLARE @A VARCHAR(50) SET @A='TEST' SELECT TOP 1 @A=ISNULL(FIELDNAME,'DEFAULT') FROM TABLENAME WHERE 1=2 PRINT @A GO 可能大家都认为结果显示是:DEFAULT,因为变量@A初始化为:TEST,在执行SQL查询后,由于条件1=2不成立,所以查询结果FIELDNAME的值应该是NULL,然后再执行ISNULL函数,就会将默认值DEFAULT赋给变量@A,然后最终打印是DEFAULT,但实际执行的结果却并不是这样,而是TEST,原因是什么呢?经过我的分析,找到了问题的原因,那就是SELECT语句,在找不到的记录的情况下,是不会执行赋值操作的(即:ISNULL(FIELDNAME,'DEFAULT')根本没有执行),所以才会得出该结果,若要解决这个问题,我们可以使用SET关键字给变理赋值
阅读全文
摘要:方法一(仅适用单个字段)使用 not in ,容易理解,效率低select A.ID from A where A.ID not in (select ID from B)方法二(适用多个字段匹配)使用 left join...on... , "B.ID isnull" 表示左连接之后在B.ID 字...
阅读全文
摘要:开发中经常用到查询指定表及其字段的信息,以下是我整理的SQL语句查询方法,供自己平时使用也提供给大家参考!
1.适用MS SQL SERVER;
2.适用ORACLE;
阅读全文
摘要:去除表中重复行数据,可能大家立马就想到的是用DISINTCT关键字,但DISINTCT只能是去除表中所有列都相同的行,若碰到需要去除表中多个字段重复的行(即:部份相同,部份不相同),那么该如何做呢?我通过多年数据库编写经验,整理了如下方法,供大家参考和使用。
阅读全文
摘要:SQL SERVER高并发解决方案主要是从以下几个方面:
1.SQL语句优化:
2.表设计优化:
3.事务设置优化:
4.服务器硬件优化:
阅读全文
摘要:利用系统存储过程创建全文索引的具体步骤:
1) 启动数据库的全文处理功能 (sp_fulltext_database)
2) 建立全文目录 (sp_fulltext_catalog)
3) 在全文目录中注册需要SQL Server全文索引的表 (sp_fulltext_table)
4) 指出表中需要全文索引的列名 (sp_fulltext_column)
5) 为表创建全文索引 (sp_fulltext_table)
6) 填充全文目录 (sp_fulltext_catalog)
阅读全文
摘要:优点:
可以在SQL语句中调用,直接使用返回值,从而可以形成复杂的SQL应用。
阅读全文
摘要:优点:
一、简单性。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件。
二、安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其他数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上。
阅读全文
摘要:优点:
1.强化约束:强制复杂业务的规则和要求,能实现比check语句更为复杂的约束。
2.跟踪变化:触发器可以侦测数据库内的操作,从而禁止数据库中未经许可的更新和变化。
3.级联运行:侦测数据库内的操作时,可自动地级联影响整个数据库的各项内容。
4.嵌套调用:触发器可以调用一个或多个存储过程。触发器最多可以嵌套32层。
阅读全文
摘要:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
优点:
正确的索引会大大提高数据查询、对结果排序、分组的操作效率。
阅读全文
摘要:分类:
MS SQL SERVER 支持三种类型的游标:Transact_SQL 游标,API 器游标和客户游标。
(1) Transact_SQL 游标
Transact_SQL 游标是由DECLARE CURSOR 语法定义、主要用在Transact_SQL 脚本、存储过程和触发器中。Transact_SQL 游标主要用在服务器上,由从客户端发送给服务器的Transact_SQL 语句或是批处理、存储过程、触发器中的Transact_SQL 进行管理。Transact_SQL 游标不支持提取块或多行。
阅读全文
摘要:优点:
1. 允许模块化程序设计。
2.可维护性高,只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可独立于程序源代码而单独修改,而不需要更改、测试以及重新部署程序集。
3.运行速度快。存储过程将比T-SQL批代码的执行要快。存储过程是被编译后存放在数据库服务器的过程高速缓存中,当使用时,服务器不必再重新分析和编译它们。
4. 减少网络流量,在网络中要发送的数百行代码,可由一条执行其存储过程代码的一条单独语句就可实现。
阅读全文
摘要:锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性。各种大型数据库所采用的锁的基本理论是一致的,但在具体实现上各有差别。目前,大多数数据库管理系统都或多或少具有自我调节、自我管理的功能,因此很多用户实际上不清楚锁的理论和所用数据库中锁的具体实现。
阅读全文