仓酷云
标题:
MSSQL网站制作之Sql Server 收拾搜集
[打印本页]
作者:
飘灵儿
时间:
2015-1-16 22:28
标题:
MSSQL网站制作之Sql Server 收拾搜集
如果WHERE子句的查询条件里使用比较操作符LIKE和REGEXP,MySQL只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。比如说,如果查询条件是LIKEabc%‘,MySQL将使用索引;如果查询条件是LIKE%abc’,MySQL将不使用索引。server
正在进修SQLServer希冀搜集一些罕见的SqlServer成绩
SqlServer成绩择要
1.兼并多少个表?
形貌:创建一个新表,其字段布局是其他多少个表Join今后的了局。
办理思绪:select*into新表名from旧表1名,旧表2名,……
实例:
--表NewTableName的字段为表titles和titleauthor字段表相加;
---纪录为纪录为select*fromtitles,titleauthor的纪录
select*intoNewTableNamefromtitles,titleauthor
--表NewTableName的字段[title_id,title,au_id]
--纪录为selecta.title_id,a.title,b.au_idfromtitlesa,titleauthorbwherea.title_id=b.title_id
selecta.title_id,a.title,b.au_idintoNewTableNamefromtitlesa,titleauthorbwherea.title_id=b.title_id
2.查询N-M笔记录?
形貌:要从纪录会合掏出两头一段纪录来(如:取10条中的第3-8条)
办理思绪:
1.有关头字或确保独一的候选关头字字段:
办法1:从第n笔记录入手下手取m-n+1条数据
办法2:升序取前m笔记录最为a,再降序从a中取m-n+1笔记录作为b
2.没有上述字段:
增添一个自增字段天生一个一时表,在从一时表中取纪录[Where自增字段名>n-1]
实例:--
--取第4到第7笔记录[对1办法一]
SELECTtop4*FROMjobsWHEREjob_idnotin(SELECTtop3job_idFROMjobs)
--[办法二]
SELECTtop4*FROM
(SELECTtop4*FROM
(SELECTtop7*FROMjobsORDERBYjob_idASC)a
ORDERBYjob_idDESC
)b
ORDERBYjob_idASC
--取第2到第3笔记录[对1办法一]
selectIDENTITY(int,1,1)asiid,*into#temptablefromdiscountsselecttop2*from#temptablewhereiid>=2
3.按年度季度统计汇总?
形貌:统计表employee的各年度各季度的雇仆人数
办理思绪:Groupby和[函数datepart()]
实例:
//季度:quarter
SELECTyear(hire_date)年度,datepart(q,hire_date)季度,count(emp_id)雇仆人数FROMemployee
GROUPBYyear(hire_date),datepart(q,hire_date)
ORDERBY年度,季度
4.随机取n笔记录?
形貌:从表中随机提取n笔记录
办理思绪:依照用Guid
实例:
--从表中随机取5笔记录
SELECTtop5*FROMtitlesORDERBYnewid()
5.求出恣意工夫地点季度的天数?
形貌:如题
办理思绪:注重闰年
实例:
declare@tsmalldatetime
select@t=2001-4-1
selectcasedatepart(quarter,@t)
when1then
(casewhen(year(@t)%4=0andyear(@t)%1000)oryear(@t)%400=0then91else90end)
when2then91
when3then92
when4then92
end
6.求出恣意工夫的季度的第一天?
形貌:如题
办理思绪:以下
实例:
--[思绪:把日期向前推到季度的第一个月确当前号
--注重:5月31号不会推成4月31号,体系主动转为30号
declare@ddatetime
set@d=2003-5-31
select@das指定日期,
dateadd(month,-(month(@d)-1)%3,@d)-day(dateadd(month,-(month(@d)-1)%3,@d))+1as季度的第一天
--[思绪:分离求出年代日在转为日期型]
declare@tsmalldatetime
select@t=2001-9-30
selectcast(cast(year(@t)asvarchar)+-+cast(3*datepart(q,@t)-2asvarchar)+-1asdatetime)
--求以后的日期季度的第一天
selectcast(cast(year(getdate())asvarchar)+-+cast(3*datepart(q,getdate())-2asvarchar)+-1asdatetime)
7.工夫堆叠度的成绩?
出处:http://expert.csdn.net/Expert/topic/2806/2806966.xml?temp=.5277979
形貌:
createtable#a(idintidentity(1,1),date1datetime,date2datetime)
insert#aselect2004-02-2916:45:00,2004-02-2920:45:00
unionallselect2004-02-2918:45:00,2004-02-2922:45:00
unionallselect2004-03-0110:45:00,2004-03-0113:45:00
unionallselect2004-03-0113:45:00,2004-03-0116:45:00
unionallselect2004-03-0113:47:00,2004-03-0114:25:00
unionallselect2004-03-0116:45:00,2004-03-0119:15:00
unionallselect2004-03-0117:45:00,2004-03-0118:55:00
unionallselect2004-03-0118:45:00,2004-03-0121:45:00
select*from#a
我如今要找出工夫上堆叠凌驾1个小时的一切纪录!
好比第1、2条:一个是从16:45---20:45,第二条是从18:45---22:45工夫上堆叠了2个小时,以是这两条都要掏出,别的的也是一样的划定规矩!
date2-date1小于1小时的不必思索,如第5条。能够先删除该条,纪录是按date1排序的!
以是终极的了局要为:
iddate1date2
-----------------------------------------------------------------
12004-02-2916:45:00.0002004-02-2920:45:00.000
22004-02-2918:45:00.0002004-02-2922:45:00.000
62004-03-0116:45:00.0002004-03-0119:15:00.000
72004-03-0117:45:00.0002004-03-0118:55:00.000
办理思绪:
实例:
--计划一:[“victorycyz(中海,干活往了,不在CSDN玩。)”]
selectdistincta.*
from#aa,#ab
wherea.idb.idand
a.date1<b.date2anda.date2>b.date1and
(casewhena.date2>b.date2thenb.date2elsea.date2end)-
(casewhena.date1>b.date1thena.date1elseb.date1end)>1/24.0
--计划二:[“j9988(j9988)”]
select*from#aAwhere
exists(select1from#a
whereidA.id
anddateadd(minute,60,date1)<date2
and(date1betweenA.date1andA.date2)
andabs(datediff(minute,date1,A.date2))>=60)
or
exists(select1
from#a
whereidA.id
anddateadd(minute,60,A.date1)<A.date2
and(A.date1betweendate1anddate2)
andabs(datediff(minute,A.date1,date2))>=60)
收拾中
先说DDL的分类。有一类DDL,是不需要重建表的,比如加非聚簇索引。这类操作其实不会丢数据,也是在原表上直接操作,对于我们“以恢复数据为目的”的闪回,是可以先忽略的。另外一类,则是会影响到表数据的操作。
作者:
山那边是海
时间:
2015-1-19 14:20
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
作者:
只想知道
时间:
2015-1-26 16:20
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
作者:
精灵巫婆
时间:
2015-2-4 20:03
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
作者:
深爱那片海
时间:
2015-2-10 06:08
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
作者:
不帅
时间:
2015-3-10 09:59
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
作者:
再现理想
时间:
2015-3-17 06:37
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
作者:
莫相离
时间:
2015-3-24 00:15
学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2