mysql--浅谈多表查询1
这是对自己学习燕十八老师mysql教程的总结,非常感谢燕十八老师。
依赖软件:mysql5.6
系统环境:win
连接查询
在谈连接查询之前我们需要对数学上的笛卡尔积有一定的了解
现在有两个集合m和n
m = (m1,m2,.....mx)
n =(n1,n2,.....ny)
m*n得到的笛卡尔积有多少个元素?
答:m*n有x*y个元素
连接查询有以下类型
1、左连接
2、右连接
3、内连接
连接查询的作用
从2张或多张表中取出有关联的数据
3种连接查询的详细说明
1、左连接
A left join B on 条件;
这样形成了一个结果集,可以看成一张表 设为C
C表有A,B中的所有列;可以做所有表的操作
考虑到兼容问题和理解上的容易程度都推荐用左连接
# 语法
Select 查询项
from
表名 left join 表名 on 表名.列名 = 表名.列名 # 我是这样理解左连接的:左表不动,右表来匹配 # 示例
# 用左连接取出两表cat_id 对应的cat_name
select goods_id,goods.cat_id,category.cat_id,cat_name,goods_name
from
goods left join category on goods.cat_id=category.cat_id;
2、右连接
左右连接可以互换
A left join B <==> B right join A
A right join B on 条件;
这样形成了一个结果集,可以看成一张表 设为C
C表有A,B中的所有列;可以做所有表的操作
# 语法
Select 查询项
from
表名 right join 表名 on 表名.列名 = 表名.列名 # 我是这样理解右连接的:右表不动,左表来匹配 # 示例
# 用右连接取出两表cat_id 对应的cat_name
select goods_id,goods.cat_id,category.cat_id,cat_name,goods_name
from
category right join goods on category.cat_id=goods.cat_id;
3、内连接
B inner join A on 条件;
这样形成了一个结果集,可以看成一张表 设为C
C表有A,B中的所有列;可以做所有表的操作
# 语法
Select 查询项
from
表名 inner join 表名 on 表名.列名 = 表名.列名 # 我是这样理解内连接的:右左连接的交集 # 示例
# 用内连接取出两表cat_id 对应的cat_name
select goods_id,goods.cat_id,category.cat_id,cat_name,goods_name
from
goods inner join category on category.cat_id=goods.cat_id;
小练习
要求:
Match的hostTeamID与guestTeamID都与Team中的teamID关联
查出 2006-6-1 到2006-7-1之间举行的所有比赛,并且用以下形式列出:
拜仁 2:0 不来梅 2006-6-21
建表时特别主要match是mysql的关键字
select t1.teamName,match_Result,t2.teamName,match_Time
from
match1 left join Team as t1
on match1.hostTeamID=t1.teamID
left join Team as t2
on match1.guestTeamID =t2.teamID
where match_Time between '2006-06-01 and '2006-07-01';
联合查询
union查询
使用条件:只要列数一样即可合并(唯一要求)
语法:
sql1 union sql2 表操作
union对重复行的处理:union会去重,union all 不去重复
# 示例1
# 用union取出第4个栏目的商品,第5个栏目的商品,并按价格升序排列 select cat_id,shop_price,goods_name from goods where cat_id=4
union
select cat_id,shop_price,goods_name from goods where cat_id=5
order by shop_price asc;
内层的order by 如果没有影响结果集的结果则将被优化过滤掉
# 示例2
# 用union查出第三个栏目下价格前三高的商品,和第四个栏目下价格前2高的商品
(select cat_id,shop_price,goods_name from goods
where cat_id=3 order by shop_price desc limit 3)
union
(select cat_id,shop_price,goods_name from goods
where cat_id=4 order by shop_price desc limit 2);
小练习
要求:
将两张结构一样的表相同id的值相加,返回所有id和值
# 第一步 将两表合并成一张表,即表c
select id,num from a
union all
select id,num from b # 第二步对表c from型子查询操作,
select id,sum(num) as num
from (select id,num from a
union all
select id,num from b) as c
group by id;
mysql--浅谈多表查询1的更多相关文章
- Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...
- mysql 数据操作 单表查询 目录
mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...
- mysql 数据操作 多表查询 目录
mysql 数据操作 多表查询 准备 多表连接查询介绍 mysql 数据操作 多表查询 多表连接查询 笛卡尔积 mysql 数据操作 多表查询 多表连接查询 内连接 mysql 数据操作 多表查询 多 ...
- MySQL数据库语法-多表查询练习一
MySQL数据库语法-多表查询练习一 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要介绍的多表查询的外键约束,以及如何使用外链接和内连接查询数据信息. 一.数据表和测试 ...
- mysql 数据操作 单表查询 where 约束 目录
mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...
- mysql 数据操作 单表查询 group by 分组 目录
mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况 ...
- MySQL数据库之单表查询中关键字的执行顺序
目录 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 2 执行顺序 3 关键字使用语法 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from ...
- mysql中的回表查询与索引覆盖
了解一下MySQL中的回表查询与索引覆盖. 回表查询 要说回表查询,先要从InnoDB的索引实现说起.InnoDB有两大类索引,一类是聚集索引(Clustered Index),一类是普通索引(Sec ...
- MySQL数据库语法-单表查询练习
MySQL数据库语法-单表查询练习 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要是对聚合函数和分组的练习. 一.数据表和测试数据准备 /* @author :yinz ...
- mysql 基础入门 单表查询
单表查询 select 表头,表头 as 别名 ,表头(+-*/的运算) from table_a 1.条件查询 where + 条件 <> , != 不等于 = 等于,也可以表示字符串值 ...
随机推荐
- Data Structure Binary Search Tree: Inorder Successor in Binary Search Tree
struct node { int val; node *left; node *right; node *parent; node() : val(), left(NULL), right(NULL ...
- 深入浅出,JS原型链的工作原理
前言:原型链,即原型链条.它是由原型.原型的原型.原型的原型的原型...这一规则组合成的,经常被应用于继承. 原型的作用在JS中,每个对象都有自己的原型.当我们访问对象的属性和方法时,JS会先访问对象 ...
- uboot 2013.01 代码简析(1)开发板配置
u-boot下载地址:ftp://ftp.denx.de/pub/u-boot/u-boot-2013.01.01.tar.bz2 下载之后对该文件进行解压. 我试着分析smdk2410_config ...
- Strom 消息处理机制 中英对照翻译 (Storm如何保证消息被完全处理)
官方链接: http://storm.incubator.apache.org/documentation/Guaranteeing-message-processing.html What does ...
- java编程实例
脚本代码: 1. [代码] package com.gufengxiachen.sthreadchatapp;/** * @author GUXIA */import java.io.Buffered ...
- ZOJ 3640 Help Me Escape:期望dp
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3640 题意: 有一个吸血鬼被困住了,他要逃跑... 他面前有n条 ...
- CI公用模型
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * SEO管理系统 -- 公用模型 ...
- L87
Fear Makes Art More Engaging Emmanuel Kant spoke often about the sublime, and specifically how art b ...
- COM组件宏观认识
一直搞不清楚COM到底是个什么东西,记录一些个人感想,可能很多错误的,慢慢消化. 一.宏观认识: 1.COM(组件对象模型)是一种标准,规则,要求,即即于建筑设计指标要求. 2.语言无关性,因为是建立 ...
- 递归/非递归----python深度遍历二叉树(前序遍历,中序遍历,后序遍历)
递归代码:递归实现很简单 '二叉树结点类' class TreeNode: def __init__(self, x): self.val = x self.left = None self.righ ...