[code]declare @startdt datetime
declare @enddt datetime
select @startdt='2009-12-03',@enddt='2009-12-05'
select * from tb
where 开始日期 between @startdt and @enddt
or 结束日期 between @startdt and @enddt
or @startdt between 开始日期 and 结束日期
or @enddt between 开始日期 and 结束日期[/code] ......
HO~HO~EXCEL生成SQL建表存储过程的VBA脚本^_^赞一下
2007-12-11 10:39
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 全局变量定义
Const MAX_COLUMN_NUM = 50
Dim stOutputPath As String
Dim stOutputFile As String
Dim stDBName As String
Dim stUserName As String
Dim stUserPasswd As String
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Set InitProcess初始化过程
Public Sub InitProcess()
'初始化输出文件夹
stOutputPath = Application.ThisWorkbook.Path + "\OUTSQL\"
'初始化数据库名
stDBName = Worksheets("首页").Cells(1, 2).Value
If stDBName = "" Then
MsgBox "数据库名不能为空"
Exit Sub
End If
'初始化输出文件名
stOutputFile = stOutputPath & stDBName & "Create.sql"
......
一、SQL拼写建议 1、查询时不返回不需要的行、列 业务代码要根据实际情况尽量减少对表的访问行数,最小化结果集,在查询时,不要过多地使用通配符如:select * from table1语句,要用到几列就选择几列,如:select col1,col2 from table1;在可能的情况下尽量限制结果集行数如:select top 100 col1,col2,col3 from talbe2,因为某些情况下用户是不需要那么多的数据的。 2、合理使用EXISTS, NOT EXISTS字句 如下所示: SELECT SUM(T1.C1) from T1 WHERE ((SELECT COUNT(*) from T2 WHERE T2.C2=T1.C2)>0) SELECT SUM(T1.C1) from T1 WHERE EXISTS(SELECT * from T2 WHERE T2.C2=T1.C2) 两种产生相同的结果,但是后者的效率显然要高过于前者。银行后者不会产生大量锁定的表扫描或是索引扫描。 经常需要些一个T_SQLL语句比较一个父结果集和子结果集,从而找到是否存在在父结果集中有而在子结果集中乜嘢的记录,如: SELECT _a.hdr_key from hdr ......
最近,因为项目的原因,需要设计一个数据库,该数据库的功能主要是描述文件系统的结构和文件信息,在网上找了很多的资料,但是许多设计要么针对查询量比较多的来做,要么针对修改、插入量比较多的来做,而对于文件系统而言,它的查询、插入、修改都是相当频繁的,因此,数据库的设计极其重要,现将自己的一点想法说说,希望大家能够给一点意见啊!!
一开始,为了尽快拉出原型系统,我采用了name(本结点),parent(父节点),ancestor(祖先结点) 来描述其结构,然后采用递归算法去对数据库进行操作,这样,功能基本可以完成,但是,实在担心在文件夹深度过高时数据库承受不了这样的负担,于是,在寻找解决办法。
第一种方法,改进SQL语句逻辑:这种方法对于现有数据库设计和程序设计而言,应该说优化工作量是最小的,但是,本人还没有测试过不知是否可行,先写出来,整理思路:
通过系统功能和数据库结构的分析,功能操作无非是对文件复制、移动、删除、新建等,而这些功能的主要问题是对文件夹进行类似操作时,怎样同时修改其子孙结点的相关信息,这也是我递归的原因。后仔细观察数据库的数据发现查询结点的子孙结点 ......
最近在找一次sql查询的无限分类查询的设计,网上找了一下这个数据表的设计很有特色,
不用递归,依靠个简单SQL语句就能列出菜单,看看这个数据表怎么设计的,并对下面的数据表结构的查询进行分析.
数据库字段大概如下:
-----------------------------------------------------------------------------------
id 编号
fid 父分类编号
name 分类名
path 分类路径,以 id 为节点,组成类似 ,1,2,3,4, 这样的字符串
----------------------------------------------------------------------------------
可以假设有如下的数据
id fid name path
----------------------------------------------------
1&nb ......
语句:select rank() over(Order By 表的主键 Desc) As UID ,其他列 from 表
说明:rank函数
作用:
返回指定元组在指定集中的排名(排名从 1 开始)
Rank(Tuple_Expression, Set_Expression [ ,Numeric Expression ] )
参数:
Tuple_Expression
一个有效的多维表达式 (MDX) 元组表达式,用于指定要计算排名的元组。
Set_Expression
一个有效的 MDX 集表达式,用于指定包含指定元组的集。
Numeric_Expression
有效的 MDX 数值表达式。 ......