MySql的连接查询

若一个查询同时涉及到两个或者两个以上的表,则称之为连接查询。常见的包括:等值连接查询,自然连接查询,非等值连接查询,自身连接查询,外连接查询(左右连接)。

1.等值与非等值连接查询(内连接)。

(等值连接的图)

 

参考表数据库表:

(表1与表2做了外键关联)

等值连接概念:当连接运算符为=时为等值连接,相当于两表执行笛卡尔后,取两表连结列值相等的记录。

查询语句:

SELECT A.*, B.*
FROM student A INNER JOIN sc B
ON A.`sno`=B.`sno`;

另外一种写法:

SELECT student.* ,sc.*
FROM student , sc
WHERE student.`sno` = sc.`sno`;

两种写法除了语法上的差别,没有明显差距,主要方便了解。看了大多数博客上写的都是第一次,可能有一定优劣,有兴趣的可以自己去百度下。

查询结果都是一样:

非等值连接概念:连接规则由等号以外的运算符组成。>,=,<,,>=,<=,<>,!=,between等。

这里只使用大于号">"比较两个表的连接列的值,相当于两表执行笛卡尔后,取一个表大于另一个表的连结列值的记录。(这两个表查询的结果并没有太大的意义,只是为了方便理解概念)

查询语句:

SELECT A.*, B.*
FROM student A INNER JOIN sc B
ON A.`sno`>B.`sno`;

另外一种写法:

SELECT student.* ,sc.*
FROM student , sc 
WHERE student.`sno` >sc.`sno`;

查询的结果仍然一样:

自然连接:在等值连接中把重复的属性列去掉则为自然连接。(自然连接并不是自连接,两者要有一定区分度)

查询语句(仍然是两种写法,不过我懒的copy了 -_-):

SELECT student.* ,sc.`cno`,sc.`grade`
FROM student , sc
WHERE student.`sno` = sc.`sno`;

查询结果:

 

2.外连接(左右连接)

左连接概念:指将左表的所有记录与右表符合条件的记录,返回的结果除内连接的结果,还有左表不符合条件的记录,并在右表相应列中填NULL。

 

查询语句:

SELECT student.*,sc.`cno`,sc.`grade`
FROM student LEFT JOIN sc
ON student.`sno`=sc.`sno`;

 

右外连接:指将右表的所有记录与左表符合条件的记录,返回的结果除内连接的结果,还有右表不符合条件的记录,并在左表相应列中填NULL。(画图功底太low,就不多此一举了 -_-)

查询语句:

SELECT student.*,sc.`cno`,sc.`grade`
FROM student RIGHT JOIN sc
ON student.`sno`=sc.`sno`;

 

这里要提示一下:

on和where条件的区别如下:

1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。

而inner jion(内连接)没这个特殊性,则条件放在on中和where中,返回的结果集是相同的。

 

3.自身连接(自连接)

自身连接概述:连接操作不仅可以在两个表之间进行,也可以是一个表与其自己进行连接,成为表的自身连接,也就是所谓的自连接。

自连接查询其实等同于连接查询,需要两张表,只不过它的左表(父表)和右表(子表)都是自己。做自连接查询的时候,是自己和自己连接,分别给父表和子表取两个不同的别名,然后附上连接条件。

这里以一个课程的数据库表来做实例。

查询语句:

SELECT a.*,b.name
FROM SUBJECT a , SUBJECT b
WHERE a.`pno`=b.`cno`;

查询结果:

有些课程没有先行课,因此我们可以用左关联结合自连接来查询,便于观察。

查询语句:

SELECT a.*,b.name
FROM SUBJECT a LEFT JOIN SUBJECT b
ON a.`pno`=b.`cno`;

查询结果:

 

转载于:https://www.cnblogs.com/ITSeed/p/11167226.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下ssh通过公钥登录服务器

经常会通过ssh登录远程服务器&#xff0c;一种是通过密码方式登录&#xff0c;一种是通过公钥登录。 如何设置通过公钥登录服务器 1. 首先生成自己的公钥和私钥 ssh-keygen 命令用来生成公钥和私钥-t 用来指定密钥类型&#xff08;dsa | ecdsa | ed25519 | rsa | rsa1&#xff…

qt运行C语言后无显示,qt designer启动后不显示界面问题的原因与解决办法-站长资讯中心...

Qt 5.6.1无论是在vs里双击ui文件还是直接启动designer.exe都一直无法显示界面&#xff0c;但任务管理器中可以看到该进程是存在的。前几天还正常的&#xff0c;但昨天加了一块NVIDIA的显卡(机器自带核显)&#xff0c;可能与此有关。幸好还可以通过QtCreator打开ui文件进行编辑。…

OpenSolaris北京用户组的第一次活动

OpenSolaris北京用户组的第一次活动作者: BadcoffeeEmail: blog.olivergmail.comBlog: http://blog.csdn.net/yayong2005年10月10月15号&#xff0c;OpenSolaris北京用户组在北京西郊宾馆会议厅组织了成立以来的第一次活动。尽管OpenSolaris早在2005年6月14日就正式开放源代码&…

. SQL多条件查询存储过程

编辑器加SQL多条件查询存储过程 2010-05-13 17:06:29| 分类&#xff1a; SQL | 标签&#xff1a; |字号大中小 订阅 . 例一、 ALTER proc SelectProduct ProdID varchar(10), ProdName nvarchar(30), CategoryID varchar(5), MinPrice decimal(10,2), MaxPrice decimal(10,2) a…

