一: 连接 多表的字段中含null的  多表查询 ----左右连接查询!

例:

一张  emp(emano,ename,sal,deptno) 雇员表, 一张 dept(deptno,dname) 部门表,  雇员 中 有 字段 为 部门 编号,而 部门表 只有 部门编号,与部门名称。

但  雇员表中 有一些 雇员 是没有 部门的, 即 字段 为 null,  如何 通过 查询语句 查出 所有 雇员 信息 以及 雇员 对应的 部门名称?

select e.empno,e.ename,e.sal,d.deptno,d.dname  from emp e,dept d where e.deptno=d.deptno;

上面 语句 的确 可以 查出 雇员信息 与 其所属 部门名称,但 问题 就在于  雇员表中 deptno 为 null 的 记录 是 显示不出来的,

mysql 数据库  的查询 有 一特点 : 字段 值 带 null 的 都不参与 运算。 (oracle貌似就可以)

那么 如何 让 部门为 null 的 雇员 也以  null 的形式 查出 ,而不是 直接 忽略跳过呢?

这里 就用到了  左右连接查询!!!(好吧,我承认 数据库课 没好好读......最开始 遇到这问题 头疼死了哈哈)

mysql 中 left join    right join

left join是以左表的记录为基础,找对应 右表记录。

换句话说,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录。

右表记录不足的地方均为NULL.

这样 写出的 sql 语句为:

select e.empno,e.ename,e.sal,e.deptno,d.dname from emp e left join dept d ON e.deptno=d.deptno;

完美!~~~

补充: 除了 左右 连接, 还有 一个  inner join   : 相等 连接 ,即 并不以 任何一张表 为 基础, 只罗列 出 相等的,忽略 连接 查找 为 null的。

解决问题知识点--mysql数据库的更多相关文章

  1. Mysql数据库重要知识点(知了堂学习心得)

    Mysql数据库知识点 1.管理数据库语句: 使用数据库: use test; 添加数据库: create database 数据库名; create database test; 修改数据库: al ...

  2. MySQL数据库开发规范知识点

    前言: 设计规范更多的是为了确保数据库设计的合理性.为了项目最终的协调稳定性,而命名规范则更多的是为了确保设计的正式和统一. 约定优先于配置(Convention Over Configuration ...

  3. 知识点:Mysql 数据库索引优化实战(4)

    知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 一:插入订单 业务逻辑:插 ...

  4. linux django 知识点 安装mysql数据库 和 pycharm

     django 命令及相关知识点 1. 启动 pycharm 命令:sh pycharm.sh 2. 创建 django 项目 : django-admin.py startproject Hello ...

  5. MySQL/数据库 知识点总结

    书籍推荐 <SQL基础教程(第2版)> (入门级) <高性能MySQL : 第3版> (进阶) 文字教程推荐 SQL Tutorial (SQL语句学习,英文).SQL Tut ...

  6. 浅谈MySQL数据库面试必要掌握知识点

    概述 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 MySQL官方地址 https://www.mysql.com/ MySQL 8系列最新版本为8.0.27,5系列的最 ...

  7. java用JDBC连接MySQL数据库的详细知识点

    想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...

  8. 知识点:Navicet Mysql数据库电脑本地备份

    Navicet Mysql数据库电脑本地备份 1.打开navicat客户端,连上mysql后,双击左边你想要备份的数据库.点击“计划”,再点击“新建批处理作业”.     2.双击上面的可用任务,它就 ...

  9. MySQL数据库知识点整理 (持续更新中)

    一.修改用户密码 格式(在命令行下输入):mysqladmin -u 用户名 -p旧密码 password 新密码 1. 给root添加密码ab12:  mysqladmin -uroot -pass ...

随机推荐

  1. seo-mask -- 为单页应用创建一个适合蜘蛛爬取的seo网站

    seo-mask seo-mask是利用搜索引擎蜘蛛的爬取原理(蜘蛛只会爬取网页的内容,并不会关心解析网页里的css和js),制作一套专门针对seo的镜像网站,鄙人称它为针对seo的mask,让蜘蛛看 ...

  2. UVA 11885 - Number of Battlefields(斐波那契)

    11885 - Number of Battlefields 题意:给周长.求能围成的战场数目.不包含矩形. 思路:详细的递推没递推出来,可是看了网上一个规律,假设包含矩形的答案应该是斐波那契数列(可 ...

  3. nyoj 1129 Salvation

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=1129 题目分析:感觉题目说的不是多么的清晰,看了别人的分析觉得,也就是说在一个方向不能拐 ...

  4. 使用pycharm手动搭建python语言django开发环境(五) 使用日志模块打日志

    1.在项目的settings.py中增加日志相关声明 #增加日志设置 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'fil ...

  5. C++注释规范

      1 源文件头部注释 列出:版权.作者.编写日期和描述. /************************************************* Copyright:bupt Auth ...

  6. Java重构-策略模式、状态模式、卫语句

    前言 当代码中出现多重if-else语句或者switch语句时.弊端之一:如果这样的代码出现在多处,那么一旦出现需求变更,就需要把所有地方的if-else或者switch代码进行更改,要是遗漏了某一处 ...

  7. Spring MVC复选框

    以下示例显示如何在使用Spring Web MVC框架的表单中使用复选框(Checkbox).首先使用Eclipse IDE来创建一个WEB工程,并按照以下步骤使用Spring Web Framewo ...

  8. android studio win7开发环境

    java 开发环境 这里使用jdk1.7版本,从官网上下载. 点击.正常的window软件的安装方式,一直下一步即可. 环境变量的设置: 在系统属性中,对需要的环境变量进行设置: JAVA_HOME设 ...

  9. Problem 500!!! (Project Euler 500)

    题目大意:求出最小的正整数,它的约数有$2^{500500}$个. 思路:考虑将一个数质因数分解,如果它的约数有$2^{500500}$个, 那么每个质因子的指数一定是$2^k-1$这样的形式. 如果 ...

  10. 浅谈HTTP缓存以及后端,前端如何具体实现HTTP缓存

    <浅谈HTPP缓存>原版: https://juejin.im/post/5bdeabbbe51d4505466cd741?utm_source=gold_browser_extensio ...