`
chenxueyong
  • 浏览: 336716 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

数据库开发技巧总结

阅读更多

 1.多条件查询
多条件查询在实际应用中用的很多,在一些页面上会要求根据时间,类别,或是其他的一些关键字来查询数据,而且这些条件并不是一定要输入的。以前有过在C#代码中根据条件选中的情况来拼where条件字串,也有过在存储过程中用if来判断传进的参数,但是后来知道早存储过程中使用OR是最简单的,如下:


create Table Users
(
    id int,
    name nvarchar(20),
    age int
)

create proc sp_SGetUserInfo
(
  @Name nvarchar(20),
  @Age int
)
as
select
    *
from
    Users
where
    (@Name='' or name=@Name)
and
    (@Age='' or age=@Age)
 

2.使用isnull
对于传进的参数有可能为空或是null的情况,isnull就很有用了。 通常可以这样来判断


ISNULL(@Name,'')  --如果参数@Name为null,则返回''
 

3.在数据库中几个常用的日期格式转换
日期格式转换也是经常用到的,通常2008-04-12和20080412 这两种格式用的比较多,下面列出一些常用的:


CONVERT(VARCHAR(10),GETDATE(),120)
--返回-04-12
CONVERT(VARCHAR(10),GETDATE(),20)
--返回-04-12
CONVERT(VARCHAR(10),GETDATE(),112)
--返回
CONVERT(VARCHAR(10),GETDATE(),111)
--返回/04/12
 

4.取指定字符串中两个字符 中间的字符串


declare @str1 nvarchar(20)
declare @str2 nvarchar(20)
declare @str3 nvarchar(20)
set @str1 = 'ABCDEFGH'
set @str2 = 'ab'
set @str3 = 'f'

declare @a int  ,@b int
set @a=CHARINDEX(right(@str2,1),@str1) --第二个字符串的最后一个字符的索引
set @b=CHARINDEX(left(@str3,1),@str1)  --第三个字符串的第一个字符的索引

--结果取得是第二个字符串和?第三个字符串中间的字符
select substring(@str1,@a+1,@b-@a-1) 
 

5.一个实现拆分由特殊符分隔的字符串的函数


Create   FUNCTION split
(
  @StrAll varchar(8000),
  @StrSeprate varchar(10)
)
RETURNS @temp TABLE(F1 VARCHAR(100))   
AS
BEGIN
    DECLARE @i INT
    SET @StrAll =rtrim(ltrim(@StrAll ))
    SET @i=charindex(@StrSeprate,@StrAll )
    WHILE @i>=1
    BEGIN
        INSERT @temp VALUES(left(@StrAll ,@i-1))
        SET @StrAll =substring(@StrAll ,@i+1,len(@StrAll )-@i)
        SET @i=charindex(@StrSeprate,@StrAll )
    END
    IF @StrAll <>''
    INSERT @temp VALUES(@StrAll )
    RETURN
END
 

6.取出数据库中所有的表名


select name as  tablename from sysobjects where type='U' and name<>'dtproperties'
 

7.sqlserver中取随机数的两种方法
a.创建一个表Rand,字段是:RandomNum ,存储0到9的数据。
使用下面SQL语句可产生随机数:


select top 1 RandomNum from Rand order by NewID()
 

b.使用sqlserver提供的Rand()函数


elect cast( floor(rand()*N) as int)
--产生到N-1之间的随机数
select cast(ceiling(rand() * N) as int)
--产生到N之间的随机数
 

8.数据库中的集合运算(交, 并 ,差)
先创建示例表


create table T1
(
    id int
)

create table T2
(
    id int
)
insert T1
select 1 union all
select 2 union all
select 3 union all
select 4

insert T2
select 3 union all
select 4
 

运算代码:


--交集
----------------------------------------------
--方法
select *  from T1
intersect
select * from T2
--方法
select distinct
    * 
from
    T1
where
    T1.id in (select id from T2)
--方法
select distinct
    *
from
    T1
where exists(select id from T2 where T2.id=T1.id)

--in和exists 的不同是in只能判断唯一列,而exists可以判断多列
---------------------------------------------------

--并集
select *  from T1
union all
select * from T2
----------------------------------------------------
--差集
select *  from T1
except
select * from T2
 

返回结果就不写了,呵呵,大家运行一下就知道了。

9 在sqlserver实现除法

通常情况下在用sql语句写除法得到的都是整数部分


select 29/3
--结果为
 

用下面的方法可以得到小数


--定义结果变量为Decimal类型
declare @result decimal(18,2)
--关键在于除数要乘以1.0
set @result=cast((29*1.0)/3  as decimal(18,2))
select @result
--结果为9.67
 

10 SqlServer 中根据时间得到星期


select datename(weekday,'2009-06-19') 
--结果星期五

select DATEPART(dw,'2009-06-19')
-- 结果6

--因为系统默认星期天为一个星期的第一天,所以星期五对应的值为
 

11 使用sql语句设置表主键


alter table TableName alter column ColumnName int not null
go 
alter table TableName add constraint pk_ColumnName primary key(ID)
 

12 SCOPE_IDENTITY @@IDENTITY IDENT_CURRENT的区别


--SCOPE_IDENTITY和@@IDENTITY都返回上面操作的数据表最后row的IDENTITY 列的值
--不过SCOPE_IDENTITY受到作用域的限制,@@IDENTITY不受作用域的限制
/*
    如有T1和T2两种?表?,在?表?T1中有一insert触发器,当在表T1中插入一条数据时,触发
    器被激发,在T2表中插入一条数据,这时就存在两个作用域,T1 和T2 ,这时如果在
    T1的insert语句后执行SCOPE_IDENTITY() 和@@IDENTITY将返回不同的值
    SCOPE_IDENTITY 返回的是T1的IDENTITY
    @@IDENTITY 返回的是T2的IDENTITY
*/
select SCOPE_IDENTITY()
select @@IDENTITY

--返回指?定表中的最后一个identity的值
select IDENT_CURRENT('TableName')
 

13 truncate和delete的区别


--delete 和truncate的作用作用都是将指定表中的数据清除,但两种方法有很大的区别

--delete语句是dml,这个操作会放到?rollback segement中
--事务提交之后才生效,如果有相应的trigger,执行的时候将被触发
--用delete删除的数据可以找回来
delete from tablename

--truncate是ddl, 操作立即生效,
--原数据不放到rollback segment中,不能回滚. 操作不触发trigger
--所以在使用truncate的时候要特别小心
truncate table tablename
 

14 sqlservr中随机取数据


--MsSql随机取数据
select top 10 * from tablename order by newid()
--Access 随机取数据
select  top 10 *  FROM tablename order by rnd(id)
--mySql 随机取数据
SELECT * FROM tablename order by rand() limit 10

分享到:
评论

相关推荐

    ASP.NET+SQL Server 数据库开发与实例 光盘

    第12章总结性地介绍了ASP.NET数据库系统性能优化和安全知识。本书选材新颖,实例涵盖范围广,具有一定的实用价值,通过本书的学习,可以使读者更好地掌握ASP.NET和SQL Server开发数据库应用程序技术,并将这些技术...

    Oracle数据库开发技巧与经典案例讲解一

    Oracle数据库开发技巧经典案例讲解为Oracle数据库开发配套课程,本课程以讲解真实开发案例的方式,来巩固、强化Oracle数据库开发知识点和技术技巧,通过经典案例来总结开发中常见的错误,从而能够让学员积累开发规范...

    后端开发开发技巧总结与入门常用的技巧总结.docx

    数据库优化:合理设计数据库表结构,尽量减少JOIN操作,使用索引提升查询效率。 代码规范:遵循一定的编码规范,如PEP8(Python)、Google Java Style Guide等,保持代码整洁易读。 异常处理:对可能出现异常的...

    JDBC连接数据库经验技巧集萃

    JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。本文主要集合了不同数据库的连接...

    敏捷数据库技巧英文版Agile Database Techniques

    第一部分描述数据专业人员和对象专业人员所需的基本技能和方法,第二部分介绍进行渐进式数据库开发的方法,第三部分概述有效地结合使用对象技术、关系数据库技术和XML技术撤离法,第四部分总结如何成功地采用本书所...

    ASP.NET数据库系统开发源码

    第三部分:数据库编程,通过建设多个精悍的案例,全面系统地讲述ASP.NET调用和使用数据库的方法和技巧。第四部分:应用案例,通过完整、实用的项目,循续渐进地阐述如何使用Web三层结构来开发网络应用系统。第五部分...

    爬虫开发技巧总结和入门教程知识点总结.docx

    在实际开发中,爬虫开发的具体应用场景广泛且多样化,因此除了上述基础知识外,还需要...大数据处理与存储:当爬取数据量巨大时,需要了解如何利用Hadoop、Spark等大数据处理工具,以及NoSQL数据库如HBase、Cassandra等

    Visual C++ 数据库系统开发完全手册.part2

    《Visual C++ 数据库系统开发完全手册》(目录) 第一篇 Visual C++编程篇 第1章 Visual C++ 6.0开发环境概述 1.1 Visual C++ 6.0概述 1.2 熟悉Visual C++ 6.0的集成开发环境 1.2.1 进入Visual C++ 6.0环境 1.2.2 ...

    Visual C++ 数据库系统开发完全手册.part1

    《Visual C++ 数据库系统开发完全手册》(目录) 第一篇 Visual C++编程篇 第1章 Visual C++ 6.0开发环境概述 1.1 Visual C++ 6.0概述 1.2 熟悉Visual C++ 6.0的集成开发环境 1.2.1 进入Visual C++ 6.0环境 1.2.2 ...

    数据库设计60个使用技巧

    oracle编程培训内容总结,是入门的好资料,也可以当手册使用,很方便。对于开发的人来说,很实用。

    后端开发关键的后端开发技巧和常用的总结概要.docx

    后端开发常见问题及有效解决方案 一、引言 描述后端开发的重要性 简述本文目的:梳理并探讨后端开发实践中常见的技术挑战及其应对策略 二、基础架构与部署问题 服务器配置与优化 CPU、内存使用率过高 I/O瓶颈 ...

    关于java数据库基本操作

    1、java数据库操作基本流程2、几个常用的重要技巧:·可滚动、更新的记录集·批量更新·事务处理java数据库操作基本流程:取得数据库连接-执行sql语句-处理执行结果-释放数据库连接l、取得数据库连接1)用DriverManager...

    mysql面试题以及相关技巧经验总结(常见错误、常用命令速查手册、开发优化与管理维护、常见面试题、面试技巧、职业规划).zip

    mysql面试题以及相关技巧经验总结(MySQL常见错误及解决方案、MySQL常用命令速查手册、深入浅出MySQL数据库开发、优化与管理维护、常见面试题、面试技巧、职业规划、经验及技巧大汇总)

    ABAP 开发技巧

    区别CALL SCREEN/SET SCREEN/LEAVE TO SCREEN ABAP-SAP的几种(代)出口类型 Web_dynpro-关于WEB...开发注意小技巧 UP TO X ROWS 用法 ABAP的基本的知识 如何使用SMOD和CMOD进行SD的用户增强 ABAP面试题及其解答

    JSP实用技巧集合,jsp编程的一些小技巧总结

    jsp编程的一些小技巧总结,绝对实用。包括JSP编程中常用的js技术。 1.JSP编程中常用的js技术 2. 在下拉列表框里选择一个值后跳出新窗口? 3. 在JSP中启动execl? 4. 两级下拉列表框联动菜单? 5. java中如何把一个目录...

    数据库课程设计.doc

    2、学会从程序设计的方法及要求出发,认真分析题目,做好总体设计,根据要求科学地设计包、类、接口等,正确设计算法,合理安排界面,规范开发过程,仔细调试程序,做好设计总结; 3、充分利用互联网资源,主动寻找...

    Oracle8i_9i数据库基础

    本讲稿(ORACLE8i 数据库基础)是作者在多年的工作和授课中的总结,主要包括两个部分,第一部分是ORACLE SQL*PLUS基础,主要讲述ORACLE 应用系统设计的基本知识和给出一些有用的实例;第二部分是介绍ORACLE PL/SQL知识...

    数据库的设计和优化

    数据库设计和优化方法(个人总结和积累)里面涉及了 存储过程编写经验和优化措施、大型数据库的设计原则与开发技巧、如何让你的SQL运行得更快、数据库设计与开发技巧等,或多或少都会给你带点知识

    移动应用开发技巧以及入门教程知识点总结.docx

    数据持久化:掌握SQLite数据库操作,了解Shared Preferences、Core Data等本地数据存储方式。 JSON解析:能使用Gson、Jackson、JSONModel等进行JSON数据解析与序列化。 GPS定位:了解并实现GPS和网络定位功能,...

Global site tag (gtag.js) - Google Analytics