SQL
文章平均质量分 56
indifferent_to
he
展开
-
SQL SERVER 显式事务和隐式事务
事务是用户定义的操作序列,并发控制单位。我们可以通过对事务进行回滚,来避免错误的操作。显式事务:BEGIN TRAN tran_testCREATE TABLE test_mluo(id bigint)此时test_mluo已经被创建,如果你想回滚这个操作ROLLBACK TRAN tran_test如果你想确认这个操作COMMIT TRAN tran_test原创 2015-02-02 13:57:03 · 1023 阅读 · 0 评论 -
范式
果存在一个决定关系x→y,且y并非x的子集,则叫着y非平凡函数依赖于x。BCNF与3NF的最大区别是它并不仅针对非主属性(non-prime attribute)来说,它发生的时候常常是表中根本不存在非主属性,以至于它不可能违反2NF或3NF。而BCNF的出现就是为了扩大“打击面”。于是BCNF的主旨是:补充对发生在主属性(primeattribute)身上的函数依赖的约束,因为对于非原创 2015-02-28 16:45:04 · 545 阅读 · 0 评论 -
JOIN/LEFT JOIN/RGIHT JOIN/FULL JOIN
testA and test BSELECT * FROM testA JOIN testB ON testA.id=testB.idSELECT * FROM testA LEFT JOIN testB ONtestA.id=testB.idSELECT * FROM testA RIGHT JOIN testB ONtestA.id=testB.id原创 2015-02-28 16:36:38 · 453 阅读 · 0 评论 -
SQL排序 RANK/DENSE_RANK/ROW_NUMBER/NTILE
RANK()DENSE_RANK()ROW_NUMBER()NTILE(2)NTILE(3)原创 2015-02-28 16:28:12 · 779 阅读 · 0 评论 -
Dimension and Fact
维度表示你要对数据进行分析时所用的一个量, 比如你要分析产品销售情况, 你可以选择按类别来进行分析,或按区域来分析. 这样的按..分析就构成一个维度。前面的示例就可以有两个维度:类型和区域。另外每个维度还可以有子维度(称为属性),例如类别可以有子类型,产品名等属性。下面是两个常见的维度表结构:产品维度表:Prod_id, Product_Name, Category, Color,转载 2015-02-28 16:15:14 · 540 阅读 · 0 评论 -
UNION, INTERSECT, EXCEPT
这几个关键字是用来操作集合的。UNION用来求两个集合的并集,INTERSECT用来求两个集合的交集,EXCEPT用来求在第一个集合中存在,而在第二个集合中不存在的记录。每个关键字后面都可以接ALL(UNION ALL, INTERSECT ALL, EXCEPT ALL),如果不接ALL,操作集合将会去掉重复值,下面我们通过一个例子来对比一下它们直接的不同。[c-sha转载 2015-02-28 17:18:12 · 503 阅读 · 0 评论 -
浅谈SQL Server 2008中的Hints(提示)-三种不同类型的联接提示(Join Hints)、查询提示(Query Hints)、表提示(Table Hints)
SQL Server 2008中SQL应用系列--目录索引 SQL Server的系统查询过程负责在SELECT查询执行时候产生查询执行计划。SQL Server会“智能”地选择一个高效计划来取代低效的一个。大多数时候,SQL Server会把这份工作干得很棒。但正如有些人所担忧的,SQL Server并不是万能的,有时候,我们通过查询执行计划、表统计信息、支撑的索引及其他因素,研究性能转载 2015-02-28 17:13:13 · 717 阅读 · 0 评论 -
Merge
首先是更加短小精悍的语句,在SQLServer 2008之前没有Merge的时代,基于源表对目标表进行操作需要分别写好几条Insert,Update,Delete。而使用Merge,仅仅需要使用一条语句就好。下面我们来看一个例子。首先建立源表和目标表,并插入相关的数据,如图1所示。图1.创建测试表并插入测试数据下面我们来写一个简单的Merge语句,如图2所示。图2.原创 2015-02-28 16:20:52 · 358 阅读 · 0 评论 -
SQL Server 日期时间函数小结
Sql Server中的日期与时间函数 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.0003.原创 2015-02-28 16:18:30 · 390 阅读 · 0 评论 -
聚集索引Clustered Index
一、深入浅出理解索引结构实际上,您可以把索引理解为一种特殊的目录。微软的SQLSERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclusteredindex,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开原创 2015-02-28 16:54:32 · 1483 阅读 · 0 评论 -
SQL Query的逻辑处理步骤
SQL逻辑处理步骤:(8) SELECT (9)DISTINCT (11) TOP_specification>select_list>(1) FROMleft_table>(3) join_type> JOIN right_table>(2) ON join_condition>(4) WHEREwhere_condition>(5原创 2015-02-28 16:34:31 · 513 阅读 · 0 评论 -
with rollup 、with cube、grouping 统计函数用法
with rollup 、with cube、groupingCUBE 和 ROLLUP 之间的区别在于:CUBE 生成的结果集显示了所选列中值的所有组合的聚合。ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。grouping:当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。--转载 2015-02-28 17:10:56 · 421 阅读 · 0 评论 -
CHARINDEX()
CHARINDEX ( expression1 ,expression2 , [ start_location ] )参数expression1一个表达式,其中包含要寻找的字符的次序。expression1是一个短字符数据类型分类的表达式。expression2一个表达式,通常是一个用于搜索指定序列的列。expression2属于字符串数据类型分原创 2015-02-28 16:59:51 · 385 阅读 · 0 评论 -
SP with parameter
(1)不带任何参数的存储过程(存储过程语句中含有return)---创建存储过程CREATEPROCEDURE testReturnASreturn 145GO---执行存储过程DECLARE @RCintexec@RC=testReturnselect @RC---说明查询结果为145(2)带输入参数的存储过程(存储过程语句中含有ret原创 2015-02-28 16:50:11 · 463 阅读 · 0 评论 -
Exists 和 In
分析一下exists真的就比in的效率高吗? 我们先讨论IN和EXISTS。select *from t1 where x in ( select y from t2 )事实上可以理解为:select *from t1,( select distinct y from t2 ) t2wheret1.x = t2.y;——如果你有一定的SQL优化经验,从这句很自然的可原创 2015-02-28 16:46:10 · 440 阅读 · 0 评论 -
TOP的效率问题
select top 500 *from (select top 100 percent * from [dbo].[stg_address] a wherea.state_province_cd='NJ' order by a.created_dt) as sub select top 500 *from [dbo].[stg_address] a where a.state_provi原创 2015-02-28 16:32:49 · 394 阅读 · 0 评论 -
SQL ROUND() 和 TRUNC() 函数
ROUND() 函数ROUND 函数用于把数值字段舍入为指定的小数位数。TRUNC() 函数ROUND 函数用于把数值字段截取,默认取整,没有四舍五入。SQL ROUND() 语法SELECT ROUND(column_name,decimals) FROM table_name参数描述column_name必需。要舍入的字段。转载 2015-02-28 16:31:40 · 2234 阅读 · 0 评论 -
SQL SERVER 变量赋值
SQL Server中对已经定义的变量赋值的方式用两种,分别是 SET和 SELECT。对于这两种方式的区别,SQL Server联机丛书中已经有详细的说明,但很多时候我们并没有注意,其实这两种方式还是有很多差别的。SQL Server推荐使用 SET而不是 SELECT对变量进行赋值。当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET方法。下表原创 2015-02-28 16:51:08 · 1269 阅读 · 0 评论 -
Collate
可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则转换。 可以执行系统函数 fn_helpcollations来检索 Windows 排序规则和 SQL Server 排序规则的所有有效排序规则名称的列表: SELECTname, descriptionFROMfn_helpcollations(); CREATE TABLELoc原创 2015-02-28 16:56:07 · 416 阅读 · 0 评论