自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 SQL 新增连接查询而不影响其他连接查询

外连接查询会返回一个表中的所有行,以及另一个表中与之匹配的行。你需要一些额外信息,但当你试图获取这些信息的时候,却丢失了原有的查询结果集中的数据。例如,你想查找所有员工的信息,包括他们所在部门的位置,以及他们收到奖金的日期。使用标量子查询是解决本问题的一种巧妙做法,因为不需要修改主查询中正确的连接操作。在不破坏当前结果集的情况下,标量子查询是为现有查询语句添加额外数据的好办法。对于有奖金的员工,你希望把他们收到奖金的日期也添加到结果集里,但连接了。表后得到的行数却比预期的要少,因为并非所有的员工都有奖金。

2023-02-21 17:18:42 231 1

原创 SQL 从一个表检索与另一个表不相关的行

这个解决方案使用了外连接,并且只保留不匹配的行。基于共同列把两个表连接起来,返回一个表的所有行,不论这些行在另一个表里是否存在匹配行。然后,只保留那些不匹配的行即可。两个表有相同的键,你想在一个表里查找与另一个表不相匹配的行。本问题乍看起来和前一个实例相同,但其实它们之间有微妙的差别。当然,你也可以使用 Oracle 专有的外连接语法。数据库及更早的版本只能使用上述专有语法(注意,圆括号里是 +)来完成外连接操作。不幸的是,相等连接无法找到哪些部门没有员工。表做相等连接操作,将返回满足连接条件的所有行。

2023-02-21 16:32:08 649

原创 Transact-SQL 语法元素之变量

Transact-SQL语言中,经常需要使用变量来临时赋值。变量通常用于在Transact-SQL代码中作为存储执行的计数器,或作为临时数据存储场所。

2023-02-21 16:06:40 438

原创 Transact-SQL 语法元素之注释

Transact-SQL代码中,添加注释信息是一个很好的习惯,便于程序的可读性。

2023-02-21 15:41:58 152

原创 Transact-SQL 语法元素之常量

常量是指在Transact-SQL代码中其值始终不变的数据。常量的定义格式取决于其所属于的数据类型。常量的使用不需要定义,直接在Transact-SQL中使用就可以,所以需要关注的是各种典型的常量的格式。

2023-02-21 15:33:47 288

原创 Transact-SQL 语法元素之数据类型

Transact-SQL语言和SQL Server数据库中的数据通常需要定义一个数据类型,数据类型定义了对象可以容纳的数据的种类。

2023-02-21 15:14:45 262

原创 Transact-SQL 语法元素之标识符

Transact-SQL语言中,对SQL Server数据库及其数据对象(比如表、索引、视图、存储过程、触发器等)需要以名称来进行命名并加以区分,这些名称就称为标识符。在Transact-SQL代码中就可以通过标识符来引用特定的对象。也就是它们在SQL中特定的叫法。

2023-02-13 17:42:43 176

原创 SQL 查找只存在于一个表中的数据

如果你所使用的数据库管理系统没有提供差集函数,那么就要采用 MySQL 和 SQL Server 解决方案介绍的子查询技巧。SQL 查找只存在于一个表中的数据,你希望从一个表(可以称之为源表)里找出那些在某个目标表里不存在的值。关联子查询指的是外层查询执行后获得的结果集会被内层子查询引用。运算符获取第一个结果集的数据,然后从中删除第二个结果集的数据。值影响的替代方案(回到“问题”部分给出的那个原始查询语句)。表中“不存在于”或“未被包含在”子查询结果集里的所有的。当然,之所以能这样做,是因为示例数据中的。

2023-02-08 16:30:04 653

原创 SQL 查找两个表中相同的行

当执行连接查询时,为了得到正确的结果,必须慎重考虑要把哪些列作为连接项。当参与连接的行集里的某些列可能有共同值,而其他列有不同值的时候,这一点尤为重要。把多个表中所有必要的列都连接起来,以获得正确的结果。你想找出两个表中相同的行,但需要连接多列。例如,考虑如下所示的视图。来替代连接查询,并返回两个表的交集(相同的行)。注意,当执行集合运算时,默认不会返回重复项。,并且希望得到如下所示的结果集。查询数据,就需要使用该方案。的某些列,可以使用集合运算。会返回两个行集的相同部分。子句执行同样的连接查询。

2023-02-08 15:54:29 2424

原创 SQL 确定两个表是否有相同的数据

在比较两个表的时候,比较容易的做法是,在比较数据之前先单独比较行数。计算出每一行数据出现的次数,并作为查询结果的一列返回。我们要比较每一行的数据及其出现的次数。,这取决于你使用的数据库管理系统)可以很容易地比较表中的数据。与员工 WARD 相关的数据有两行,这表明相应的解决方案不仅要找出来不同的数据,还要找到重复的数据。子句会过滤掉重复项,所以如果两个表的行数相同,则只会返回一行数据。的数据以及两行员工 WARD 的数据。后面的查询语句做了相反的操作,它找出了所有存在于内嵌视图。前面的查询相反的操作。

