文档章节

MySql(连接查询)

Bug-Killer
 Bug-Killer
发布于 2016/04/10 22:27
字数 489
阅读 51
收藏 1

一,内连接

    内连接:[inner] join,从左表中每取出一条记录,都跟右表中所有的记录匹配,匹配必须是某个条件在左表和右表中条件相同才会保留结果。否则不保留。

    基本语法:

    左表[inner] join 右表 on 左表.字段=右表.字段 ;on表示连接条件,条件字段就是代表相同的业务含义,如(student.cid = class.id) 。

    

select * from my_user inner join my_class on my_user.c_id = my_class.id ;

    字段别名+表别名

select u.*,u.name as u_name,c.name as c_name from         =====字段别名
my_user as u inner join my_class as c                     =====表别名    
on u.c_id = c.id ;

    内连接可以没有连接条件,即可以没有on后边内容,这个时候系统会保留所有结果,即出现笛卡尔积。

    所以,内连接可以使用where代替on关键字。on效率更高   

二,外链接

    外链接:以某一个表为主表,取出里边的所有记录,然后每条与另一个表中进行连接,不管能不能匹配上条件,最终都会保留,如果能匹配,则保留,如果不能匹配则另一个表的字段为空null。

    外链接分两种,因为以某一个表为主表,所以需要一个主表

    Left join :左外链接  以左表为主表

    Right join : 右外链接  以右表为主表

    基本语法: 左表 left/right join 右表 on 左表.字段=右表.字段 ;

    左外链接

select u.*,c.name as c_name,c.id as c_id from
my_user as u left join my_class as c 
on u.c_id = c.id ;        ====左表为主表,最终记录数至少不少于左表已有记录数

    右外链接

    

select u.*,c.name as c_name,c.id as c_id from
my_user as u right join my_class as c 
on u.c_id = c.id ;

    左外连接和右外链接虽然有主表差异,但是显示的结果,左表数据在左边,右表数据在右边。

    

© 著作权归作者所有

Bug-Killer
粉丝 5
博文 74
码字总数 46700
作品 0
海淀
程序员
私信 提问
PHP面试之复杂MySQL语句的编写

真题 有A(id,sex, par, cl, c2)、B(id,age,c1,c2)两张表,其中A.id与B.id关联,现在要求写出一条SQL语句,将B中age>50的记录的c1,c2更新到A表中统一记录中的c1,c2字段中。 MySQL的关联update操...

openoter
2018/04/20
0
0
PHP mysql_query() 函数

定义和用法 mysql_query() 函数执行一条 MySQL 查询。 语法 mysql_query(query,connection) 参数 描述 query 必需。规定要发送的 SQL 查询。注释:查询字符串不应以分号结束。 connection 可...

Amamatthew
2014/09/18
0
0
PHP mysql_query() 函数

定义和用法 mysql_query() 函数执行一条 MySQL 查询。 语法 mysql_query(query,connection) 参数 描述 query 必需。规定要发送的 SQL 查询。注释:查询字符串不应以分号结束。 connection 可...

Amamatthew
2014/09/11
0
0
PHP mysql_query() 函数解析

mysql_query() 函数执行一条 MySQL 查询。 语法如下: mysql_query(query,connection) 参数 query 是必需。它规定要发送的 SQL 查询。注释:查询字符串不应以分号结束。参数 connection 是可...

Amamatthew
2014/09/17
0
0
当我们输入一条 SQL 查询语句时,发生了什么?

我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比...

Java干货分享
2018/11/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

动态代理知识详解

动态代理实现的两种方式 给动态代理举个栗子:例如我们平时买笔记本电脑,很多时候都是不从厂家拿货,而是通过经销商买电脑。代理模式出现解决了生产厂家的一些问题,那么这个这个思想在我们...

我叫小糖主
32分钟前
7
0
Calendar TimeZone SimpleDateFormat

关于Calendar类的使用可参考:Java Calendar类的使用总结 获取日历(Calendar):java.util.Calendar#getInstance() 获取时区TimeZone: TimeZone.getTimeZone("GMT+00:00"); 或:TimeZone.ge......

Hzhodor
33分钟前
0
0
这 17 个 JVM 参数,高级 Java 必须掌握

前言 大家都知道,jvm在启动的时候,会执行默认的一些参数。一般情况下,这些设置的默认参数应对一些平常的项目也够用了。但是如果项目特别大了,需要增加一下堆内存的大小、或者是系统老是莫...

编程SHA
38分钟前
0
0
jenkins配置自动发送邮件

1.开通QQ的SMTP服务,需要发一条短信,qq会给你一个密码(不是你的QQ邮箱密码哦) 2.安装 Email Extension Plugin 插件 3.进入系统管理--系统设置 3.1按照如下图设置 首先找到 Extended E-m...

shzwork
43分钟前
0
0
网络请求异常拦截优化

目录介绍 01.网络请求异常分类 02.开发中注意问题 03.原始的处理方式 04.如何减少代码耦合性 05.异常统一处理步骤 06.完成版代码展示 好消息 博客笔记大汇总【16年3月到至今】,包括Java基础...

潇湘剑雨
47分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部