ms sql一些技巧
1.SQL:复制数据库某一个表到另一个数据库中 SELECT * INTO 新表 FROM 旧表 (将旧表的结构和数据都复制到新表,不用事先创建新表)
SELECT * INTO 新表 FROM 旧表 where 1=2(只复制结构不复制数据)
INSERT INTO 新表 SELECT * FROM 旧表(在新表已经存在的情况下,将旧表数据插入新表)
2.将某一条记录排在第一位。
order by(case processId when 273 then 0 else 1 end), newid()//按照processId的值来排列,当processId为273,排第一个,然后再按照随机数排列。
3.当数据库出现死锁,或者事务冲突,我们需要先把所以的进程杀死。可采用如下代码。
--杀死所有进程
USE master;
GO
DECLARE @SQL VARCHAR(3000);
SET @SQL = '';
SELECT @SQL = @SQL+'; KILL ' + RTRIM(SPID)
FROM [sys].[sysprocesses] AS sps
WHERE [sps].[dbid] = DB_ID('otctrade');
SET @SQL = SUBSTRING(@SQL, 2, LEN(@SQL));
EXEC(@SQL);
GO
ALTER DATABASE otctrade SET MULTI_USER;
GO
4.有时候我们需要将数据库设置为单用户,然后对一些难以解决的数据问题执行checktable方法,这时候数据库会帮助我们解决这些问题,解决完以后,需要设置为多用户,可以用下面的 语句。
use master
declare @databasename varchar(255)
set @databasename='otctrade'
exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态
dbcc checktable('[otctrade].[dbo].[PE_U_Article]',REPAIR_ALLOW_DATA_LOSS)
dbcc checktable('[otctrade].[dbo].[PE_U_Article]',REPAIR_REBUILD)
exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态
5.当我们要查询符合一些某段时间差里面的记录,可以采用DATEDIFF(day,start_time,end_time)=7这样的表达式,其中day是查询条件,可以是day,hour,month,year等,第二个参数为起始时间,第三个参数为终止时间。
比如:select * from T where DATEDIFF(day,create_time,getdate())>1查询距离create_已经过去了1天以上的记录。 select * from T where DATEDIFF(hour,create_time,getdate())=1 查询距离create_已经过去了1小时的记录
6.如果sql中的某个字符串中包含了',比如一个字符串叫做she' tea。由于在sql语句中'是一个特殊的符号,所以我们可以采用这样的方式来规避这种影响。即在引号前面在加一个引号,相当于转义。
select * from A where name='she''s tea'
7.递归查询
我们经常会需要做一些递归查询,多数是针对具有父子节点结构的数据。比如部门表,一个部门可能隶属其他部门,这样就会有一个父子节点结构。我们可以采用如下的语句来进行递归查询。
with temp_users as
(select * from department_info where superiors_department_id is null union all select A.* from department_info A,temp_users B where A.superiors_department_id=B.department_id)
select * from temp_users
上述语句就是一个典型的递归查询的sql语句,递归的逻辑在于第二行,首先select * from department_info where superiors_department_id is null这条语句是第一次递归的查询语句,它查出美元上级部门的部门(也就是顶级部门),而后的内联语句就是递归逻辑,每次都跟temp_users做内联,然后得到的记录结果再加到temp_users里面,最后我们得到的temp_users就是一个完整的且按顺序排列好的总结果集。然后第三条语句我们直接从这个结果集中取数据就好了。
上述例子是从父级往子级递归,我们也可以从子级往父级进行递归。只需要将上述sql语句做稍微的修改即可实现。
with temp_users as
(select * from department_info where department_id=1 union all select A.* from department_info A,temp_users B where A.department_id=B.superiors_department_id)
select * from temp_users
相信看了代码很容易就明白了,上述语句的结果集为
8.按自定义的形式排序
有时候我们除了定义一个或者几个排序字段之外,还需要对一些特殊的记录按特定顺序来排列,比如,我想要按年龄降序排列,但是我又必须把名字叫做A的同学排在第一个,名字叫做B的同学排在第二个,然后才是按年龄的降序排列,这时候我们可以使用case when语句来实现。
select commodity_class_id as topClassId,commodity_class_name as topClassName,photo_src as photoSrc,app_photo_src as appPhotoSrc from T_Commodity_Class where is_del=0
and class_kind=1
and class_type=1
order by (case top_class_id when 4 then 1 when 285 then 2 when 286 then 3 when 287 then 4 else 5 end),priority1
注意看第4行代码,我们就能了解这个技能的用处了。
ms sql一些技巧的更多相关文章
- MS SQL Server数据库查询优化技巧
[摘 要]本文主要是对MS SQL Server数据库查询优化技巧进行了说明和分析,对索引使用.查询条件以及数据表的设计等进行了阐述.中国论文网 http://www.xzbu.com/2/view- ...
- PCB MS SQL 排序应用---SQL相邻数据区间值求解
其中一篇 博文中有写<PCB MS SQL 排序应用---相邻数据且相同合并处理>此篇有也应相用也同的技巧,实现相邻数据区间值求解 示例: 原数据:处理前 求出区间值:处理后 SQL 代码 ...
- SQL开发技巧(二)
本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列文章基于SQLServer系列,且版本为SQLServer2005及以上-- 文章系列目录 SQL开发技巧(一) SQL开 ...
- MS SQL巡检系列——检查外键字段是否缺少索引
前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的.一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方 ...
- MS SQL巡检系列——检查重复索引
前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的.一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方 ...
- [MS SQL Server]SQL Server如何开启远程访问
在日常工作中,经常需要连接到远程的MS SQL Server数据库中.当然也经常会出现下面的连接错误. 解决方法: 1. 设置数据库允许远程连接,数据库实例名-->右键--->属性---C ...
- Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)
Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...
- MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建
前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候 ...
- MS SQL Server 数据库分离-SQL语句
前言 今天在在清理数据库,是MS SQL Server,其中用到分离数据库文件.在这过程中,出现了一个小小的问题:误将数据库日志文件删除了,然后数据就打不开了,除了脱机,其他操作都报错. 数据库分离 ...
随机推荐
- 高阶函数实现AOP
AOP(面向切面程序)的主要作用是把一些跟核心业务逻辑模块无关的功能抽离出来,这些跟业务逻辑无关的功能通常包括日至统计.安全控制.异常处理等.把这些功能抽离出来之后,再通过"动态织入&quo ...
- 几种文件查找命令,whereis ,find ,locate.
whereis对于文件的查找,是将系统内的所有文件放在一个数据库文件里.whereis 和 locate 都是以该数据库为准的(由于每个数据库会有一个更新时间,一般在更新时间之后才可以找到).而fin ...
- [转载] 深入了解Java ClassLoader、Bytecode 、ASM、cglib
转载自http://www.iteye.com/topic/98178 一.Java ClassLoader 1,什么是ClassLoader 与 C 或 C++ 编写的程序不同,Java 程序并 ...
- java SE 基础概念梳理(一)
(一)First 摘要:Java概述.Java开发环境搭建.程序开发流程 Java概述 Java的应用 开发QQ.迅雷程序(桌面应用软件)开发淘宝.京东(互联网应用软件) Java的擅长 互联网: ...
- 使用Identity Server 4建立Authorization Server (6) - js(angular5) 客户端
预备知识: http://www.cnblogs.com/cgzl/p/7746496.html 第一部分: http://www.cnblogs.com/cgzl/p/7780559.html 第二 ...
- smartClient 1--框架介绍
一.是什么(以下简称SC) smartClient 是一个基于web技术的开发框架,主要包括: 一个无需安装的 Ajax/HTML5 客户端引擎 UI组件和服务(采用富客户端RIA)--- 提 ...
- 如何优化Cocos2d-X游戏的内存
在游戏项目优化中都会碰到一个问题,如何既能减少内存又能尽量减少包的大小?在实际项目中有些经验分享一下,事实上2D游戏中最占内存的就是图片资源,一张图片使用不同的纹理格式带来的性能差异巨大,下表是我在I ...
- SpringMVC中遇到页面跳转出现404错误的问题
今天遇到了一个问题: 使用SpringMVC时,出现页面无法跳转的情况(404错误), 出现这个异常的原因在于SpringMVC的配置文件中控制器的配置书写错误: 原代码: <context:c ...
- 自定义控件,上图下字的Button,图片任意指定大小
最近处在安卓培训期,把自己的所学写成博客和大家分享一下,今天学的是这个自定义控件,上图下字的Button安卓自带,但是苦于无法设置图片大小(可以在代码修改),今天自己做了一个,首先看一下效果图,比较实 ...
- eclipse环境下基于tomcat-7.0.82构建struts2项目
开山第一篇,毕业4个月目前接触最多的框架还是s2sh框架.... 具备完整的开发环境下,在eclipse下启动tomcat出现如下所示画面表示环境构建成功. 第一步:创建web项目,截图如下 此页面只 ...