2023-02-08 15:24:34 6001

原创 SQL 合并行

想根据一个共同的列或者具有相同值的列做连接查询,并返回多个表中的行。例如,你想显示部门编号为 10 的全部员工的名字及其部门所在地,但这些数据分别存储在两个表里。你希望得到如下所示的结果集。通过DEPTNO字段把EMP表和DEPT表连接起来。

2023-02-08 13:56:38 1320

原创 SQL 叠加两个行集

你想返回保存在多个表中的数据,理论上需要将一个结果集叠加在另一个之上。这些表可以没有相同的键,但它们的列的数据类型必须相同。,则很可能会进行一次排序操作,以便删除重复项。当处理大型结果集的时候要想到这一点。列表里的所有项目必须保持数目相同,且数据类型匹配。例如,下面的两个检索都将失败。表中各个部门的名称和编号。你希望得到如下所示的结果集。将多个表中的行并入一个结果集。对于所有的集合运算来说,操作,就只会返回如下所示的 4 行数据。的员工的名字和部门编号,以及。尤其需要注意的是,如果有重复项,

2022-11-30 18:05:48 367

原创 SQL 依据条件逻辑动态调整排序项

表达式来动态调整结果的排序方式。上述示例代码中传递给。你希望按照某个条件逻辑来排序。你希望返回如下所示的结果集。

2022-11-30 17:53:52 200

原创 SQL 排序时对Null值的处理

值,它们也会相应地被升序排列或降序排列;值,并控制其排在最前面还是最后面。值排到最前面或者最后面(像 Oracle 那样),否则你就得添加一个辅助列。辅助列(只存在于查询语句里,而不存在于表中)的目的是,让你能够识别出。根据你希望的排序方式(以及你所使用的数据库管理系统如何处理。表的 COMM 列对查询结果进行排序,但该字段可能为。这样一来,你就能在不影响非。值都放到最后面,那么你就要使用。值排序问题),你能够对可能为。的列进行升序排列或者降序排列。返回的值,你就能在不影响。值,例如,你可能想把非。

2022-11-30 17:46:10 763

原创 SQL 对含有字母和数字的列排序

