MySQL基础~NATURAL JOIN(自然连接) 和USING的使用(SQL99语法新特性)

这篇具有很好参考价值的文章主要介绍了MySQL基础~NATURAL JOIN(自然连接) 和USING的使用(SQL99语法新特性)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

NATURAL JOIN

我们在查询两张表时,可能会将连接条件设为相同的字段,如下:

比如我们想查询员工的id、姓名和所在部门,
会从员工表和部门表中,
根据部门id和管理id是否相等进行查询

这里的连接条件是两张表中共有的字段:部门id和管理id,
通过这两个字段是否分别相同来进行判断

mysql>  SELECT employee_id,last_name,department_name
    ->  FROM employees e JOIN departments d
    ->  ON e.`department_id`=d.`department_id`
    ->  AND e.`manager_id`=d.`manager_id`;

而有了NATURAL JOIN 自然连接后,它会帮我们自动查询两张表中 所有相同的字段,然后 进行等值连接,这样就可以直接省略连接条件

mysql>  SELECT employee_id,last_name,department_name
    ->  FROM employees NATURAL JOIN departments;

这两种写法效果相同,查询到的都是同一个结果

优点是简化了SQL语句,查询更便捷,缺点是不够灵活,如果我们只想根据一个相同字段进行查询的时候,这个时候就无法使用自然连接

USING

在进行等值连接查询时,我们可能会写出下面的SQL语句:


 SELECT employee_id,last_name,department_name
 FROM employees e,departments d
 WHERE e.department_id=d.department_id;
//在e和d两张表中 根据department_id是否相等查询出员工的id、姓名、部门

当比较的两个字段同名的时候,我们可以使用USINGUSING可以将数据表里面的同名字段进行等值连接,需要搭配JOIN一起使用.

 SELECT employee_id,last_name,department_name
 FROM employees e JOIN departments d
 USING(department_id);

优点:简化了SQL语句,缺点:无法表示自连接

表的约束条件总结与规范

多表连接的约束条件有三种方式:

  • WHERE:普遍适用
  • JOIN...ON:只能写关联条件
  • JOIN...USING:关联的字段在表中名称和字段值必须相等

规范

多表连接时,需要控制表的数量,不能太多,多表连接和for循环嵌套类似,太多了消耗资源,会导致SQL查询性能下降严重.

【 强制】超过三个表禁止 join。需要 join 的字段,数据类型保持绝对一致;多表关联查询时, 保证被关联的字段需要有索引。
说明:即使双表 join 也要注意表索引、SQL 性能。
来源:阿里巴巴《Java开发手册》

SQL99标准了解

随着历史的发展,SQL出现了很多不同的版本,随之而来的就是不同版本的标准规范

我们使用的SQL有两个最主要的标准规范,分别是SQL92SQL99,92和99就是标准提出的年份,除了92和99年的这两个标准外,还有其他很多的标准,但是由于其他标准内容过于复杂和庞大,很少有人能掌握所有的内容,所以标准流行范围不广。

SQL92语法简单,但是写出的SQL语句过长,可读性差,而SQL99语法可读性强,但是语法复杂.
SQL92SQL99是经典的SQL标准,也被称为SQL-2SQL-3标准.文章来源地址https://www.toymoban.com/news/detail-439821.html

