首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

相信很多人在笔试或面试的时候被问到如何通过SQL实现行转列或列转行的问题可能很多人当时懵逼了,没关系,下面我们通过例子来理解。   ...③ 基于联接的DELETE:也不是标准SQL语句,可以根据另一个表相关行的属性定义的过滤器来删除表的数据行。   ...然而,SQL中所有赋值表达式好像都是同时计算的,解决这个问题就不需要临时变量了。...如果条件取值可能为FALSE或UNKNOWN(例如,涉及到NULL值),而且对每种情况需要进行不同的处理时,必须用IS NULL谓词对NULL值进行显式地测试。   ...8.4 临时表   有时需要把数据临时保存到表,而且在有些情况下,我们可能不太想要使用永久性的表。在这种情况下,使用临时表可能会更方便。

8.9K20

干货!直观地解释和可视化每个复杂的DataFrame操作

操作数据帧可能很快会成为一项复杂的任务,因此Pandas的八种技术均提供了说明,可视化,代码和技巧来记住如何做。 ?...表上调用堆栈后再调用堆栈不会更改该堆栈(原因是存在“ 0 ”)。 ? 堆叠的参数是其级别。列表索引,索引为-1将返回最后一个元素。这与水平相同。...默认情况下,合并功能执行内部联接:如果每个DataFrame的键名均未列另一个键,则该键不包含在合并的DataFrame。...Join 通常,联接比合并更可取,因为它具有更简洁的语法,并且水平连接两个DataFrame时具有更大的可能性。连接的语法如下: ?...切记:列表和字符串,可以串联其他项。串联是将附加元素附加到现有主体上,而不是添加新信息(就像逐列联接一样)。

13.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

那些年我们写过的T-SQL(中篇)

可能你会说使用外联接或者EXISTS运算符也可以达到相似效果,并在存在NULL比较的情况下必须添加相应处理代码,使用集合操作符可以简化SQL代码。...常见的分组查询实际查询定义集合或组,因此查询的所有计算都要在这些组完成,还记得那个逻辑顺序吧,GROUP BY是SELECT之前的,因此一旦分组后,自然的就丢失了很多细节信息,但现在开窗函数是...逆透视包括也包括三个逻辑阶段:第一阶段需要通过交叉联接生成每一列对应的一个副本;第二阶段通过CASE运算符生成列(qty);最后一个阶段通过去qty IS NOT NULL删除不相关的交叉点,这一点一定不能忘了...分组集 分组集就是一个属性集,分组GROUP BY字句只支持一个查询中使用一种分组方式,如果需要多种分组的结果就需要通过UNION ALL将多个分组聚合起来,为了字段对应,需要为部分列设置NULL...这部分的使用场景主要是报表分析,分组集提供4类操作符用于增强原有的GROUP BY字句,这儿就介绍GROUPING SETS操作符,CUBE和ROLLUP是对它的简化,可以通过语义理解,CUBE是立方即包含提供的分组属性的所有组合

3.7K70

BI数据隐私防火墙的内在情况

数据隐私防火墙的用途很简单:存在以防止Power Query无意中源之间泄露数据。为什么需要这一点? 我是说,你当然可以创作一些 M,它将SQL值传递给 OData 源。 但这将是有意的数据泄露。...折叠折叠折叠是指在 M ((例如筛选器、重命名、联接等)) 将表达式转换为对原始数据源 ((如 SQL、OData) 等)的操作的术语。...作为折叠的一部分,PQ 有时可能确定执行给定混合的最有效方法是从一个源获取数据并将其传递给另一个源。...例如,如果要将小型 CSV 文件联接到大型SQL表,则可能不希望 PQ 读取 CSV 文件、读取整个SQL表,然后将它们联接在本地计算机上。...最基本的级别,分区只是一个或多个查询步骤的集合。 至少在当前实现) 可能 (最精细的分区是一个步骤。 最大分区有时可以包含多个查询。 稍后 (更多内容。)

70610

Mysql - 数据库面试题打卡第二天

左外联接(Left Outer Join):除了匹配2张表相关联的记录外,还会匹配左表剩余的记录,右表 匹配到的字段用NULL表示。...右外联接(Right Outer Join):除了匹配2张表相关联的记录外,还会匹配右表剩余的记录,左表 匹配到的字段用NULL表示。...典型的应用程序,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对同一 数据进行操作)。并发虽然是必须的,但可能会导致以下的问题。...那么,第一个事务的两次读数据之间,由于第二个事务的修改导致第一个 事务两次读取的数据可能不太一样。这就发生了一个事务内两次读到的数据是不一样的情况,因此称 为不可重复读。...随后的查询,第一个事务(T1)就会发现多了一些原本不 存在的记录,就好像发生了幻觉一样,所以称为幻读。

