Sql开发技巧

原文:Sql开发技巧

简介

本文主要介绍下述几个技巧:

  • 使用Row_Number分页
  • 事务
  • 根据条件刷选记录的技巧

分页

主要是使用了Row_Number()这个函数。一般如下:

declare @PageSize int;
declare @StartIndex int;

with MyTable_Paged as(
    select
        Row_Number() over(order by col_1) as '',
        *
    from
        MyTalbe
    where
        condition
)
select * from MyTable_Paged

where RowNumber between StartIndex and StartIndex+@PageSize-1

事务

这个在复杂的sql语句中经常用,尤其配合存储过程。能够使一个操作原子化,防止只执行部分的操作。(当一个存在过程在执行的时候,是一条一条语句执行的,当出现错误的时候回停止执行,但是如果前面已经执行了一些语句,那么没有事务机制的话,该执行不能够回滚。)

begin try
    begin tran
        sqlstatement
    commit tran
end try
begin catch
    rollback tran
end catch

根据条件刷选记录

这个技巧在于当某一个条件可用可不用的情况下,不必使用众多的if等条件选择语句
比如需要筛选的条件如下:Name,Phone,Email

select * from MyTalbe where
    ([Name]=@Name or @Name is null)
and
    (Phone=@Phone or @Phone is null)
and
    (Email=@Email or @Email is null)
时间: 2024-09-20 01:09:14

Sql开发技巧的相关文章

Struts开发技巧

技巧 Struts开发技巧在经历了<中国电信大客户贴心服务>项目的开发以及目前正在进行开发中的<中国电信总部经营分析>项目,累计了一些对于Struts1.1和Tiles开发的一些技术和技巧,特写出来,方便以后的开发,同时也相信能给读者在开发Struts提供一些帮助模块配置1. Struts配置文件定义对于系统中的某个模块,需要在开发前定义该模块的配置,该struts的配置文件命名为:struts-config-xxx.xml xxx为模块的小写英文名或缩写,如:struts-con

mysql 开发技巧之JOIN 更新和数据查重/去重_Mysql

主要涉及:JOIN .JOIN 更新.GROUP BY HAVING 数据查重/去重 1 INNER JOIN.LEFT JOIN.RIGHT JOIN.FULL JOIN(MySQL 不支持).CROSS JOIN 这是在网上找到的非常好的一篇博文,图解 join 语句: CODING HORROR-A Visual Explanation of SQL Joins 下图可以很清楚的明白,join 的数据选取范围 [][1] [1]: yun_qi_img/160725-imooc-mysql

thinkphp开发技巧经验分享

一,常用的系统变量 (1)系统变量:在模板中输出系统变量:包括server.env.session.post.get.request.cookie      {$Think.server.script_name} // 输出$_SERVER变量 {$Think.session.session_id|md5} // 输出$_SESSION变量  {$Think.get.pageNumber} // 输出$_GET变量  {$Think.cookie.name}  // 输出$_COOKIE变量 以

SQL优化技巧指南_MsSql

对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描 select id from t where num is null 最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库. 备注.描述.评论之类的可以设置为 NULL,其他的,最好不要使用NULL. 不要以为 NULL 不需要空间,比如:char(100) 型,在字段建立

Cardboard虚拟现实开发技巧(一)之放置一个固定在视野中的物体

Google Cardboard 虚拟现实眼镜开发技巧(一)之放置一个固定在视野中的物体 利用CardboardMain下的Head轻松放置一个固定在视野中的物体 大家知道在游戏开发中,我们经常会需要放置一些操作面板啊,血量槽啊,比如CS中的枪械,子弹,血量等等,这些UI因素是应该永远显示在用户视野当中的,而不是一转头就看不到自己的血量了. 这个问题在传统的Unity游戏开发中自然是小菜一碟,但是在虚拟现实应用里就不一样了,我们的手机屏幕被分成了两部分,所以这些UI也应该是相应的分离显示,而如果

数据库SQL开发的一些要点

前段时间做一个项目,其中涉及到报表部分编写了大量复杂的SQL,比如其中的一个存储过程就有700多行.项目上线过后,进入维护阶段,发现大量的SQL很难维护.于是总结点经验教训: 设计 一.数据库命名遵循一些通用规范. 数据库命名规范是个基本的命名标准,每个团队都有自己的命名规范,我们做项目中以全大写下划线分割作为标准.表名或字段名要准确表达其业务含义.以DATE结尾的数据类型都是date类型,以TIME结尾的数据类型是datetime类型.以IS开头的都是bool类型. 二.大数据对象列应该独立成

在PL/SQL 开发中调试存储过程和函数的一般性方法

存储过程|函数 在PL/SQL 开发中调试存储过程和函数的一般性方法摘要: Oracle 在PLSQL中提供的强大特性使得数据库开发人员可以在数据库端完成功能足够复杂的任务, 本文将结合Oracle提供的相关程序包(package)以及一个非常优秀的第三方开发工具来介绍在PLSQL中开发及调试存储过程的方法,当然也适用于函数. 版权声明: 本文可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息.原文出处: http://www.aiview.com/notes/ora_using_

蛙蛙推荐:整理了一些SQL数据库技巧,贴一下

技巧|数据|数据库 蛙蛙推荐:整理了一些SQL数据库技巧,贴一下 一.怎样删除一个表中某个字段重复的列呀,举个例子表[table1]id name1 aa2 bb3 cc1 aa2 bb3 cc我想最后的表是这样的id name1 aa2 bb3 cc回答:将记录存到临时表#t中,重复的记录只存一条,然后将临时表#t中的记录再存回原表中,注意"select distinct id,class,name"要包含你需要的所有字段,否则有些字段就被删掉了.在查询管理器里执行下面代码:----

SQL开发中容易忽视的一些小地方(二)

目的:继上一篇:SQL开发中容易忽视的一些小地方(一) 总结SQL中的null用法后,本文我将说说表联接查询. 为了说明问题,我创建了两个表,分别是学生信息表(student),班级表(classInfo).相关字段说明本人以SQL创建脚本说明: 测试环境:SQL2005 CREATE TABLE [dbo].[student]( [ID] [int] IDENTITY(1,1) NOT NULL, [sUserName] [nchar](10) COLLATE Chinese_PRC_CI_A