SQL的1999语法

2024-02-16 23:28
文章标签 sql 语法 database 1999

本文主要是介绍SQL的1999语法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

交叉连接

实现交叉连接

自然连接

实现自然连接(实际上就是内连接)

ON和USING

使用自然连接时要求两张表的字段名称相同,但是如果不相同或者两张表中有两组字段是重名,这时就要利用 ON 子句指定关联条件,利用 USING 子句设置关联字段

利用 USiNG 子句设置关联字段实现自然连接

利用 ON 子句设置关联条件

外连接

左外连接

全外连接


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

对于数据表的连接操作,从实际使用来说,各个数据库都是支持的,但是外连接使 用“ (+) ”是 Oracle 自带的,其他数据库是不支持的。所以对所有的数据库,进行表连接最好的做法是利用以下的语法完成

select [distinct] * | 列 [ 别名 ] , 列 [ 别名 ] , ...
from 表 1 [ 别名 ] [cross join 表 2 [ 别名 ]] [natural join 表 2 [ 别名 ]] [join 表 2 [ 别名 ] on ( 条件 ) | using( 关联字段 )] [left | right | full outer join 表 2  [ 别名 ] on( 条件 )] ;

在进行表连接的时候,如果是内连接,则使用等值判断;

如果是外连接,则使用 left、outer、full等操作。

而上面语法中的 cross join、natural join、join很少使用。

不过我们也简单看 一下如何操作它们

交叉连接

目的是产生笛卡尔积

语法如下

select [distinct] * | 列 [ 别名 ] , 列 [ 别名 ] , ...
from 表 1 [ 别名 ] cross join 表 2 [ 别名 ] ;

实现交叉连接

select *
from emp cross join dept;

执行有很多行,这里我就不示范了,等同于

select *
from emp,dept;

大家可以试试

自然连接

利用关联字段,自己进行笛卡尔积的消除(只要字段名称相同即可,系统会自动匹配) 

select [distinct] * | 列 [ 别名 ] , 列 [ 别名 ] , ...
from 表 1 [ 别名 ] natural join 表 2 [ 别名 ] ;

实现自然连接(实际上就是内连接)

select *
from emp natural join dept;

上面代码等同于前面所介绍的查询语句

select *
from emp,dept
where emp.deptno=dept.deptno;

大家可以自己试试

ON和USING

使用自然连接时要求两张表的字段名称相同,但是如果不相同或者两张表中有两组字段是重名,这时就要利用 ON 子句指定关联条件,利用 USING 子句设置关联字段

利用 USiNG 子句设置关联字段实现自然连接

SQL> select *2  from emp join dept using(deptno);DEPTNO      EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM DNAMELOC
---------- ---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------------------------- --------------------------10       7839 KING                 PRESIDENT                     17-11月-81           5000            ACCOUNTINGNEW YORK10       7782 CLARK                MANAGER                  7839 09-6月 -81           2450            ACCOUNTINGNEW YORK10       7934 MILLER               CLERK                    7782 23-1月 -82           1300            ACCOUNTINGNEW YORK20       7902 FORD                 ANALYST                  7566 03-12月-81           3000            RESEARCHDALLAS20       7369 SMITH                CLERK                    7902 17-12月-80            800            RESEARCHDALLAS20       7566 JONES                MANAGER                  7839 02-4月 -81           2975            RESEARCHDALLAS30       7900 JAMES                CLERK                    7698 03-12月-81            950            SALESCHICAGO30       7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0 SALESCHICAGO30       7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400 SALESCHICAGO30       7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500 SALESCHICAGO30       7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300 SALESCHICAGODEPTNO      EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM DNAMELOC
---------- ---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------------------------- --------------------------30       7698 BLAKE                MANAGER                  7839 01-5月 -81           2850            SALESCHICAGO已选择 12 行。

利用 ON 子句设置关联条件

