`
孤独舞者
  • 浏览: 88810 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

遗忘的sql 连接查询

阅读更多

SELECT语句的FROM子句可以指定以下几种类型的连接
FROM子句关键字        相应的结果集
CROSS JOIN        笛卡尔乘积(所有可能的行对)
INNER JOIN        仅对满足连接条件的CROSS中的列
LEFT OUTER JOIN        一个表满足条件的行,和另一个表的所有行
RIGHT OUTER JOIN        与LEFT相同,但两个表的角色互换
FULL OUTER JOIN        LEFT OUTER 和 RIGHT OUTER中所有行的超集

2.2 内连接(Inner Join)
内连接是最常见的一种连接,它页被称为普通连接,而E.FCodd最早称之为自然连接。
下面是ANSI SQL-92标准
select *
from  t_institution i
inner join t_teller t
on i.inst_no = t.inst_no
where i.inst_no = "5801"
其中inner可以省略。
等价于早期的连接语法
select *
from t_institution i, t_teller t
where i.inst_no = t.inst_no
and i.inst_no = "5801"

2.3 外连接
2.3.1        左外连接(Left Outer Jion)
select *
from  t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
其中outer可以省略。
2.3.2        右外连接(Rigt Outer Jion)
select *
from  t_institution i
right outer join t_teller t
on i.inst_no = t.inst_no
2.3.3        全外连接(Full Outer)
全外连接返回参与连接的两个数据集合中的全部数据,无论它们是否具有与之相匹配的行。在功能上,它等价于对这两个数据集合分别进行左外连接和右外连接,然后再使用消去重复行的并操作将上述两个结果集合并为一个结果集。
在现实生活中,参照完整性约束可以减少对于全外连接的使用,一般情况下左外连接就足够了。在数据库中没有利用清晰、规范的约束来防范错误数据情况下,全外连接就变得非常有用了,你可以使用它来清理数据库中的数据。
select *
from  t_institution i
full outer join t_teller t
on i.inst_no = t.inst_no
2.3.4        外连接与条件配合使用
当 在内连接查询中加入条件是,无论是将它加入到join子句,还是加入到where子句,其效果是完全一样的,但对于外连接情况就不同了。当把条件加入到 join子句时,SQL Server、Informix会返回外连接表的全部行,然后使用指定的条件返回第二个表的行。如果将条件放到where子句中,SQL Server将会首先进行连接操作,然后使用where子句对连接后的行进行筛选。下面的两个查询展示了条件放置位子对执行结果的影响:
条件在join子句
select *
from  t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
and i.inst_no = “5801”
结果是:
inst_no    inst_name            inst_no    teller_no  teller_name
5801       天河区               5801       0001       tom
5801       天河区               5801       0002       david
5802       越秀区
5803       白云区
条件在where子句
select *
from  t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
where i.inst_no = “5801”
结果是:
inst_no    inst_name            inst_no    teller_no  teller_name
5801       天河区               5801       0001       tom
5801       天河区               5801       0002       david

2.4 自身连接
自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。例如人力资源数据库中雇员与老板的关系。
下面例子是在机构表中查找本机构和上级机构的信息。
select s.inst_no superior_inst, s.inst_name sup_inst_name, i.inst_no, i.inst_name
from t_institution i
join t_institution s
on i.superior_inst = s.inst_no

结果是:
superior_inst sup_inst_name        inst_no    inst_name
800           广州市               5801       天河区
800           广州市               5802       越秀区
800           广州市               5803       白云区

2.5 交叉(无限制) 连接
交 叉连接用于对两个源表进行纯关系代数的乘运算。它不使用连接条件来限制结果集合,而是将分别来自两个数据源中的行以所有可能的方式进行组合。数据集合中一 的每个行都要与数据集合二中的每一个行分别组成一个新的行。例如,如果第一个数据源中有5个行,而第二个数据源中有4个行,那么在它们之间进行交叉连接就 会产生20个行。人们将这种类型的结果集称为笛卡尔乘积。
大多数交叉连接都是由于错误操作而造成的;但是它们却非常适合向数据库中填充例子数据,或者预先创建一些空行以便为程序执行期间所要填充的数据保留空间。
select *
from  t_institution i
cross join t_teller t
在交叉连接中没有on条件子句

分享到:
评论

相关推荐

    Asp连接SQL Server 2012的方法.pdf

    在动态网站开发中,将Asp与SQL Server 2012数据库连接,可以实现用户数据的存储、检索、更新和删除等操作。 动态网站与静态网站的主要区别在于,动态网站通过脚本语言和数据库的支持,能够提供用户交互和内容更新等...

    ZKtime5.0考勤管理系统sql 数据库建立及连接方法.pdf

    通过以上步骤,不仅可以创建并初始化数据库,还可以实现ZKtime5.0考勤管理系统与数据库的有效连接,以及解决常见的密码遗忘问题。如果在操作过程中遇到任何问题,可以随时联系熵基科技的售后服务热线400-6900-999或...

    SQL Server 2005 使用sa连接不上的各种原因

    总结起来,SQL Server 2005中`sa`账户连接失败的问题多与密码遗忘、通信协议配置、默认数据库设定、身份验证模式以及登录状态有关。解决这些问题通常需要在SSMS中调整相关设置,并可能涉及重启服务。理解并掌握这些...

    SQL2000更改SA密码工具

    3. 输入完信息后,工具会尝试连接到SQL Server。如果连接成功,它会列出可用的数据库实例。 4. 选择你要修改密码的数据库实例,然后按照工具的提示进行操作。可能需要输入新的SA密码两次以确认无误。 5. 确认新密码...

    SQL_Assistant_9.5.469

    SQL_Assistant_9.5.469是一款数据库管理和查询优化工具,它的主要功能是通过提供SQL智能感知和代码辅助来帮助用户更有效地编写SQL代码。该工具支持众多主流数据库系统,包括但不限于Oracle, Microsoft SQL Server, ...

    SQL Server 密码修改工具

    该工具的核心功能在于能够连接到SQL Server的master数据库。master数据库是SQL Server系统数据库之一,它存储了所有服务器级别的信息,包括数据库信息、登录账户、系统配置等,因此修改密码必须通过这个数据库进行...

    ODBC Driver 18 for SQL Server

    适用的SQL Server版本: SQL Server 2019 SQL Server 2017 SQL Server 2016 SQL Server 2014 SQL Server 2012 SQL Server 2008 R2 SP1 SQL Server 2008 SP2

    SQL查询基础

    **描述概述**:本文档作为Oracle数据库的基础知识汇总,着重讲解了在日常工作中频繁使用的SQL功能,尤其是那些容易被遗忘但又非常实用的技巧,如各种SQL函数的应用。 #### 二、简单查询语句 1. **基本查询语句**:...

    SQL 密码清除

    3. 打开查询分析器或SQL Server Management Studio,连接到SQL Server实例。 4. 运行SQL语句`ALTER LOGIN SA WITH PASSWORD = '新密码'`来更改密码。 5. 重新启动SQL Server服务,使其恢复正常多用户模式。 在SQL ...

    SQLServer密码修改器

    总的来说,SQL Server密码修改器是一个非常实用的工具,能够快速解决SQL Server密码遗忘的问题,减轻了管理员在密码管理上的困扰。然而,为了系统的安全,定期更换和管理好密码仍然是必要的,避免过度依赖这类工具。...

    SQL数据库SA口令清除

    SA账户是SQL Server的最高权限用户,拥有对数据库实例的全部控制权,因此,当SA口令丢失或遗忘时,需要采取特殊的步骤来重置或清除它。 SQL Server 2000是微软早期的一款数据库产品,虽然现在已经过时,但在很多...

    sql数据库管理员账号sa密码清除工具

    3. **连接数据库实例**:在工具的界面中,输入你的SQL Server实例名、服务器类型(默认是数据库引擎)、身份验证方式(选择“Windows身份验证”或“SQL Server身份验证”,根据实际情况选择),然后点击连接。...

    自动备份sqlserver JOB 用脚本

    - 使用`sqlcmd`工具连接到SQL Server。 - 执行备份命令,例如`sqlcmd -S <server_name> -U <username> -P <password> -Q "BACKUP DATABASE <database_name> TO DISK = '<backup_path>\<database_name>_bak.bak'"`。 ...

    MS-sql数据库密码忘了还原数据库命令

    3. **连接到数据库**:使用`osql`或`sqlcmd`等命令行工具,以系统管理员身份(如`NT AUTHORITY\SYSTEM`)连接到SQL Server实例。 4. **执行重置密码的命令**:在连接成功后,执行`sp_password`存储过程来重置指定...

    SQLServer管理员账号SA密码修改工具2.0

    在IT领域,数据库管理系统是核心组成部分之一,而Microsoft SQL Server作为一款广泛应用的关系型数据库系统,其安全性至关重要。本文将深入探讨SQL Server中的管理员账号SA(System Administrator)以及如何使用"SQL...

    SQL2000 2005密码修改工具

    2. **权限要求**:为了能够更改密码,工具通常需要在具有足够权限的环境中运行,例如,需要操作系统级别的管理员权限或已连接到SQL Server的足够权限的其他账户。 3. **数据安全**:在修改密码前,建议备份重要的...

    手把手教你通过案例学SQL教程[视频课程].txt打包整理.zip

    1. 子查询:在SQL查询中嵌套另一个查询,用于获取满足特定条件的数据。 2. 分组与聚合函数:GROUP BY用于对数据进行分组,COUNT、SUM、AVG、MAX和MIN等聚合函数用于计算分组后的统计信息。 3. 视图(View):虚拟表...

    SQL一键重置SA密码工具.rar

    2. **连接到服务器**:启动工具后,输入SQL Server实例的名称,可能是本地主机(localhost)或者其他远程服务器的地址。你可能还需要提供SQL Server的TCP端口号(默认为1433)。 3. **身份验证**:选择合适的验证...

    SQLServer2005混合模式登录配置(用户登录错误18452,233,4064)

    在SQL Server 2005中,用户可能会遇到多种登录问题,这通常涉及到服务器的身份验证模式、远程连接配置、登录密码遗忘以及默认数据库设置。以下是对这些常见问题的详细解答: 1. **错误18452:用户登录失败,与可信...

    修改Microsoft SQL Server 2005中sa的密码.docx

    1. 打开 SQL Server,连接数据库引擎,身份验证方式选择无所谓,不知道 sa 密码的就选“Windows 身份验证”,连接数据库。 2. 展开,在“安全性”>“登录名”中找到 sa,右击,选择“属性”。在右侧的“常规”选项中...

Global site tag (gtag.js) - Google Analytics