54550

SQL基础查询方法

Select查询 4.1 查询基础知识 查询是对存储 SQL Server 的数据的一种请求。...WHERE 子句指定出条件: Product 表,只有 ListPrice 列的值大于 40的产品的产品ID、名称以及标价¨G0GSELECT关键字之后所列出的列名(ProductID、Name...通常,每个选择列表表达式都是对数据所在的源表或视图中的列的引用,但也可能是对任何其他表达式(例如,常量或 Transact-SQL 函数)的引用。选择列表中使用 * 表达式可指定返回源表的所有列。...不论遇到多少个空值,结果只返回一个 NULL。...这使结果集中得以包含基表存在,但是根据基表存储的值计算得到的值。这些结果集列被称为派生列。 表达式可以包含 $ROWGUID 关键字。它解析为对表具有 ROWGUIDCOL 属性的列的引用。

4.2K10

Power Query 真经 - 第 7 章 - 常用数据转换

图 7-2 转置的数据(左边)vs 正确的透视数据(右边) This data is still pivoted:透视数据 This data is unpivoted:透视数据 关于这个问题最糟糕的部分是...这个问题之所以如此重要,是因为 “Changed Type” 步骤已经将当前的列名硬编码到解决方案。如果这些列未来不存在,用户最终会收到一个步骤级错误,该错误阻止了数据加载,需要解决。...本书的建议是,除非用户特别需要在【逆透视】数据之前设置数据类型,否则删除前面的全部 “Changed Type” 步骤,这些步骤硬编码的列名未来可能存在。这将为以后省去很多麻烦。...右击 “F12” 单元格,展开 / 折叠折叠整个字段。 现在有两个完全不同的透视表,来自同一组透视的数据,如图 7-6 所示。...图 7-6 两个数据透视表由一个透视的数据集生成 7.1.4 应对变化 此时,保存文件并把它发送回给用户,让用户继续更新它,数据分析师可能会感到相当舒服。

7.2K31

透视转换的艺术

玩爆你的数据报表之存储过程编写(下) 透视转换是一种行列互转的技术,转过程可能执行聚合操作,应用非常广泛。 本章与 你真的会玩SQL吗?数据聚合 内容比较重要,还涉及到 你真的会玩SQL吗?...但是这样查询我们希望把数据旋转为每个属性占一列的传统方式,然后再保存到临时表处理后续查询称之为透视转换技术。在这里需要回看一下 你真的会玩SQL吗?...每组若包含多个非NULL值 ,视情况也可用SUM/AVG。  ...可能数据源中会得到与NULL值,如1的attr4,所以还需要对结果进行过滤掉Value为NULL的。...UNPIVOT会在一个逻辑处理删除NULL行。 以上只是一个简单的示例,即使现在理解了但在多变的实际应用可能就会迷惘,那时再来对比看看此例。

1.9K60

【22】进大厂必须掌握的面试题-30个Informatica面试

=”,但在连接器仅提供“ =”(等于)运算符。 查找,我们可以使用查找覆盖来限制在读取关系表时的行数,但是联接,我们不能在读取时限制行数。...尽可能在数据库执行联接某些情况下,这是不可能的,例如从两个不同的数据库或平面文件系统联接表。要在数据库执行联接,我们可以使用以下选项: 创建并使用会话前存储过程来联接数据库的表。...使用Source Qualifier转换执行联接。 尽可能合并排序的数据 对于排序的Joiner转换,将行较少的源指定为主源。 对于排序的Joiner转换,将重复键值较少的源指定为主源。...联合转型 联合转换,尽管进入联合的行总数与从联合通过的行总数相同,但是行的位置没有保留,即输入流1的行号1可能不是行号输出流为1。Union甚至不保证输出是可重复的。...非可 加事实:非可加事实是不能针对事实表存在的任何维度进行汇总的事实。 例如:具有百分比和比率的事实。 事实表: 现实世界可能有一个事实表,其中不包含任何度量或事实。

6.5K40

这是我见过最有用的Mysql面试题,面试了无数公司总结的(内附答案)

如果在插入记录时提供任何值,则DEFAULT约束用于包括默认值。 51.什么是标准化? 规范化是表设计的过程,以最大程度地减少数据冗余。 53.什么是非正规化?...SQL Server,数据库表的每一列都有一个名称和一种数据类型。 创建SQL表时,我们需要决定在表的每一列存储哪种数据类型。 57.可以BOOLEAN数据字段存储哪些可能的值?...这是棘手的SQL面试问题之一。采访者可能以另一种方式问您这个问题,因为“全联盟”优于“全联盟”有什么优势。...如果与交叉联接一起使用WHERE子句,则交叉联接将产生一个结果集 该结果集是第一个表的行数乘以第二个表的行数。 这种结果称为笛卡尔积。...在上述问题中,我们可以看到null = null不是比较null值的正确方法。为了将一个值与null进行比较,我们SQL中使用IS运算符。

27K20

你真的会玩SQL吗?简单的数据修改

透视转换的艺术 你真的会玩SQL吗?冷落的Top和Apply 你真的会玩SQL吗?实用函数方法汇总 你真的会玩SQL吗?玩爆你的数据报表之存储过程编写(上) 你真的会玩SQL吗?...是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的应用程序开发必不可少。...但我们开发、测试过程,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2,或者将整个table1复制到table2,这时候我们就要使用SELECT INTO 和...,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。...,因为插入时会自动创建表Table2,并将Table1指定字段数据复制到临时表Table2

92770

必知必会——关于SQL的NOT IN优化

当我们测试房屋A时: 加热 IN (“coal”, “wood”) -> UNKNOWN,用SQL表示加热为NULL时,NULL可能是coal,也可能是wood,或者不是,我们不知道… 加热 NOT IN...),因为NOT IN与NULL的行为与关系代数联接的定义不匹配。...现在,这是重写的查询,它们正确地使用了反联接,因此可以从我们新的基于哈希的联接算法受益(版本8.0.18引入了内联接,并在8.0.20扩展为半联接,反联接和外部联接): ?...RAND()返回0到1之间的数字;ROUND()*5将其舍入为0到5之间的整数;0到4获得真实的能源,而5获得NULL(因为CASE未指定5)。...得出的结论是:当使用NOT IN时,如果无法避免使用NULL,请确认NULL的行为,如果不符合预期,请考虑“不正确或不存在”的替代方案。 感谢您使用MySQL!