SQL> select *2  from emp e join dept d on(e.deptno=d.deptno);EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO     DEPTNO DNAMELOC
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- ---------- ---------------------------- --------------------------7839 KING                 PRESIDENT                     17-11月-81           5000                    10         10 ACCOUNTINGNEW YORK7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10         10 ACCOUNTINGNEW YORK7934 MILLER               CLERK                    7782 23-1月 -82           1300                    10         10 ACCOUNTINGNEW YORK7902 FORD                 ANALYST                  7566 03-12月-81           3000                    20         20 RESEARCHDALLAS7369 SMITH                CLERK                    7902 17-12月-80            800                    20         20 RESEARCHDALLAS7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20         20 RESEARCHDALLAS7900 JAMES                CLERK                    7698 03-12月-81            950                    30         30 SALESCHICAGO7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         30         30 SALESCHICAGO7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         30         30 SALESCHICAGO7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         30         30 SALESCHICAGO7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30         30 SALESCHICAGOEMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO     DEPTNO DNAMELOC
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- ---------- ---------------------------- --------------------------7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30         30 SALESCHICAGO已选择 12 行。

同样,上面代码效果等同于前面所介绍的查询语句

select *
from emp,dept
where emp.deptno=dept.deptno;

不过显示结果的时候,deptno 字段只显示一次,而前面介绍的方法会显示两次

外连接

select [distinct] * | 列 [ 别名 ] , 列 [ 别名 ] , ...
from 表 1 [ 别名 ] left | right | full outer join 表 2 ;

左外连接

select *
from emp e left outer join dept d on(e.deptno=d.deptno);

上面代码等同于前面所介绍的查询语句

select *
from emp e,dept d
where e.deptno=d.deptno(+);

全外连接

SQL> select *2  from emp e full outer join dept d on(e.deptno=d.deptno);EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO     DEPTNO DNAMELOC
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- ---------- ---------------------------- --------------------------7369 SMITH                CLERK                    7902 17-12月-80            800                    20         20 RESEARCHDALLAS7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30         30 SALESCHICAGO7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         30         30 SALESCHICAGO7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20         20 RESEARCHDALLAS7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         30         30 SALESCHICAGO7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30         30 SALESCHICAGO7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10         10 ACCOUNTINGNEW YORK7839 KING                 PRESIDENT                     17-11月-81           5000                    10         10 ACCOUNTINGNEW YORK7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         30         30 SALESCHICAGO7900 JAMES                CLERK                    7698 03-12月-81            950                    30         30 SALESCHICAGO7902 FORD                 ANALYST                  7566 03-12月-81           3000                    20         20 RESEARCHDALLASEMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO     DEPTNO DNAMELOC
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ---------- ---------- ---------------------------- --------------------------7934 MILLER               CLERK                    7782 23-1月 -82           1300                    10         10 ACCOUNTINGNEW YORK8989 HELLO40 OPERATIONSBOSTON已选择 14 行。

此时把没有员工的部门和没有部门的员工的信息都显示出来了

这篇关于SQL的1999语法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/715995

相关文章

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

mysql中insert into的基本用法和一些示例

《mysql中insertinto的基本用法和一些示例》INSERTINTO用于向MySQL表插入新行,支持单行/多行及部分列插入,下面给大家介绍mysql中insertinto的基本用法和一些示例... 目录基本语法插入单行数据插入多行数据插入部分列的数据插入默认值注意事项在mysql中,INSERT I

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MySQL 衍生表(Derived Tables)的使用

《MySQL衍生表(DerivedTables)的使用》本文主要介绍了MySQL衍生表(DerivedTables)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录一、衍生表简介1.1 衍生表基本用法1.2 自定义列名1.3 衍生表的局限在SQL的查询语句select

MySQL 横向衍生表(Lateral Derived Tables)的实现

《MySQL横向衍生表(LateralDerivedTables)的实现》横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来... 目录一、横向衍生表用法示例1.1 用法示例1.2 使用建议前面我们介绍过mysql中的衍生表(From子句