矩阵转置c语言的思路,矩阵转置 (C语言代码)

解题思路:注意事项:参考代码:#includeint main(){int n,s[100][100];void transposition(int(*p)[100], int n);scanf("%d", &n);for (int i 0; i < n; i){for (int j 0; j < n; j)scanf("%d", *(s i) j);}transposition(s, n);return 0;}vo…

Android PermissionUtils:运行时权限工具类及申请权限的正确姿势

Android PermissionUtils&#xff1a;运行时权限工具类及申请权限的正确姿势 ifadai 关注 2017.06.16 16:22* 字数 318 阅读 3637评论 1喜欢 6PermissionUtil 经常写Android运行时权限申请代码&#xff0c;每次都是复制过来之后&#xff0c;改一下权限字符串就用&#xff0c;把…

实现带下拉菜单的工具栏按钮

在工具栏中使用真彩色图标 实现带下拉菜单的工具栏按钮 20050916转载于:https://www.cnblogs.com/henryzc/archive/2005/11/08/271346.html

文件目录管理与显示c语言,Centos 7 文件和目录管理

查看权限在终端输入:ls -l xxx.xxx (xxx.xxx是文件名)那么就会出现相类似的信息&#xff0c;主要都是这些&#xff1a;-rw-rw-r--其中&#xff1a; 最前面那个 - 代表的是类型中间那三个 rw- 代表的是所有者(user)然后那三个 rw- 代表的是组群(group)最后那三个 r-- 代表的是…

Linux基础监控小工具nmon

nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具&#xff0c; nmon所记录的信息是比较全面的&#xff0c;它能在系统运行过程中实时地捕捉系统资源的使用情况&#xff0c;并且能输出结果到文件中。nmon工具可以帮助在一个屏幕上显示所有重要的性能优化信息&…

vue的配置环境篇

1.电脑已经安装的nodejs和webpack。 2.1&#xff09;打开cmd。winr。可以直接输入node -v查看版本。安装淘宝镜像 npm install -g cnpm --registryhttp://registry.npm.taobao.org &#xff0c;安装成功可以查看下&#xff0c;cnpm -v 3.安装vue脚手架&#xff0c;输入命令&am…

最近比较毁硬件

上上周末公司机器主板南桥在一股青烟中壮烈牺牲……前天家里机器的GF4 Ti4600也半死不活了&#xff0c;不能装驱动&#xff0c;只能用640x480 16色装了驱动系统就无法启动&#xff0c;靠靠的从肥岩那弄了块GF FX5600XT 机器算是能亮了郁闷阿转载于:https://www.cnblogs.com/sko…

行列式运算算法c语言,新手作品:行列式计算C语言版

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼对话 ControlHeightDecrease ShiftUp Arrow 向上调整选定的控件或对话一个对话单位对话 ControlHeightIncrease ShiftDown Arrow 向下调整选定的控件或对话一个对话单位对话 ControlMoveDown Dow…

CentOSLinux安装Docker容器

Docker 使用 环境说明 CentOS 7.3&#xff08;不准确地说&#xff1a;要求必须是 CentOS 7 64位&#xff09;不建议在 Windows 上使用Docker 基本概念 官网&#xff1a;https://www.docker.com/宿主机&#xff1a;安装 Docker 的那台电脑Docker&#xff1a;一个虚拟化软件&…

Agilent RF fundamentals (4)- Impedance match and distortions

1 Impedance match&#xff1a; 2 distortions&#xff1a; Solar radiation produces background noise 转载于:https://www.cnblogs.com/huangbaobaoi/p/9650937.html

怎样才能娶到比尔-盖茨的女儿

怎样才能娶到比尔-盖茨的女儿 一位优秀的商人杰克&#xff0c;有一天告诉他的儿子杰克&#xff1a;我已经决定好了一个女孩子&#xff0c;我要你娶她儿子&#xff1a;我自己要娶的新娘我自己会决定杰克&#xff1a;但我说的这女孩可是比尔盖茨的女儿喔儿子&#xff1a;哇&…

Android动态赋权限,安卓6.0以上动态添加权限超简单模板

今天又是“咔嚓”、“窟窿”、“轰隆”&#xff0c;不晓得哪位大仙在渡劫。真的是风生水起&#xff0c;虎虎生威&#xff01;&#xff01;&#xff01;言归正传&#xff1a;描述&#xff1a;最近做了从服务器下载apk到手机内存&#xff0c;然后安装打开以及 从服务器下载pdf文件…

web前端常用代码于面试等资源

https://www.cnblogs.com/moqiutao/p/4766146.html转载于:https://www.cnblogs.com/as3lib/p/9654925.html

html 跳转到本页面指定位置

1 <html xmlns"http://www.w3.org/1999/xhtml"> 2 <head> 3 </head> 4 <body> 5 <a href"#ct1">跳转到词条1</a> 6 7   <a href"#ct2">跳转到词条2</a> 8   <br> 9   <di…

事情太多了,我实在支持不住了转载于:https://www.cnblogs.com/zjblue/archive/2005/12/03/290186.html

android论坛功能开发教程,Android教程 如何免费生成论坛App

介绍按照快速集成文档&#xff0c;您可以很容易的把BBSSDK提供的功能集成到您的应用中&#xff0c;然后使用BBSSDK来做开发。在集成前&#xff0c;您也可以先下载示例Sample的源码工程(包含应用内打开pdfoffice等格式文件)。使用Android Studio打开后&#xff0c;编译出网站上提…