【MySQL】创建高级联结

这篇具有很好参考价值的文章主要介绍了【MySQL】创建高级联结。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、使用表别名

二、使用不同类型的联结

1.自联结

2.自然联结

3.外部联结

3.使用带聚集函数的联结

4.使用联结和联结条件


一、使用表别名

别名除了用于列名和计算字段外,SQL还允许给表名起别名

起别名有两个好处:

  • 一个是缩短SQL语句;
  • 一个是允许在单条select语句中多次使用相同的表。

示例:

输入:select prod_name,prod_desc

          from products as p,vendors as v

          where p.vend_id = v.vend_id

          and prod_price = 4.5;

输出:

【MySQL】创建高级联结,MySQL,mysql,数据库,sql

 from子句中两个表都有别名,products AS p建立p作为products的别名,等等。这使得能使用省写的p而不是全名products。在此例子中,表别名只用于where子句。但是表别名不仅能用于where子句,它还可以用于select的列表、order by子句以及子句的其他部分。

注意:表别名只在查询执行中使用。与列别名不一样,表别名不反悔到客户机。

二、使用不同类型的联结

1.自联结

当在相同的一张表中查询且该表的表名要出现2次在select语句中时使用自联结。即自己和自己联结。

使用子查询:

输入:select prod_id,prod_name

           from products

           where vend_id =  

                                   (select vend_id

                                    from products

                                    where prod_id = 2);

使用自联结:

输入: select p1.prod_id,p2.prod_name

            from products as p1,products as p2

            where p1.vend_id = p2.vend_id

            and p2.prod_id = 2;

输出:

【MySQL】创建高级联结,MySQL,mysql,数据库,sql

 products第一次出现为别名p1,第二次出现为别名p2。select语句使用p1前缀明确的给出所需列的全名,如果不这样,MySQL将返回错误的数据。

自联结和子查询都可以进行在相同的表中进行查询,返回的结果是相同的,但是自联结更快一些。

2.自然联结

自然联结排除多次出现,使每个列只返回一次。

示例:

输入:

select c.*,o.order_num,o.order_date

           from customers as c,orders as o

           where c.cust_id = o.cust_id

           and prod_id = 3;

在这个例子中,通配符只对第一个表使用,所有其他列明确列出,所以没有重复的列被检索出来。

3.外部联结

许多联结将一个表的行与另一个表中的行进行联结,但有时候会需要包含没有关联行的那些行。

联结包含了那些在相关表中没有关联行的行。这种类型的联结被称为外部联结。

示例:

输入:select customers,cust_id,orders.order_num

           from customers inner join orders

          on customers.cust_id = orders.cust_id;

此处的inner join用来指定表,只不过要用on进行联结而不是where,传递出给on的实际条件与传递给where的相同。

输入:select customers.cust_id,orders.order_num

          from customers left outer join orders

          on customers.cust_id = orders_id;

以上两个查询语句返回的结果是相同的。

第二条select语句采用了outer join来指定联结的类型(代替where)。但是,与内部联结关联两个表中的行不同的是:外部联结还包括没有关联的行。在使用outer join语法时,必须使用right或left关键字指定包括其所有行的表(right指出的是outer join右边的表,left则相反)。left outer join则是选择from子句中左边的表(customers表)中选择所有行,right outer join 则是选择orders表中的所有行。

注意:在外部联结中可通过颠倒from或where子句中的表的顺序转换为右外部联结。因此,两种类型的外部联结都可以互换使用。

3.使用带聚集函数的联结

聚集函数用来汇总数据。这些函数也可以和联结一起使用。文章来源地址https://www.toymoban.com/news/detail-639374.html

4.使用联结和联结条件
  1. 注意所使用的联结类型。一般使用内部联结,但使用外部联结也是有效的
  2. 保证使用正确的联结条件,否则将返回不正确的数据
  3. 应该总是提供联结条件,否则会得出笛卡儿积
  4. 在一个联结中可以包含多个表,甚至对于每个联结可以采用不同的联结类型。但应该在测试它们之前,分别测试每个联结。这将使故障排除更为方便。

到了这里,关于【MySQL】创建高级联结的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • SQL笔记(1)——MySQL创建数据库(收藏吃灰版)

    本文详细记录MySQL创建一个数据库的过程,不只是构建步骤,更多的是每一步涉及到的知识点。一般创建数据库有两种方式,一种是命令,另外一种就是通过数据库管理工具,本文主要记录通过命令的方式创建; 后面的学习也都是基于这个数据库进行的; 创建一个大学生成绩

    2024年02月08日
    浏览(56)
  • MySQL数据库 --- 高级篇

    1.1.1、连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上

    2024年02月08日
    浏览(56)
  • MySQL数据库高级操作

    if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建 int(4) zerofill:表示若数值不满4位数,则前面用“0”填充,例0001 auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添

    2024年02月09日
    浏览(83)
  • 【MySQL 】MySQL 创建数据库, MySQL 删除数据库,MySQL 选择数据库

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: 以下命令简单的演示了创建数据库的过程,

    2024年02月13日
    浏览(92)
  • MySQL数据库管理高级语句

    复制表及内容     克隆表 获取数据表的表结构、索引等信息    清空表,删除表内的所有数据       删除的特点: 创建临时表 临时表创建成功之后,使用SHOWTABLES命令是看不到创建的临时表的, 临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查

    2024年02月11日
    浏览(70)
  • MySQL数据库高级查询语句

    基于这两个数据库表格来实现以下实验 concat(x,y)将提供的参数x和y拼接成一个字符串 trim()返回去除指定格式的值 GROUP BY 有一个原则,凡是在 GROUP BY 后面出现的字段,必须在 SELECT 后面出现; 凡是在 SELECT 后面出现的、且未在聚合函数中出现的字段,必须出现在 GROUP BY 后

    2024年02月11日
    浏览(70)
  • MySQL数据库——高级查询语句

    数据库是用来存储数据,更新,查询数据的工具,而查询数据是一个数据库最为核心的功能,数据库是用来承载信息,而信息是用来分析和查看的。所以掌握更为精细化的查询方式是很有必要的。本文将围绕数据的高级查询语句展开。 1.指定指字段进行查询——SELECT 语法:

    2024年02月11日
    浏览(94)
  • 数据库应用:MySQL高级语句(一)

    目录 一、理论 1.常用查询 2.函数 3.进阶查询 二、实验 1.普通查询 2.函数 3.进阶查询 三、问题 1.MySQL || 运算符不生效 四、总结 常用查询包括:增、删、改、查; 对 MySQL 数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。 (1)selelct select,显示表格中

    2024年02月17日
    浏览(88)
  • linux高级管理——访问MYSQL数据库

    一、认识数据库系统:  MySQL数据库系统也是一个典型的C/S(客户端/服务器)架构的应用,要访问MySQL数据库需要使用专门的客户端软件。在Linux系统中,最简单、易用的MySQL客户端软件是其自带的mysql命令工具。 1.登录到MySQL服务器 经过安装后的初始化过程,MySQL 数据库的默

    2024年02月04日
    浏览(43)
  • 《MySQL高级篇》十五、其他数据库日志

    我们在讲解数据库事务时,讲过两种日志: 重做日志 、 回滚日志 。 对于线上数据库应用系统,突然遭遇 数据库宕机 怎么办?在这种情况下,定位宕机的原因就非常关键。可以查看数据库的错误日志。因为日志中记录了数据库运行中的诊断信息,包括了错误、警告和注释等信

    2024年02月14日
    浏览(62)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包