到了这里,关于MySQL基础~NATURAL JOIN(自然连接) 和USING的使用(SQL99语法新特性)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • SQL中的——左连接(Left join)、右连接(Right join)、内连接(Inner join)

    SQL中的——左连接(Left join)、右连接(Right join)、内连接(Inner join)

    最近有一个开发需求,需要实现一个复杂年度报表,前后端都是博主开发,这里的业务逻辑比较复杂,也很锻炼sql能力,这里博主也将表的内外连接做了一个整理分享给大家 首先还是介绍一下这三个的定义 1.Left join:即 左连接 ,是以左表为基础,根据ON后给出的两表的条件

    2024年02月12日
    浏览(6)
  • SQL中的内连接(inner join)用法

    SQL中的内连接(inner join)用法

    一、什么是内连接(inner join) `INNER JOIN`是SQL中的一种连接类型,用于将两个或多个表中的记录根据某个条件进行匹配,并返回匹配的记录。它只返回那些在两个表中都有匹配的记录。 以下是一个示例的`INNER JOIN`查询语句: SELECT table1.column1, table2.column2 FROM table1 INNER JOIN tabl

    2024年02月04日
    浏览(11)
  • GaussDB数据库SQL系列-表连接(JOIN)

    GaussDB数据库SQL系列-表连接(JOIN)

    目录 一、前言 二、GaussDB JOIN 1、LEFT JOIN 2、LEFT JOIN EXCLUDING INNER JOIN 3、RIGHT JOIN 4、LEFT JOIN EXCLUDING INNER JOIN 5、INNER JOIN 6、FULL OUTER JOIN 7、FULL OUTER JOIN EXCLUDING INNER JOIN 三、GaussDB 实验示例 1、初始化实验表 2、LEFT JOIN(示例) 3、RIGTH JOIN(示例) 4、INNER JOIN(示例) 5、FULL JOIN(示

    2024年02月13日
    浏览(43)
  • 软件测试|深入理解SQL CROSS JOIN:交叉连接

    软件测试|深入理解SQL CROSS JOIN:交叉连接

    简介 在SQL查询中,CROSS JOIN是一种用于从两个或多个表中获取所有可能组合的连接方式。它不依赖于任何关联条件,而是返回两个表中的每一行与另一个表中的每一行的所有组合。CROSS JOIN可以用于生成笛卡尔积,它在某些情况下非常有用,但在其他情况下可能会导致结果集过

    2024年01月24日
    浏览(9)
  • SQL入门之第十讲——INNER JOIN 内连接

    SQL入门之第十讲——INNER JOIN 内连接

    在实际的业务当中,往往需要多张表连接查询,这就会涉及到JOIN 连接 1. JOIN 连接的类型 INNER JOIN :内连接, 可以只写JOIN ,只有连接的两个表中,都存在连接标准的数据才会保留下来,相当于两个表的交集。如果前后连接的是同一个表,也叫自连接。 LEFT JOIN :左连接,也叫左

    2024年02月02日
    浏览(7)
  • MySQL基础篇——MySQL数据库客户端连接,数据模型,SQL知识

    MySQL基础篇——MySQL数据库客户端连接,数据模型,SQL知识

    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.客户端连接MySQL 二. 数据模型 1.关系型数据库(RDBMS) 2.数据模型 三.SQL 1.SQL通用语法 2.SQL分类 3.数据库操作 1). 查

    2024年02月06日
    浏览(12)
  • Using Natural Language Processing for Sentiment Analysi

    作者:禅与计算机程序设计艺术 Sentiment analysis is a widely studied and practical technique to extract subjective information from text data such as reviews, social media posts, online comments etc. It has many applications including customer feedback analysis, brand reputation management, product recommendation systems, marketing efforts, and

    2024年02月08日
    浏览(10)
  • Natural Language Processing自然语言处理(NLP)

       欢迎来到此处,这里是我边学*边 整理 的有关机械学*/深度学*的相关笔记。先前我对这方面的知识不是很了解,笔记整理必然有不妥之处,请见谅并斧正。 目录: 1.Word Vectors(词向量) 2.Neural Classifiers(神经分类器) 3.神经网络和反向传播 4.Dependency Parsing 5.语言模型(LM)和循环神经

    2024年02月08日
    浏览(20)
  • 自然语言处理(Natural Language Processing,NLP)

    自然语言处理(Natural Language Processing,NLP)是人工智能领域的一个重要分支,旨在使计算机能够理解、处理和生成人类自然语言。NLP 的目标是让计算机能够像人类一样有效地理解和交流,从而实现更自然、更智能的人机交互。 NLP的理解概括: 文本理解和分析: NLP技术能够从文

    2024年02月14日
    浏览(37)
  • 自然语言处理(Natural Language Processing,NLP)解密

    自然语言处理(Natural Language Processing,NLP)解密

    专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏: Python 专栏: Redis 专栏: TensorFlow 专栏: Logback 专栏: 量子计算: 量子计算 | 解密著名量子算法Shor算法和Grover算法 AI机器学习实战: AI机器学习实战 | 使用 Python 和 scikit-learn 库进行情感分析 AI机器学习 | 基于lib

    2024年01月21日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包