`
chenxueyong
  • 浏览: 341921 次
  • 性别: 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

分享到:
评论

相关推荐

    大型数据库开发技巧与原则

    【大型数据库开发技巧与原则】 在当今信息化社会,数据库已成为支撑各类系统运行的关键部分,尤其在大型系统中,数据库的设计质量直接影响着系统的性能和稳定性。本文将探讨大型数据库开发的一些核心原则和实用技巧...

    数据库开发的三十六个军规

    SQL类军规则是数据库开发中最为具体的一类,涉及到SQL语句的编写技巧。这包括了避免使用大事务、大SQL语句和大批量操作,因为这些都可能导致数据库性能下降,甚至造成灾难性的后果。在SQL类军规中,还提到编写高效的...

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

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

    MS SQL SERVER 数据库技巧总结

    在IT行业中,MS SQL Server是微软公司开发的关系型数据库管理系统,广泛应用于企业级数据存储、管理和分析。本篇文章将深入探讨一些MS SQL Server的关键数据库技巧,帮助你优化工作流程,提高效率。 一、查询优化 ...

    浅谈SQL Server数据库应用技巧.pdf

    总结而言,高性能的SQL Server数据库应用需要经过精心设计,这包括合理的数据库结构设计、高效的索引策略制定以及对数据库系统的持续监控和调优。一个应用系统是否能够达到最优的性能,取决于其能否充分利用数据库...

    VC做数据库开发

    ### 使用VC进行数据库开发的关键知识点 ...掌握了这些基础知识后,可以进一步深入学习更复杂的数据库应用程序开发技巧。此外,了解ODBC的灵活性和兼容性有助于开发者在未来面对不同数据库管理系统时更加得心应手。

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

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

    浅谈数据库设计技巧-程序员应该读的

    数据库设计是软件开发过程中的关键环节,尤其是在大数据和云计算时代,高效、稳定、灵活的数据库设计对于系统的性能、可扩展性和数据安全性具有决定性影响。本文将深入探讨数据库设计的一些重要技巧,帮助程序员提升...

    数据库编程实用技巧集锦

    本文档汇总了针对SQL Server数据库的一系列实用技巧,涉及从安装过程中的常见问题处理到数据库维护的各个方面,旨在帮助数据库管理员和开发人员更高效地管理与操作数据库。 #### 安装时提示有挂起的操作 在安装SQL...

    dot NET数据库开发技术

    总结,.NET数据库开发技术涉及广泛,从基本的ADO.NET到现代的Entity Framework,从数据库设计到性能调优,每个环节都至关重要。通过深入学习并掌握这些技术,开发者可以构建出高效、稳定的数据库系统。

    数据库与MapView总结

    此外,可能还介绍了优化数据库查询性能、提高地图渲染效率等技巧,这些都是提高用户体验的关键。 标签“源码”和“工具”暗示了这篇博客可能包含了示例代码和实用工具,帮助读者更好地理解和实践这些概念。源码部分...

    提高Java开发数据库效率的技巧.pdf

    总结起来,文件内容强调了Java在数据库开发中的重要性和效率问题。详细介绍了提升Java开发数据库效率的技巧,以及JDBC的使用和优化。同时,提出了理论与实践相结合的必要性,并提示了数据库优化的注意事项。

    数据库设计总结(设计方法,设计技巧)

    数据库设计是信息系统开发过程中的关键环节,它直接影响到系统的性能、可扩展性和数据一致性。本文将深入探讨数据库设计的方法和技巧,旨在为开发者提供实用的指导。 首先,我们需要理解数据库设计的基本概念。...

    Delphi7.0+Rose2003数据库项目开发实践:实例4

    在数据库开发方面,Delphi支持多种数据库引擎,如InterBase、Oracle、MySQL等,通过ADO(ActiveX Data Objects)或BDE(Borland Database Engine)等数据访问技术,实现了对数据库的强大支持。 Rational Rose 2003...

    vb连接数据库常用代码总结

    在VB(Visual Basic)编程中,连接数据库是常见的任务,尤其在开发数据驱动的应用程序时。本篇文章将详细总结几种常用的VB连接数据库的方法,重点讨论动态连接和相对路径控制数据库的技术,以及如何利用控件如...

    SQL数据库设计的各种小技巧

    根据给定的信息,我们可以总结出以下关于SQL数据库设计的小技巧及关键知识点: ### SQL数据库设计的小技巧 #### 技巧一:确保数据的一致性和完整性 - **描述**:在设计数据库时,需要确保所有数据都保持一致且完整...

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

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

    PHP与MySQL数据库 WEB开发教程.zip

    总结一下,本教程涵盖了PHP和MySQL的基础知识,包括它们在Web开发中的应用、如何使用PHP连接和操作MySQL数据库,以及通过实例代码和学习笔记来深化理解。对于想要进入Web开发领域的学习者,这是一个很好的起点,将...

    关系数据库设计经验(总结经验)

    通过深入理解业务、采用面向对象思维、关注用户体验、规划可扩展性和维护性,以及应用最佳设计技巧,我们可以创建出更高效、更符合用户需求的数据库系统。这些经验和技巧是数据库设计者不断积累和提炼的宝贵财富,...

Global site tag (gtag.js) - Google Analytics