的值如下述的结果集所示。(以 Oracle 解决方案为例的原因是,这 3 种数据库使用了同样的技巧,唯一特别之处在于 DB2 的。函数删除每一行的数字或者字符后,就能方便地按照剩余的部分排序。你有混合了字母和数字的数据,希望按照字母部分或者数字部分来排序。考虑如下所示的视图。函数的使用方式与 Oracle 和 PostgreSQL 中的相同,只是。函数,因此不能提供针对本问题的解决方案。排序,会产生如下所示的结果集。排序,会产生如下所示的结果集。函数的参数顺序略有不同。函数的参数顺序稍有不同。

2022-11-30 09:59:18 1877

原创 SQL 依据子串排序

利用数据库中的子串函数,你可以很方便地按照一个字符串的任意部分来排序。要想按照一个字符串的最后两个字符排序,需要先找到该字符串的结尾处(即字符串的长度),然后减去 2。这样,起始位置就是该字符串的倒数第 2 个字符。然后,你就可以截取从指定起始位置开始直到字符串结束的所有字符。对于本实例而言,第 3 个参数既可以是 2,也可以是任何大于 2 的数字。表检索员工的名字和职位,并且按照职位字段的最后两个字符对检索结果进行排序。结果集应该像下面这样。你想按照一个字符串的特定部分排列查询结果。

2022-11-27 15:56:15 252

原创 SQL 多字段排序

列表里的列来排序,但必须明确地指定列名。不过,如果你的查询语句里有。列表项对应的位置序号来指定排序项,那么这个数字序号不能大于。一般而言,你也可以根据一个没有被包含在。你希望返回如下所示的结果集。子句中列出不同的排序列,以逗号分隔。的执行顺序是从左到右的。表的数据,你想先按照。升序排列,然后再按照。列表之外的列进行排序。

2022-11-27 15:39:28 291

原创 SQL 以指定顺序返回查询结果

你想显示部门编号为 10 的员工的名字、职位和工资,并根据工资从低到高排序。你希望返回如下结果集。你也可以不指定用于排序的列名,而指定一个数值来指代该列。数值从 1 开始,从左向右匹配。相应地,也可以通过指定。子句可以对结果集排序。列表里的列,如下所示。

2022-11-27 15:27:50 458

原创 SQL 查找匹配项

可以匹配任意长度的连续字符。大多数 SQL 实现也提供了下划线(你想返回匹配某个特定字符串或模式的行。考虑下面的查询及其结果集。的位置会影响查询结果。)运算符,用于匹配单个字符。的字符串都会被检索出来。的两个部门中找到名字中含有字母。运算符和 SQL 通配符。模式匹配操作时,运算符。,任何(在任意位置)出现。把检索模式围起来,那么。开头的职位,那就应该在。结尾的职位,就需要在。

2022-11-27 14:48:29 1512

原创 SQL如何把Null值转换为实际值

值时,最好利用数据库的内置功能。在许多情况下,你会发现有不止一个函数能解决本实例中的问题。函数指定一个或多个参数。该函数会返回参数列表里的第一个非。函数只是恰好适用于所有的数据库。值,但是你想在返回结果里将其替换为非。也适用于所有数据库。函数更方便、更简洁。

2022-11-27 14:08:36 1186

原创 SQL 查找Null值

值不会等于或者不等于任何值,甚至不能与其自身作比较。来测试某一列的值是否为。来找到给定列的值不是。你想查找特定列的值为。

2022-11-26 02:19:19 3507

原创 SQL 随机返回若干行记录

看过 Oracle 的解决方案后,非 Oracle 用户可能会受到启发,因为 Oracle 的解决方案展示了(在理论上)其他数据库内部是如何实现该查询的。子句使用了函数,那么就需要按照该函数的返回值来排序,而函数返回的值是根据结果集里的每一行计算而来的。子句能够接受一个函数的返回值,并利用该值改变当前结果集的顺序。子句里使用该内置函数可以实现查询结果的随机排序。子句中的函数是数值常量,这一点很重要。使用数据库的内置函数来随机生成查询结果。中的技巧从随机排序结果里获取限定数目的行。函数,把该内置函数和。

2022-11-26 02:04:09 825

原创 SQL 限定返回行数

如上述处理过程所示,Oracle 会在取得某一行数据之后再为其编号,这是关键之处。运行正常的原因在于,Oracle 必须至少尝试一次读取,才能确定表里是否有记录。的函数,该函数会为结果集里的每一行指定一个行号(从 1 开始,逐渐增大)。这样的子句来指定查询结果的行数。比如一张很大的表,你只想返回10行简单看看。你想限定查询结果的行数。,希望只返回第 5 行。使用数据库的内置功能来控制返回的行数。和等式条件是不对的。的值来获得指定行数的结果集。行数据时,会发生如下的事情。行,这似乎与上述解释相矛盾。

2022-11-26 01:44:39 2035

原创 SQL 在SELECT语句里使用条件逻辑

表达式的执行结果取一个别名,使结果集更有可读性。例如,你想生成类似这样的结果:如果员工的工资少于。子句是可选的,若没有它,对于不满足测试条件的行,表达式能对查询结果执行条件逻辑判断。语句中针对查询结果值执行。若介于两者之间则返回。表达式来执行条件逻辑。表达式执行结果的别名。

2022-11-25 02:03:47 565

原创 SQL在WHERE子句中引用别名列

如果子查询中设置了别名,外面的字段可以直接用别名列,注意不要里外重复设置别名,或者做相同的字段处理,有两种方案:子查询中处理字段,外面直接查询处理后的字段别名;里面只做查询,外面做处理,但要注意外面的字段都是里面包含的。子句过滤掉部分行数据。但是,如果你尝试在 WHERE 子句中引用别名列,查询无法顺利执行。将含有别名列的查询放入内嵌视图,就可以在外层查询中引用别名列。子句中引用下列内容时,就可以用到上面的解决方案。子句先执行,就最初那个失败的查询例子而言,当。在这个简单的实例中,你可以不使用内嵌视图。

2022-11-25 01:47:19 1087

原创 SQL将多列的值合并为一列

函数的快捷方式,在 SQL Server 中则为。你想将多列的值合并为一列。使用数据库中的内置函数来串联多列的值。这些数据库把双竖线作为串联运算符。函数可以串联多列的值。表,并获得如下结果集。然而,你需要的数据来自。

2022-11-25 01:03:17 6979 1

原创 SQL创建别名

你可能想要修改检索结果的列名,使其更具可读性且更易于理解。考虑下面这个查询,它返回的是每个员工的工资和业务提成。创建好的别名对于查询语句大有裨益,它能让查询结果更易于理解。的形式来修改检索结果的列名。对于一些数据库而言,显然,检索结果应该让人容易理解。不是必需的,但所有的数据库都支持这个关键字。可以看到列名已更新为我们所要修改成的列名。关键字重新命名查询所返回的列,即是。

2022-11-25 00:12:16 678

原创 SQL 筛选列

语句里指定具体的列名,可以确保查询语句不会返回无关的数据。当在整个网络范围内检索数据时,这样做尤为重要,因为它避免了把时间浪费在检索不需要的数据上。例如,只查看员工的名字、部门编号和工资。通过SQL来筛选想要的列,有一张表,只想查看特定列的值。

2022-11-24 23:51:27 694 1

原创 SQL 查找满足多个查询条件的行

查找满足多个查询条件的行。使用带有OR和AND条件的WHERE子句。例如,如果你想找出部门编号为10的所有员工、有业务提成的所有员工以及部门编号是20且工资低于2000美元的所有员工。

2022-11-24 23:41:41 2779

原创 SQL筛选想要的行

SQL实例:持续将开发中遇到的各种场景记录下来,进行初、中、高级的归纳。

2022-11-24 22:57:10 1063

原创 SQL检索所有行和列

SQL开发实例(持续更新场景)

2022-11-24 16:20:07 1766

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除