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双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

MySQL错误代码2058和2059的解决办法

《MySQL错误代码2058和2059的解决办法》:本文主要介绍MySQL错误代码2058和2059的解决办法,2058和2059的错误码核心都是你用的客户端工具和mysql版本的密码插件不匹配,... 目录1. 前置理解2.报错现象3.解决办法(敲重点!!!)1. php前置理解2058和2059的错误

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们