mysql学习笔记(七)—— MySQL内连接和外连接

    MySQL内连接(inner join on)

MySQL的内连接使用inner join on,它的效果跟使用where是一样的,如果联结的是两个表,那么需要左右的条件或者说字段是需要完全匹配的。

来看个例子:有两张表customers客户表和orders订单表,外键是cust_id,我们需要知道哪些客户有订单

select customers.cust_id,orders.order_num from customers , orders where customers.cust_id = orders.cust_id;

如果我们使用内连接的话就可以这样写:

select customers.cust_id,orders.order_num from customers inner join orders on customers.cust_id = orders.cust_id;

但是如果我除了这些有有客户的订单,我还想拿到所有的订单信息,那么怎么办呢?

MySQL外连接(left,right)

select customers.cust_id,orders.order_num from customers right outer join orders on customers.cust_id = orders.cust_id;

外连接包含左右连接,

左连接的结果是除了匹配条件的数据还包含左边表中的所有数据

右连接的结果是除了匹配条件的数据还包含右边表中的所有数据

上面的那个语句的输出结果是这样的:

为了做个比较,我在customers表中也做了一条数据,该数据并没有订单信息,我们使用左连接来看下:

select customers.cust_id,orders.order_num from customers left join orders on customers.cust_id = orders.cust_id;

看下结果:

这样应该就能很清晰看出内连接和外连接的作用了吧。

 MySQL使用带聚集函数的联结

上面只是想知道哪些客户有订单,假如我们想看下每个客户都有多少订单呢?这就需要用到之前学过的聚集函数了

select customers.cust_name,customers.cust_id,count(orders.order_num) as counts from customers inner join orders on customers.cust_id = orders.cust_id group by customers.cust_id;

查看输出结果:

以上就是一些高级联结的使用。

时间: 2024-08-08 09:38:58

mysql学习笔记(七)—— MySQL内连接和外连接的相关文章

MySQL学习笔记之一 MySQL入门

本人之前接触的关系型数据库主要是oracle和sqlserver,而对于mysql知之甚少,但查阅网上资料发现,mysql与oracle非常相似,所以学起来应该不会很费劲,在总结的时候可能更多的把关注点放在它与oracle的不同之处. 一.简介 MySQL是一个真正的多用户.多线程SQL数据库服务器.SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言.MySQL是一个客户端/服务器结构的实现, 它由一个服务器守护程序mysqld和很多不同的客户程序和库组成. MySQL的普及并不局限于

mysql查询语句(mysql学习笔记七)

Sql语句 一般顺序GHOL : group by,having ,order by,limit     如果是分组,应该使用对分组字段进行排序的group by语法                     Limit start ,length                    去除重复记录默认为all Select distinct 字段  from Select distinct * from 没用(所有字段组合不相同才认为不相同,用在这里基本没用),记录值完全一样时取其一个 Unio

MySQL学习笔记 初涉MySQL

1.在Linux下安装MySQL # yum -y install mysql mysql-server mysql-devel        修改字符集:/etc/my.conf配置文件 vi /etc/my.conf [mysqld] default-character-set=utf8 character_set_server=utf8 [client] default-character-set=utf8 2.启动和停止MySQL服务 # service mysqld start 3.登

MySQL学习笔记_7_MySQL常用内置函数

 MySQL常用内置函数 说明: 1)可以用在SELECT/UPDATE/DELETE中,及where,orderby,having中 2)在函数里将字段名作为参数,变量的值就是字段所对应的每一行的值. 3)在程序设计语言如C++中提供的函数,MySQL大部分也提供了,关于MySQL函数的完整信息,请参阅<MySQL参考手册> 一.字符串函数[比较常用,需要掌握] 1. concat(s1,s2,...,sn) #把传入的参数连接成一个字符串 selectconcat('abc','def

MySQL学习笔记七:存储引擎

1.MySQL存储引擎的设计采用“插件式”方案,用户可以很方便地选择使用哪种存储引擎,想使用mysql没有提供的引擎时,可以自己安装进去. 查看支持的存储引擎 mysql> show engines\G *************************** 1. row *************************** Engine: FEDERATED Support: NO Comment: Federated MySQL storage engine Transactions: N

【MySQL学习笔记】MySQL权限表

MySQL权限表,控制用户对数据库的访问,存在mysql数据库中,由mysql_install_db初始化,包括user,db,host,tables_priv,columns_priv,procs_priv 1.user表,记录允许连接到服务器的账号信息,权限为全局级. 用户列(包括host,user,password,前二者为user表的联合主键). 权限列,描述用户权限,值为N or Y,默认值都为N,修改需要靠grant或update 安全列 n  两个ssl相关,用于加密,show v

MySQL学习笔记之MySQL安装详解

前言 虽然现在NoSQL发展迅速,但MySQL还是非常受欢迎的,成千上万的公司依旧采用LAMP OR LNMP的搭配来进行开发,因此MYSQL的学习还是有一定的必要. 安装环境:Windows 7,需要.NET FRAMEWORK 4.0的支持 MySQL版本:5.6.10.1 安装 1.双击SETUP安装文件开始安装,前面的三步都是点“下一步”即可. 2.到第四步出现如下图所示界面. 这步我是选择Custom安装类型,比较自由,然后指定安装目录和存放数据目录. 3.接下来的几步都可以直接“下一

【mySQL学习笔记】mySQL远程访问

MySQL 连接方式: TCP/IP 套接字方式 这种方式会在TCP/IP 连接上建立一个基于网络的连接请求,一般是client连接跑在Server上的MySQL实例,2台机器通过一个TCP/IP 网络连接. c:\Users\LiuChao>mysql -h 210.45.250.3 -u remote -p 3925096 错误解决:mySQL不是内部或外部命令:mySQL ERROR 1130

mysql学习笔记之mysql数据库的安装

1.运行mysql安装包选择自定义安装(安装路径不要带中文,否则安装会出错!) 2.一个mysql想要操作成功需要有三部分:服务器端,数据段,数据. 3.服务器软件目录: 4.数据目录: 点击安装即可. 5.到这里mysql已经安装好了,接下来对mysql进行一些配置.比如配置mysql最多允许多少连接,是否可远程登录 7.机器类型: 8.是否支持事务 9.innodb表空间: 10.连接数量 11.字符集设定 最后执行配置即可. 接下里进入mysql安装目录下的bin目录查看下: 连接服务器:

MySQL学习笔记1 mysql简介

查询使用sql语言,(结构化查询语言) 传统数据库遵循ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).这是可靠数据库所应具备的几个特性.下面针对这几个特性进行逐个讲解. nosql (不遵循ACID) 关于sql与nosql google bigtable /amazon dynamo 开源 facebook cass