4.4K40

【数据库设计和SQL基础语法】--连接与联接--联接的优化与性能问题

频繁的网络通信可能成为性能瓶颈,特别是分布式数据库环境。 缓存效果下降: 大表的联接可能导致缓存效果下降,因为大部分数据无法完全存储在内存。...考虑使用 EXISTS 或 NOT EXISTS: 一些情况下,使用 EXISTS 或 NOT EXISTS 子查询可能比传统的联接更有效。 这样的查询通常在判断是否存在相关数据时更为高效。...三、示例与案例分析 3.1 典型的性能问题案例 以下是一些典型的 SQL 联接性能问题案例,这些案例突显了处理大量数据时可能遇到的一些常见问题优化的联接条件: 问题描述: 查询中使用的联接条件未被索引...解决方案: 为联接条件的列创建适当的索引,以提高查询性能。 过度使用笛卡尔积: 问题描述: 某个查询提供正确的联接条件,导致产生笛卡尔积,查询结果过大。...解决方案: 考虑本地缓存结果、优化网络连接或重新设计查询以减少跨服务器联接的频率。 考虑缓存策略: 问题描述: 相同的联接查询被频繁执行,但未考虑使用缓存机制。

16210

号外!!!MySQL 8.0.24 发布

这是由于这样的事实NULL,即使它们的参数之一是NULL,它们也返回not,并且优化程序希望它们NULL NULL输入时返回。...这些长字符串给某些字符串转换例程带来了问题,因为它们的实际长度可能会超出预期的最大值。我们通过my_gcvt每次获取aFLOAT或DOUBLE字符串上下文中时显式告知所需的长度来解决此问题 。...(缺陷#32267749,错误#32288089,错误#32299045) NULL涉及十进制值的计算的 改进和错误处理。...(缺陷#102101,错误#32335256) 解释旧式的访问路径计划时LATERAL,由于所有外部联接均会延迟到所有外部联接完成之前,其缓存无效化器才被延迟,因为外部联接可能会产生空补充行,这也会使高速缓存无效...当外部联接包含LATERAL,并且LATERAL 仅引用同一外部联接的表时,就会出现问题 。在这种情况下,应该立即应用无效器,而不要延迟,以免我们遗漏发出的行,并且错误地保留了缓存。

3.6K20

PowerBI 打造全动态最强超级矩阵

因为,这并不是一个简单的问题,如果你打开微软Excel来观察这个描述,它是这样写的: 这里仅仅是透视表具有的功能,却并没说清楚什么是透视表。当然,我们也不在这里纠结于概念。... PowerBI ,由于已经存在数据模型,数据模型是一个天然的已经建立了关系的表结构,因此,一个经典的DAX查询,基本是从第三步进行: ADDCOLUMNS( SUMMARIZE( 模型表 , 用来分组的列...答案是当然不可能本例,已经将可能地变化做到了极致。首先,这个度量值是变体类型,如下: 数据类型显示:变体。这是什么鬼,不知道很正常,99%的人都不知道。...如果度量值中使用IF或SWITCH,有可能返回不同的结果,而不同的结果是不同的数据类型,PowerBI 为了支持这种可能存在,因此就有了变体数据类型,它在此处几乎起到了决定性的作用: 首先,尝试过就知道一个数字是无法同时显示数字又在合适的时机显示百分比的...其次,由于 PowerBI 推出了可以直接用度量值计算文本颜色,就可以解决文本标色的问题: 这里截取一段标色逻辑: 有了 变体数据类型 和 按度量值设置格式 就解决了原有的不可能问题

14.4K43

SQL高级查询方法

WHERE [NOT] EXISTS (subquery) 许多包含子查询的 Transact-SQL 语句都可以改用联接表示。其他问题只能通过子查询提出。... Transact-SQL ,包含子查询的语句和语义上等效的不包含子查询的语句(即联接的方式)性能上通常没有差别。但是,一些必须检查存在性的情况,使用联接会产生更好的性能。...联接条件可通过以下方式定义两个表查询的关联方式: 指定每个表要用于联接的列。典型的联接条件一个表中指定一个外键,而在另一个表中指定与其关联的键。...FROM 子句中指定联接条件有助于将这些联接条件与 WHERE 子句中可能指定的其他任何搜索条件分开,建议用这种方法来指定联接。...左向外部联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某一行右表没有匹配行,则在关联的结果集行,来自右表的所有选择列表列均为空值。

5.7K20

SQL优化

一、SQL语句编写注意问题 下面就某些SQL语句的where子句编写需要注意的问题作详细介绍。...即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。 2....很多情况下可能无法避免这种情况,但是一定要心中有底,通 配符如此使用会降低查询速度。然而当通配符出现在字符串其他位置时,优化器就能利用索引。...解决这个问题的办法就是重写order by语句以使用索引,也可以为所使用的列建立另外一个索引,同时应绝对避免order by子句中使用表达式。 5....3、最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.NULL值也是可能会需要占用空间的,一些定长的数据类型即使数据为NULL也是会占用空间的。

4.8K20

CSS魔法|MagicDesign - CSS实现3D拐角轮播图

别急着走嘛,我们虽然没有原图拐角处实现的那么丝滑,但是也算是实现了方案的3D容器方案 那我究竟是怎么把卡片3D化的呢?...(补充码上掘金的简易版本) 代码片段 3 3D折叠容器实现 众所周知,起码截止目前为止,CSS并不支持把单一一个页面元素折叠成曲面或者说部分折叠。 在这个基础上,我们必定需要使用到多个元素叠加。...我这里给些例子 rotateX 这里是45deg角度的X轴旋转,我们可以看到x轴的表现如图 rotateY 而这是y轴旋转,我们会发现目前y轴最中心,从展示角度来讲这是正确的,但是实际我们需要把原点移动...这也就引申出来了transform-origin 3.3.5 transform-origin 在上述例子,我们改变的是swiperElement1,而swiperElement1是20%的地方做了切割...这是很显然的问题,因为前两个元素拼接之后,第二个元素的最右方z轴实际上是上移了。

1.1K10

T-SQL基础(二)之关联查询

,添加外部行; 内部行 & 外部行 内部行指的是基于谓词ON与另一侧匹配的行,外部行则是匹配的行,外部行用NULL进行填充。...以下是网络上关于笛卡尔乘积的解释: 在数学,两个集合X和Y的笛卡儿积(Cartesian product),又称直积,表示为X × Y,**第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员...SQL中使用CROSS JOIN语句进行交叉联接查询,逻辑处理上,交叉联接是最为简单的联接类型,它只获取表的笛卡尔乘积。...右表不满足筛选条件的空行(外部行)则用NULL值填充。 RIGHT JOIN与LEFT JOIN作用相反。...SQL Server也常常出于优化查询的目的,实际处理查询过程联接进行重新排序,但这不会影响到处理结果集的正确性。

2.2K10
领券