
SQLserver
jhlovett
这个作者很懒,什么都没留下…
展开
-
给定一个日期,确认是本月的第几周
select * from workplan where (select DATEPART(wk,w_time)-DATEPART(wk,DATEADD(dd,-day(w_time),w_time))+1 )='3' order by w_time desc原创 2010-06-02 17:10:11 · 363 阅读 · 0 评论 -
一条语句简单解决“每个Y的最新X”的SQL经典问题
“每个Y的最新X”是一个经典的SQL问题,工作中经常碰到。当然不是“按Y分组求最新的X值”那么简单,要求最新X的那条记录或主键ID。用一条SQL语句可以简单的解决此问题。生成实例表和数据:--创建表CREATE TABLE dbo.Tab ( ID int NOT NULL IDENTITY (1, 1), Y varchar(20) NOT NULL, ...2009-07-30 23:51:15 · 103 阅读 · 0 评论 -
数据库优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from ...原创 2009-07-30 18:27:51 · 93 阅读 · 0 评论 -
MSSQL按照日期来搜索记录的问题(按日期模糊查询)
假设文本框日历控件选择的是2008-09-01日,从c#到数据库格式会转换成:2008-09-01 00:00:00:000,该查询是查不到当天所有数据的,而且用一方的like方式也是没有办法查到的用=更不可能了,如:where riqi like '%2008-09%' --或者: where riqi ='2008-09-01' 必须得先把riqi列转化成字符串后方可查...原创 2009-07-30 16:21:40 · 632 阅读 · 0 评论 -
通过SQL语句向自增字段的ID列插入ID
通过一些方法生成的对某张表数据的insert语句时,往往会是: insert brand(id,name) values(1,'技嘉') 但是往往我们的数据表中id字段是自增的,这就导致在执行这一语句的时候会产生错误:引用消息 8101,级别 16,状态 1,第 1 行 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'brand '中的标识...2009-07-29 17:34:55 · 1936 阅读 · 0 评论 -
Select into 和 insert into select 两种表复制语句区别
select * into destTbl from srcTblinsert into destTbl(fld1, fld2) select fld1, 5 from srcTbl 以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的。 第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。 第二句(insert...2009-07-29 17:22:04 · 89 阅读 · 0 评论 -
查询SQL语句的执行速度
在各个select语句前加: declare @d datetime set @d=getdate() 并在select语句后加: select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate()) declare @d datetimeset @d=getdate()select * from zzxselect [语句执行花费时间(毫秒)]=d...2009-07-29 17:03:58 · 459 阅读 · 0 评论 -
重置表的自增字段
刚刚在转移数据的时候要用到的,上网查了一下,特此记录 --删除原表数据truncate table tb_producttype --truncate方式也可以重置自增字段-- 重置表的自增字段DBCC CHECKIDENT (tb_producttype,reseed,0) 要注意的就是重置之前得先删除原表的数据,还有,如果是用truncate删除原表数据的话那么...2009-07-29 15:58:41 · 286 阅读 · 0 评论 -
SQL数据库中查询某一字段以汉字开头的记录
select * from tb_product where proname like N'[啊-座]%' 在计算机中的汉字表中,“啊”是第一个汉字,“座”是最后一个汉字, 举个例子:[A-Z]表示字母A到字母Z中的任意一个字符,那[啊-座]就表示汉字中的任意一个...2009-07-29 15:21:14 · 1991 阅读 · 0 评论 -
SQL Server下无限多级别分类查询解决办法(简单查询树形结构数据库表)
在开发中经常会遇到无限级分类的问题,最常见的是一些无限级目录之类的,如果你对SQL Server还不是太熟悉或者还不太熟悉SQL语言的话,这将是一件很困难的事情,也许你最后能实现类似的功能,不过可能花费的时间很长,效率也不是很理想,下面的示例也许能给你一个启示。 CREATE TABLE [dbo].[Tree] ( [ID] [int] IDENTITY (1, 1) NOT NU...2009-07-30 23:56:50 · 370 阅读 · 0 评论 -
查询置顶,热门,推荐,最新的20条记录
表结构: --查询置顶:news_IsTop,热门:News_IsHot,推荐:news_IsBest,最新的20条记录select top 20 * from y_news order by news_IsTop desc ,News_IsHot desc,news_IsBest desc,news_id desc 实际上:news_IsTop,热门:News_Is...2009-07-31 08:37:35 · 123 阅读 · 0 评论 -
根据路线分类查找该分类下热门(点击量高的)路线信息的两种方式
--根据路线分类查找该分类下热门(点击量高的)路线信息的两种方式select top 10 * from Tab_TouristTrack tt,Tab_touristTrackCategory tcwhere tt.routeCategory=tc.id and routeParent=1 order by click desc,id descselect to...2009-09-02 17:49:24 · 201 阅读 · 0 评论 -
NVARCHAR 和VARCHAR区别和使用
1、各自的定义: ► nvarchar(n) : 包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。 ► varchar[(n)]: 长度为 n 个字节的可变长度且非 Unicode 的字符数据...原创 2009-08-21 20:37:37 · 156 阅读 · 0 评论 -
SQL Order By
到目前为止,我们已学到如何藉由 SELECT 及 WHERE这两个指令将资料由表格中抓出。不过我们尚未提到这些资料要如何排列。这其实是一个很重要的问题。事实上,我们经常需要能够将抓出的资料做一个有系统的显示。这可能是由小往大 (ascending) 或是由大往小(descending)。在这种情况下,我们就可以运用 ORDER BY这个指令来达到我们的目的。 ORDER BY ...原创 2009-08-19 17:40:31 · 138 阅读 · 0 评论 -
异常:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。 (SQL2000转到2005)...
某一天,在调试程序时突然发现,在附加数据库后,想添加关系表,结果出来了下面的错误:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象。按照第一种方式更改怎么也不行,并且文件的所有者也是sa。在csdn中找了半天,有个同志给出了第二...2009-08-17 19:50:52 · 154 阅读 · 0 评论 -
Sql Server 常用日期格式
进来因为开发原因,经常需要使用日期方面的比较和操作,整理了一下这方面的资料,供大家共享:SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() 2004-09-12 11:06:08.177整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 举例如下: select C...2009-08-15 21:16:22 · 153 阅读 · 0 评论 -
SQL优化34条
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表...2009-08-12 12:10:51 · 86 阅读 · 0 评论 -
论坛或相册上一条、下一条查询方式
--上一条select top 1 * from table_name where id < 8 order by id desc--下一条select top 1 * from table_name where id > 8 order by id asc--8为你当前记录的ID select max(id) from where id<8 ...2009-08-04 10:26:18 · 101 阅读 · 0 评论 -
SQL分组查询做相关统计
根据项目名称分组得到相关数据统计 select row_number() over(order by lxmc) as 编号, lxmc 项目名称,sum(ssj) as 单价,sum(sdj) as 订单价,sum(hzs) as 成本价,sum(hjs) as 折扣价,isnull(sum(ssf),0) as 批发价, count(lxmc) as 数量 from Y_gcdak ...2009-08-01 11:26:22 · 158 阅读 · 0 评论 -
查询最近7天,阅读数量最大的20个帖子
当Select语句有Where的范围条件以及Order By时的索引字段顺序问题 比如查询最近7天,阅读数量最大的20个帖子。 select top 20 * from t_article where datetime>DATEADD(day,-7, getdate()) order by countView desc countView-->点击数,t_a...2009-07-28 17:47:13 · 148 阅读 · 0 评论 -
配置SQL Server2005以允许远程访问
1、以“window身份验证”打开sql server 2005的管理器(microsoft sql server manager studio) 2、打开数据库组属性 选中“sql server 和 windows身份验证模式”: 3、设置一个账号的访问权限,以 sa 为例 4、打开sql server 的配置管理器...2009-07-18 08:45:40 · 138 阅读 · 0 评论 -
关于sql时间处理的一些小示例
DAY函数:返回一个整数,表示指定日期天的DatePart(时间)部分此函数等价于 DATEPART(dd, date)。返回类型为int --示例:SELECT DAY('03/12/1998') AS 'Day Number';GO--下面是结果集: Day Number ------------ 12 在下面的示例中,日期被指定为数...2009-07-12 10:27:48 · 140 阅读 · 0 评论 -
SQL Server 2005 中的架构与用户
从 SQL Server 2005 开始,每个对象都属于一个数据库架构。数据库架构是一个独立于数据库用户的非重复命名空间。您可以将架构视为对象的容器。可以在数据库中创建和更改架构,并且可以授予用户访问架构的权限。任何用户都可以拥有架构,并且架构所有权可以转移。 首先我们从安全对象来了解架构: 如图1: 使用图形表示,这样我们更能方便的了解架构,和她在安全对象...2009-10-29 13:33:03 · 274 阅读 · 0 评论 -
查询时间段数据问题
问题:select * from dbo.Tab_Article where ADate between '2009-09-14' and '2009-09-14' 假设前台文本框日历控件选择的开始是2009-09-14并且选择结束时间是2009-09-14, 那么只会查询出2009-09-14 0:00:00.000至2009-09-14 0:00:00.000的时间段数...2009-10-25 23:01:09 · 176 阅读 · 0 评论 -
sql 查询当天,本月,本周的记录
--查询当天:select * from info where DateDiff(dd,datetime,getdate())=0--查询24小时内的:select * from info where DateDiff(hh,datetime,getDate())<=24--info为表名,datetime为数据库中的字段值 --查询当天...2009-10-25 22:00:55 · 134 阅读 · 0 评论 -
MSSql基本语句
下列语句部分是Mssql语句,不可以在access中使用(这是在一个网页上转的,作者我也不知道)。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句:...2009-10-22 22:23:55 · 140 阅读 · 0 评论 -
SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)...
最近公司在招人,同事问了几个自认为数据库可以的应聘者关于库连接的问题,回答不尽理想~现在在这写写关于它们的作用假设有如下表: 一个为投票主表,一个为投票者信息表~记录投票人IP及对应投票类型,左右连接实际说是我们联合查询的结果以哪个表为准~1:如右接连 right join 或 right outer join: 我们以右边voter表为准,则左表(voteMaster...原创 2009-10-12 14:30:48 · 247 阅读 · 0 评论 -
有重复数据时只显示一条记录
if not object_id('tempdb..#T') is null --判断是否存在临时表#Tdrop table #T --如果存在则删除gocreate table #T --#T是一个临时表,创建存储在系统数据库的tempdb数据库中,用了以后重启数据库服务就会释放.( [id] int, [name] varchar(1), [memo] va...2009-10-12 10:26:02 · 602 阅读 · 0 评论 -
sql中CASE两种用法
方法一: select (case TitleOfCourtesy when 'Ms.' then '女士' when 'Mr.' then '男士' else '' end) as TitleOfCourtesy from dbo.Employees 方法二: select (case when TitleOfCourtesy = 'Ms.' then '女士' w...2009-10-09 19:14:32 · 124 阅读 · 0 评论 -
相当相当相当简单的SQL注入
string s="' or 1=1 --";string sql = String.Format("select * from table where username='{0}' and userpassword='{1}'", s, null); 该字符串结果: select * from table where username='' or ...2009-04-18 19:43:01 · 88 阅读 · 0 评论 -
配置SQL Server2005以允许远程访问(二)
在链接数据库的时候,提示一个错误!错误信息如下!在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error:40 - 无法打开到 SQL Server 的连接)我是现装了SQL Server2000 后 在装SQL Server2005的,网上有很多解决方...2009-05-09 16:49:25 · 116 阅读 · 0 评论 -
查找表中重复的行与删除表中重复的行
查找表中重复的行: select * from tb_producttype where protname in(select protname from tb_producttype group by protname having count(*)>1 ) 删除表中重复的行: delete from tb_producttype where ...2009-05-29 22:12:54 · 117 阅读 · 0 评论 -
SQL跨数据库查询
数据库1:AAA 数据库2:BBB 数据库名和表名之间放两个点 select * from [AAA]..TableA a inner join [BBB]..TableB b on a.AcountID = b.ClientID 注意:必须是单个Sql实例!...2009-07-11 22:45:11 · 543 阅读 · 0 评论 -
sql根据日期处理
获取日期周数:select datename(week,getdate()) SQL codeDECLARE @dt datetimeSET @dt=GETDATE()DECLARE @number intSET @number=3--1.指定日期该年的第一天或最后一天--A. 年的第一天SELECT CONVERT(char(5),@dt,120)+'1-1'--B. 年的最后一天SEL...2009-07-06 20:07:14 · 133 阅读 · 0 评论 -
精妙SQL语句
1. 说明:复制表(只复制结构,源表名:a,新表名:b) 注意:只能复制表的字段,不能复制主键、索引等 --由于有where 1<>1,只复制表结构:select * into b from a where 1<>1--复制表:select * into b from aCREATE TABLE dest AS SELECT * FRO...2009-07-03 11:21:56 · 143 阅读 · 0 评论 -
在SQL Server中通过SQL语句实现分页查询
存储过程:CREATE PROCEDURE PrcTest -- 获得某一页的数据 -- @currPage int = 1, --当前页页码 (即Top currPage) @showColumn varchar(2000) = '*', --需要得到的字段 (即 column1,column2,....原创 2009-07-01 12:34:58 · 156 阅读 · 0 评论 -
行列转换等经典SQL语句
在企业应用中,经常会开发报表系统,而在报表中又经常用到行列转换,这里有一个经典的应用实例:原表: 姓名 科目 成绩 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 物理...2009-06-27 19:41:49 · 99 阅读 · 0 评论 -
sql多表连接查询inner join, left join , right join ,full
inner join,full outer join,left join,right jion内部连接 inner join 两表都满足的组合full outer 全连 两表相同的组合在一起,A表有,B表没有的数据(显示为null),同样B表有A表没有的显示为(null)A表 left join B表 左连,以A表为基础,A表的全部数据,B表有的组合。没有的为nullA表 rig...2009-06-21 13:54:02 · 146 阅读 · 0 评论 -
数据库设计14个技巧
1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。 这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员...原创 2009-06-18 16:25:54 · 94 阅读 · 0 评论 -
SQL分页语句及简单的SQL分页存储过程
假分页:从数据库中选择所有的记录后再进行分页 真分页:只从数据库中选择当前页的记录 select top 每页显示的记录数 * from topic where id not in (select top (当前的页数-1)×每页显示的记录数 id from topic order by id desc) order by id desc ...2009-06-05 10:55:33 · 175 阅读 · 0 评论