当前位置:  数据库>mysql

MySQL笔记之连接查询详解

    来源: 互联网  发布时间:2014-10-08

    本文导语:  连接查询是将两个或两个以上的表按某个条件连接起来,从中选取需要的数据 当不同的表中存在表示相同意义的字段时,可以通过该字段来连接这几张表 参考表:employee 参考表:department   可以看到,上面两张表都有同一个...

连接查询是将两个或两个以上的表按某个条件连接起来,从中选取需要的数据

当不同的表中存在表示相同意义的字段时,可以通过该字段来连接这几张表

参考表:employee

参考表:department

 

可以看到,上面两张表都有同一个字段d_id

当两张表含有相同意义的字段(可以不同名)时就可以进行连接查询

内连接查询
代码如下:

mysql> SELECT num, name, employee.d_id, sex, d_name, function
    -> FROM employee, department
    -> WHERE employee.d_id=department.d_id;
+------+--------+------+------+-----------+--------------+
| num  | name   | d_id | sex  | d_name    | function     |
+------+--------+------+------+-----------+--------------+
|    1 | 张三   | 1001 | 男   | 科技部    | 研发产品     |
|    2 | 李四   | 1001 | 女   | 科技部    | 研发产品     |
|    3 | 王五   | 1002 | 男   | 生产部    | 生产产品     |
+------+--------+------+------+-----------+--------------+
 rows in set (0.00 sec)

内连接查询只会查询完全匹配的结果,此处使用d_id字段进行连接

下面的表中也同样使用这一字段


外连接查询

外查询也需要通过指定字段来进行连接,当该字段取值相等时,可以查询出该记录

而且,该字段取值不相等的记录也可以查询出来

外连接查询包括左连接查询和右连接查询


左连接查询

代码如下:

mysql> SELECT num, name, employee.d_id, d_name, function
    -> FROM employee LEFT JOIN department
    -> ON employee.d_id=department.d_id;
+------+--------+------+-----------+--------------+
| num  | name   | d_id | d_name    | function     |
+------+--------+------+-----------+--------------+
|    1 | 张三   | 1001 | 科技部    | 研发产品     |
|    2 | 李四   | 1001 | 科技部    | 研发产品     |
|    3 | 王五   | 1002 | 生产部    | 生产产品     |
|    4 | Aric   | 1004 | NULL      | NULL         |
+------+--------+------+-----------+--------------+
 rows in set (0.00 sec)

此处不仅查询出了两表中d_id字段相匹配的信息

并且通过LEFT JOIN查询出了employee表中所有指定字段的信息

由于Aric没有对应d_name和function信息,所以显示null


右连接查询

代码如下:

mysql> SELECT num, name, employee.d_id, d_name, function
    -> FROM employee RIGHT JOIN department
    -> ON employee.d_id=department.d_id;
+------+--------+------+-----------+--------------+
| num  | name   | d_id | d_name    | function     |
+------+--------+------+-----------+--------------+
|    1 | 张三   | 1001 | 科技部    | 研发产品     |
|    2 | 李四   | 1001 | 科技部    | 研发产品     |
|    3 | 王五   | 1002 | 生产部    | 生产产品     |
| NULL | NULL   | NULL | 销售部    | 策划销售     |
+------+--------+------+-----------+--------------+
 rows in set (0.00 sec)

与上面相反,这里查询出了匹配的信息和department表中的所有指定字段的信息

但是由于employee表中部分字段没有对应,因此最后一行记录有显示NULL


复合条件连接查询

代码如下:

mysql> SELECT num, name, employee.d_id, sex, age, address
    -> FROM employee, department
    -> WHERE employee.d_id=department.d_id
    -> AND age>=25;
+------+--------+------+------+------+-------------+
| num  | name   | d_id | sex  | age  | address     |
+------+--------+------+------+------+-------------+
|    1 | 张三   | 1001 | 男   |   26 | 3号楼5层    |
|    3 | 王五   | 1002 | 男   |   25 | 5号楼1层    |
+------+--------+------+------+------+-------------+
 rows in set (0.00 sec)

复合条件连接查询是在进行连接查询的时候加入限制条件,此处的age>=25便是

通常情况下,限制条件越多,查询越精确,限制条件可用AND累加

此外,还可以用复合条件进行ORDER BY 排序

tips:连接查询中使用最多的是内连接查询,而外连接查询使用频率较低


    
 
 

您可能感兴趣的文章:

  • mysql jdbc连接mysql数据库步骤及常见参数详解
  • 深入mysql YEAR() MONTH() DAYOFMONTH()日期函数的详解
  • mysql update语句的用法详解
  • MySql实现跨表查询的方法详解
  • 基于mysql 5.5 设置字符集问题的详解
  • 深入mysql并发插入优化详解
  • 详解MySQL中DROP,TRUNCATE 和DELETE的区别实现mysql从零开始
  • MYSQL 批量替换之replace语法的使用详解
  • 详解MySQL中SlowLog的配置方法(图文)
  • 浅谈SQLServer的ISNULL函数与Mysql的IFNULL函数用法详解
  • 基于mysql数据库的密码问题详解
  • 3步搞定纯真IP数据导入到MySQL的方法详解
  • MySQL Left JOIN时指定NULL列返回特定值详解
  • 深入MYSQL字符数字转换的详解
  • windows环境中mysql忘记root密码的解决方法详解
  • MySQL查询优化之索引的应用详解
  • Linux下MySQL安装配置 MySQL配置参数详解
  • 关于MySQL数据迁移--data目录直接替换注意事项的详解
  • 减少mysql主从数据同步延迟问题的详解
  • Python下的Mysql模块MySQLdb安装详解
  • MySQL数据入库时特殊字符处理详解
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在线请教:linux下用MySQL C API 连接MySQL 4.1.12出现的连接问题,提示升级客户端!!!!!!
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • mysql密码过期导致连接不上mysql
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • mysql开启远程连接(mysql开启远程访问)
  • 解决远程连接mysql很慢的方法(mysql_connect 打开连接慢)
  • Linux下的C++程序怎么连接WIN2000下的SQL Server 2000?或者如何连接MySQL?
  • mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案
  • windows mysql 客户端连接 VMWare中ubuntu里的MySQL
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • MySQL定时器EVENT学习笔记
  • MySQL笔记之别名的使用
  • mysql 数据库基础笔记
  • Web服务器/前端 iis7站长之家
  • MySQL笔记之函数查询的使用
  • MySQL学习笔记2:数据库的基本操作(创建删除查看)
  • MySQL 数据库设计复习笔记及项目实战
  • 高性能MySQL读书笔记 找出谁持有锁
  • MYSQL的select 学习笔记
  • MySQL学习笔记3:表的基本操作介绍
  • MySQL笔记之数据备份与还原的使用详解
  • MySQL笔记之字符串函数的应用
  • MySQL学习笔记1:安装和登录(多种方法)
  • MySQL笔记之系统信息函数详解
  • MySQL笔记之数学函数详解
  • MySQL笔记之基本查询的应用详解
  • MySQL笔记之修改数据的解决方法
  • MySQL服务维护笔记第1/2页
  • MySQL 5.5主从同步设置笔记分享
  • Mysql存储过程学习笔记--建立简单的存储过程
  • Mysql查询错误:ERROR:no query specified原因
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • php安装完成后如何添加mysql扩展
  • MySQL 重装MySQL后, mysql服务无法启动
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • MySQL Workbench的下载安装与使用教程
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • VS2012+MySQL+SilverLight5的MVVM开发模式介绍
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL索引基本知识


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3