有两张表:user和department

User表:

CREATE TABLE `user` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `name` varchar(30) DEFAULT NULL,
   `age` int(11) DEFAULT NULL,
   `birthday` date DEFAULT NULL,
   PRIMARY KEY (`id`)
 )

INSERT INTO USER VALUE(NAME,age,birthday)
VALUES("张三",20,"2018-10-31");

表内数据如下:

部门表:

CREATE TABLE `department` (
   `id` bigint(11) NOT NULL,
   `name` varchar(10) NOT NULL,
   `descr` varchar(50) DEFAULT NULL,
   PRIMARY KEY (`id`)
 )

INSERT INTO department (id,NAME,descr)
VALUES(1,"开发部","开发高级产品");

表内数据如下:

一、正常两表联合查询的sql语句:

SELECT u.id,u.name,u.age,d.name,d.descr
FROM USER u,department d WHERE u.id=d.id

查询结果

(或者:SELECT * FROM USER u,department d WHERE u.id=d.id)

二、左联查询sql语句:

SELECT * FROM USER u LEFT JOIN department d
ON u.id=d.id

查询结果:

根据查询结果可以看出:左联查询把前面表(user)全部查出,右表只查出部分,左表有的右表没有就为空

三、右联查询sql语句:

SELECT * FROM USER u RIGHT JOIN department
d ON u.id=d.id

查询结果:

根据结果可以看出:右联查询把后面表(department)全部查出,左表只查出部分,右表有的左表没有就为空

四、内联查询sql语句:

SELECT * FROM USER u INNER JOIN department
d ON u.id=d.id

其结果与SELECT * FROM USER u,department d WHERE u.id=d.id查询结果一样,查出两表中满足条件的记录(是两张表同时满足哦)

还可以使用where或and带条件查询。

SELECT * FROM USER u INNER JOIN department
d ON u.id=d.id AND u.age=20

查询结果:

SELECT * FROM USER u LEFT JOIN department d
ON u.id=d.id WHERE u.name LIKE '%王%'

SELECT * FROM USER u RIGHT JOIN department
d ON u.id=d.id AND u.age=20

查询结果:

根据以上可以看出:

1、使用外联查询时,添加and查询条件,不影响内外联查询的性质,只是查询的结果满足查询条件,添加where查询条件时,只能查到满足条件的记录(结果与内联查询一样)。

2、内联查询时,添加and或where条件时,查询结果都一样,只与查询条件有关

sql中的内联和外联(简单用法)的更多相关文章

  1. SQL中 Decode 和 Sign 语法的简单用法

    含义解释:decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN R ...

  2. 《挑战30天C++入门极限》新手入门:关于C++中的内联函数(inline)

        新手入门:关于C++中的内联函数(inline) 在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数. 可能说到这里,很 ...

  3. C++中的内联函数分析

    1,本节课学习 C++ 中才引入的新的概念,内联函数: 2,常量与宏回顾: 1,C++ 中的 const 常量可以替代宏常数定义,如: 1,const int A = 3; <==> #d ...

  4. 在Visual C++中使用内联汇编

    一.内联汇编的优缺点 因为在Visual C++中使用内联汇编不需要额外的编译器和联接器,且可以处理Visual C++中不能处理的一些事情,而且可以使用在C/C++中的变量,所以非常方便.内联汇编主 ...

  5. JAVA中的内联函数

    在说内联函数之前,先说说函数的调用过程. 调用某个函数实际上将程序执行顺序转移到该函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到 转去执行该函数前的地方.这种转移操作要求在转去前要保护 ...

  6. 通过调用C语言的库函数与在C代码中使用内联汇编两种方式来使用同一个系统调用来分析系统调用的工作机制

    通过调用C语言的库函数与在C代码中使用内联汇编两种方式来使用同一个系统调用来分析系统调用的工作机制 前言说明 本篇为网易云课堂Linux内核分析课程的第四周作业,我将通过调用C语言的库函数与在C代码中 ...

  7. Go 中的内联优化

    文讨论 Go 编译器是如何实现内联的以及这种优化方法如何影响你的 Go 代码. 请注意:本文重点讨论 gc,实际上是 golang.org 的 Go 编译器.讨论到的概念可以广泛用于其他 Go 编译器 ...

  8. 转载:SQL中的case when then else end用法

    SQL中的case when then else end用法 来源: http://www.cnblogs.com/prefect/p/5746624.html Case具有两种格式.简单Case函数 ...

  9. SQL中CONVERT日期不同格式的转换用法

    SQL中CONVERT日期不同格式的转换用法 格式: CONVERT(data_type,expression[,style]) 说明:此样式一般在时间类型(datetime,smalldatetim ...

随机推荐

  1. Technical poem

    Apartment Good apartment be booked the second it bring to market. low product sold to many man, and ...

  2. CSS 标签选择器

    CSS 标签选择器 再<stype>标签内,通过指定输入标签来配置CSS样式 <html> <head> <!-- style 设置头部标签--> &l ...

  3. redux-thunk的理解

    问题:1.redux-thunk要解决什么问题? 要解决异步请求问题,Action发出以后,Reducer立即算出State,这叫做同步:Action发出以后,过一段时间再执行 Reducer,这就叫 ...

  4. js中字符串转数组,数组转字符串及逆序的方法

    var str = "a,b,c,d,e,f,g";//声明一个字符串 str = str.split(',').reverse();//用split函数拆分成数组对象,再用rev ...

  5. Mac redis安装

    Download, extract and compile Redis with: #进入下载目录 $ cd ... $ wget http://download.redis.io/releases/ ...

  6. C#中Equals和= =(等于号)的比较)

    C#中Equals和= =(等于号)的比较) 相信很多人都搞不清Equals和 = =的区别,只是零星的懂一点,现在就让我带大家来进行一些剖析 一.           值类型的比较 对于值类型来说  ...

  7. ONOS架构-系统组件

    系统组件 系统分层 App/core/providers 业务和子系统 一个业务service是有多个组件构成的功能单元,基于各层软件栈提供一个垂直的分片slice,将构成业务service的组件集合 ...

  8. The `android.dexOptions.incremental` property is deprecated and it has no effect on the build process.

    编译报错:The android.dexOptions.incremental property is deprecated and it has no effect on the build pro ...

  9. WordCount基本功能

    WordCount基本功能 码云地址:https://gitee.com/Joker_zou/WordCount.git 一.项目需求 WordCount的需求可以概括为:对程序设计语言源文件统计字符 ...

  10. 解决同一activity下多个fragment 切换时重复执行onCreateView方法

    Fragment之间切换时每次都会调用onCreateView方法,导致每次Fragment的布局都重绘,无法保持Fragment原有状态. 解决的办法是:在Fragment onCreateView ...