SQL用法总结
--=======================checkspacesandcleandata====================================--checkalldbsspacesp_helpdb
--checkalltablesspace
createtable#test(namevarchar(50),rowsint,reservedvarchar(20),datavarchar(20),index_sizevarchar(20),unusedvarchar(20))
insertinto#test
execsp_MSforeachtable"execsp_spaceused"?""
select*from#testorderbycast(replace(reserved,"KB","")asint)desc
droptable#test
--cleanalltabledata/*
execsp_MSforeachtable"deletefrom?"execsp_MSforeachtable"truncatetable?"*/
--========================处理日志====================================--由于SQL201*对文件和日志管理进行了优化,所以以下语句在SQL201*中可以运行但在SQL201*中已经被取消:--SQL201*/*
BackupLogDNNamewithno_log
DumpTransactionDNNamewithno_log
DBCCSHRINKFILE(2)*/
--SQL201*
--在SQL201*中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式.
ALTERDATABASEDNNameSETRECOVERYSIMPLE--WITHNO_WAIT简单模式
DBCCSHRINKFILE("DNName_Log",EMPTYFILE,TRUNCATEONLY)--DBCCSHRINKFILE("DNName_Log",1,TRUNCATEONLY)
ALTERDATABASEDNNameSETRECOVERYFULL--WITHNO_WAIT还原为完全模式
--优点:此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内即可完成.
--缺点:不过此动作最好不要经常使用,因为它的运行会带来系统碎片.普通状态下LOG和DIFF的备份即可截断日志.
--此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用.
--========================Rankingwindow
functions====================================--runonAdventureWorks
--UsingtheOVERclausewithaggregatefunctionsSELECTSalesOrderID,ProductID,OrderQty
,SUM(OrderQty)OVER(PARTITIONBYSalesOrderID)AS"Total",AVG(OrderQty)OVER(PARTITIONBYSalesOrderID)AS"Avg"
,COUNT(OrderQty)OVER(PARTITIONBYSalesOrderID)AS"Count",MIN(OrderQty)OVER(PARTITIONBYSalesOrderID)AS"Min",MAX(OrderQty)OVER(PARTITIONBYSalesOrderID)AS"Max"
,CAST(1.*OrderQty/SUM(OrderQty)OVER(PARTITIONBYSalesOrderID)*100ASDECIMAL(5,2))AS"PercentbyProductID"FROMSales.SalesOrderDetail
WHERESalesOrderIDIN(43659,43664)
--UsingtheOVERclausewiththeROW_NUMBERfunctionSELECTc.FirstName,c.LastName
,ROW_NUMBER()OVER(partitionbyPostalCodeORDERBYSalesYTDDESC)AS"RowNumber"
,s.SalesYTD,a.PostalCodeFROMSales.SalesPersons
INNERJOINPerson.Contactc
ONs.SalesPersonID=c.ContactIDINNERJOINPerson.Addressa
ONa.AddressID=c.ContactIDWHERETerritoryIDISNOTNULLANDSalesYTD0
SELECTc.FirstName,c.LastName
,ROW_NUMBER()OVER(ORDERBYa.PostalCode)AS"RowNumber",RANK()OVER(ORDERBYa.PostalCode)AS"Rank"
,DENSE_RANK()OVER(ORDERBYa.PostalCode)AS"DenseRank",NTILE(4)OVER(ORDERBYa.PostalCode)AS"Quartile",s.SalesYTD,a.PostalCodeFROMSales.SalesPersons
INNERJOINPerson.Contactc
ONs.SalesPersonID=c.ContactIDINNERJOINPerson.Addressa
ONa.AddressID=c.ContactIDWHERETerritoryIDISNOTNULLANDSalesYTD0
--=======================CreatePartitionondatabase====================================
--1.AddfilegroupsandfilestodatabaseALTERDATABASETestADDfilegrouptestFg1
ALTERDATABASETestADDFILE(NAME=test1,FILENAME="C:\\ProgramFiles\\MicrosoftSQL
Server\\MSSQL10.MSSQLSERVER\\MSSQL\\DATA\\test1.ndf",SIZE=3MB,MAXSIZE=UNLIMITED,FILEGROWTH=1MB
)TOFILEGROUPtestFg
ALTERDATABASETestADDfilegrouptestFg2
ALTERDATABASETestADDFILE(NAME=test1,FILENAME="C:\\ProgramFiles\\MicrosoftSQL
Server\\MSSQL10.MSSQLSERVER\\MSSQL\\DATA\\test2.ndf",SIZE=3MB,MAXSIZE=UNLIMITED,FILEGROWTH=1MB
)TOFILEGROUPtestFg2GO
--2.createpartitionfunctionandschemeCREATEPARTITIONFUNCTIONmyRangePF1(int)
ASRANGERIGHTFORVALUES(201*0101,201*0101,201*0101);GO
CREATEPARTITIONSCHEMEmyRangePS1ASPARTITIONmyRangePF1
TO([PRIMARY],testFg1,testFg2,testFg3)
--3.applypartitionontable/*
CREATETABLEPartitionTable(col1int,col2char(10))ONmyRangePS1(col1)
select*fromsys.partition_functions
select*fromsys.partition_schemes
select*fromsys.partition_range_values
--checkrowsoneverypartitionselect*fromsys.partitionswhereobject_id=*/
BEGINTRANSACTION
CREATECLUSTEREDINDEX[ClusteredIndex_on_myRangePS1]ON[dbo].[factCharge]([DateKey]
)WITH(SORT_IN_TEMPDB=OFF,IGNORE_DUP_KEY=OFF,DROP_EXISTING=OFF,ONLINE=OFF)ON[myRangePS1]([DateKey])
DROPINDEX[ClusteredIndex_on_myRangePS1]ON[dbo].[factChargeBak]WITH(ONLINE=OFF)
COMMITTRANSACTION
--=======================SQLCDC====================================USEAdventureWorksDW;GO
EXECUTEsys.sp_cdc_enable_db;--启用数据库对CDC的支持GOEXECsys.sp_cdc_enable_table"dbo","FactInternetSales",@role_name=NULL,@supports_net_changes=0;--启用某个表对CDC的支持GO
SELECTname,is_tracked_by_cdcFROMsys.tablesWHEREnameLIKE("fact%")
INSERTINTOFactInternetSales
VALUES(484,1127,1139,1134,18759,1,100,6,"SO75124",1,1,1,21.9800,21.9800,0,0,8.2205,8.2205,21.9800,1.7584,0.5495,NULL,NULL)INSERTINTOFactInternetSales
VALUES(486,1127,1139,1134,18759,1,100,6,"SO75125",1,1,1,21.9800,21.9800,0,0,8.2205,8.2205,21.9800,1.7584,0.5495,NULL,NULL)
UPDATEFactInternetSalesSETPromotionKey=2WHERESalesOrderNumber="SO75124"
DELETEFROMFactInternetSalesWHERESalesOrderNumber="SO75125"SELECT*FROMcdc.dbo_FactInternetSales_CT;
DECLARE@begin_timedatetime,@end_timedatetime,@from_lsnbinary(10),@to_lsnbinary(10);
--Obtainthebeginningofthetimeinterval.SET@begin_time=GETDATE()-1SET@end_time=GETDATE()
--Mapthetimeintervaltoachangedatacapturequeryrange.
SELECT@from_lsn=sys.fn_cdc_map_time_to_lsn("smallestgreaterthanorequal",@begin_time)
SELECT@to_lsn=sys.fn_cdc_map_time_to_lsn("largestlessthanorequal",@end_time)
print@begin_timeprint@end_timeprint@from_lsnprint@to_lsn
SELECT*FROMcdc.dbo_FactInternetSales_CTWHERE__$start_lsnBETWEEN@from_lsnAND@to_lsn
--撤销SQLServer201*CDC
EXECsys.sp_cdc_disable_table"dbo","FactInternetSales","All"EXECsys.sp_cdc_disable_db
--=======================Convertinttomoney====================================
SELECTREVERSE(SUBSTRING(REVERSE(CONVERT(varchar,CONVERT(money,123456789),1)),4,30))RMB
扩展阅读:SQL的一些用法小结
SQL的一些用法小结(精彩实用)
1.模糊查询:select*from表名where查询字段like"%biao_"%通配符--匹配任意字符_通配符--匹配单个字符
2.字符串的连接(||):select字段1||","||字段2别名from表名输出:字段1,字段2
3.查找非空项:select*from表名where字段isnotnull4.集合查询:
union返回两个查询的结果并去除其中的重复部分:select字段1from表1unionselect字段1from表2
unionall与union一样对表进行了合并但是它不去掉重复的记录:select字段1from表1unionallselect字段1from表2
intersect(相交)返回两个表中共有的行:select字段1from表1intersectselect字段1from表2
mimus(相减)返回的记录是存在于第一个表中但不存在于第二个表中的记录例:select字段1from表1mimusselect字段1from表25.从属运算(in,between)
select*from表where字段in("值1","值2",-----)----括号内是数字则不需要用引号
select*from表where字段betweenMinandMax二.函数
1.count:该函数将返回满足WHERE条件子句中记录的个数selectcount(*)from表where条件2.sum返回某一列的所有数值的和selectsum(字段)from表3.avg可以返回某一列的平均值selectavg(字段)from表
4.max(min)取得某一列中的最大(小)值selectmax(字段)from表
select*from表where字段=min(字段)
@_@(太多了,不一一列举了,弄些自己喜欢的^_^)----------------5.user该函数返回当前使用数据库的用户的名字selectuser[from表]三.子句
1.groupby用于分组
selectsum(字段1)from表groupby字段2having条件------按照字段2进行分组显示
2.having在分组中设置条件
四.子查询(子查询的条件可以关联主表和子表)
select*from表1where字段=(select字段from表2条件)---子查询的结果必须是唯一
select*from表1where字段in(select字段from表2条件)----子查询的结果不唯一
select*from表1whereexists(select........)-----exists返回trueorfalse五.精彩语句:
insertinto表1(字段1,字段2....)select字段1,字段2.....from表2条件-----复制表六.创建和操作表1.创建表:CREATETABLEtable_name(field1datatype[NOTNULL]
field2datatype[NOTNULL]
field3datatype[NOTNULL]...)
2.ALTERTABLE语句可以帮助你做两件事-加入一列到已经存在的表中-修改已经存在的表中的某一列
ALTERTABLE语句的语法如下
ALTERTABLEtable_name-------修改一列3.删除表和数据库:
DROPTABLEtable_nameDROPDATABASEdatabase_name4.创建临时表:
createtable#table_name(field1datatype,
.fieldndatatype七,存贮过程:创建存贮过程的语法:
createprocedureprocedure_name[[(]@parameter_name
datatype[(length)|(precision[,scale])[=
default][output]-----------参数
[,@parameter_name
datatype[(length)|(precision[,scale])[=default][output]]...[)]][withrecompile]asSQL_statements运行存贮过程的EXECUTE命令的语法:execute[@return_status=]procedure_name
[[@parameter_name=]value
|------------参数值
[@parameter_name=]@variable[output]...]][withrecompile]八.SQLSERVER提供的全局变量:
在使用存储过程的时候你可以自己定义全局变量是非常有用的SQLSERVER也提供
了几种系统全局变量对于数据库的系统用户来说它可能是有用的下表中给出了这些变
量的全部清单你可以在SQLSERVERSYSTEM10的文档中找到它变量名作用
@@char_convert如果字符转换成功时其值为0@@client_csid客户机所使用字符集的
ID@@client_csname客户机的字符集的名字
@@connections从SQLServer启动以来的登录次数
@@cpu_busy从SQLServer启动以来的CPU忙的时间总数@@error错误的状态
@@identity插入到确定列中的最后一个值@@idle从SQLServer启动以来的总时间数@@io_busySQLServer用于I/O操作的时间
@@isolation当前的Transact-SQL程序的隔离级别@@langid定义了本地语言的ID号@@language定义了本地语言的名称@@maxcharlen字符的最大长度
@@max_connections可与SQLSERVER进行连接的最大数量@@ncharsizeAveragelengthofanationalcharacter.@@nestlevel当前进程的嵌套级别
@@pack_received从SQLServer启动以来的读入的数据包的数量@@pack_sent从SQLServer所发出的输出包的数量
@@packet_errors从SQLServer启动以来产生错误的数量@@procid当前正在运行的存储过程的ID号@@rowcount上一个命令所涉及的行数
@@servername本地localSQLServer的名字@@spid当前正在处理的进程ID号@@sqlstatus存储状态信息
@@textsize由SELECT语句所返回的文本映像的最大长度@@thresh_hysteresisChangeinfreespacerequiredtoactivateathreshold.@@timeticksNumberofmicrosecondspertick.@@total_errors在读写过程中产生的错误数
@@total_read在SQLServer启动以来读磁盘的次数@@total_write在SQLServer启动以来写磁盘的次数@@tranchained在Transact-SQL程序中当前事务的模式@@trancount事务的嵌套级别
@@transtate当一个语句运行后当前事务的状态@@version当前SQLServer的版本日期
友情提示:本文中关于《SQL用法总结》给出的范例仅供您参考拓展思维使用,SQL用法总结:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。