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一些技巧的更多相关文章

  1. MS SQL Server数据库查询优化技巧

    [摘 要]本文主要是对MS SQL Server数据库查询优化技巧进行了说明和分析,对索引使用.查询条件以及数据表的设计等进行了阐述.中国论文网 http://www.xzbu.com/2/view- ...

  2. PCB MS SQL 排序应用---SQL相邻数据区间值求解

    其中一篇 博文中有写<PCB MS SQL 排序应用---相邻数据且相同合并处理>此篇有也应相用也同的技巧,实现相邻数据区间值求解 示例: 原数据:处理前 求出区间值:处理后 SQL 代码 ...

  3. SQL开发技巧(二)

    本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列文章基于SQLServer系列,且版本为SQLServer2005及以上-- 文章系列目录 SQL开发技巧(一) SQL开 ...

  4. MS SQL巡检系列——检查外键字段是否缺少索引

    前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的.一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方 ...

  5. MS SQL巡检系列——检查重复索引

    前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的.一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方 ...

  6. [MS SQL Server]SQL Server如何开启远程访问

    在日常工作中,经常需要连接到远程的MS SQL Server数据库中.当然也经常会出现下面的连接错误. 解决方法: 1. 设置数据库允许远程连接,数据库实例名-->右键--->属性---C ...

  7. Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)

    Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...

  8. MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建

    前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候 ...

  9. MS SQL Server 数据库分离-SQL语句

    前言 今天在在清理数据库,是MS SQL Server,其中用到分离数据库文件.在这过程中,出现了一个小小的问题:误将数据库日志文件删除了,然后数据就打不开了,除了脱机,其他操作都报错. 数据库分离 ...

随机推荐

  1. c#中的Out, params,ref 细说并沉淀

    1. Out,params,ref之前先记录平时用的最多的按值传递参数的情况,当然默认情况下参数传入函数的默认行为也是按值传递的. 1: //默认情况下参数会按照值传递 2: static int a ...

  2. ios -Unity3D的EasyAR集成到已经有项目中。

    近期 在做AR这一块,用EasyAR集成到iOS端,由于现在到项目已经上线,下一版本要做一个AR功能,于是迫于需求需要,自己研究和翻阅读好多集成到资料. 通过整理分出几个重要到模块,其中在这里指出Xc ...

  3. Python基础---python中的异常处理

    Python中的异常处理 一.什么是异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关) ...

  4. struts2的简单执行过程

    struts2是最近刚学的一个框架,想通过写篇文章来加深下印象,这也是本篇博文产生的由来,下面进入正题 Struts2本身是一个挺简单的框架,我们通过写一个登陆的过程来具体描述下其执行过程 1.首先我 ...

  5. iOS打包静态库(完整篇)

    1. 什么是库? 所谓库就是程序代码的集合,是共享程序代码的一种方式. 2. 库的分类 根据程序代码的开源情况,库可以分为两类 开源库源代码是公开的,你可以看到具体实现.比如GitHub上比较出名的第 ...

  6. .NET自带缓存机制实例

    using System;using System.Web;using System.Web.Caching;using System.Collections.Generic;using System ...

  7. 赢在面试之Java泛型篇(十二)

    139. Java中的泛型是什么 ? 使用泛型的好处是什么? 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数. 好处: 1.类型安全,提供编译期 ...

  8. 最强离线安装MySQL_8.0.2方法

    最强离线安装MySQL_8.0.2方法,一次就能安装成功. 按照此方式,离线安装MySQL五分钟都花不到,节省了大量的宝贵时间. 前戏,假设你已经从MySQL官网中获取了下面这个压缩包: 解压之后变成 ...

  9. mongodb数据库禁止外网访问以及添加账号

    未曾料到被黑客勒索比特币的戏码竟然降临到我的身上,几个月的技术积累付之一炬.怪只怪自己学艺不精,心存侥幸和无知,不过经此一役,方知网络安全防护的重要性. 一直未给自己的mongodb数据库设置账号密码 ...

  10. SVN服务器

    什么是SVN服务器? 1.协助多人开发的代码管理器: 2.会记录代码是谁写的,并且可以回退到任意版本: 3.冲突解决: 4.升级(项目分支). SVN的搭建: 1.在服务器端下载SVN服务器,一个项目 ...