SQL语句关联查询
一:连接类型:








关联查询:只有存在关联的表才能关联查询,完全独立的表之间无法关联
1.关联的类型:自关联,左关联,右关联,全关联(full join)两张表都是主表
2.关联的表:两张以上,以一张(或已关联存在的表)为主表
3.关联条件:主表中的某列与副表中的某列(一一对应)>所有已关联的表可以看成一张主表,表中的列,都可以作为条件与将要被关联的副表关联
4.筛选条件:所有关联的表中的列,都可以作为数据筛选条件
5.查询范围:所有关联的表中的列,都可以被查询
原理:
1.当使用关联语句将两张表进行关联时,系统会通过关联条件,自动生成一张新的符合条件表,不管再进行关联,查询等任何其它操作
都是针对于这张新生成的表进行的。
2.一旦进行关联后,和原有的两张表就没有关系,它是一张新的表
3.生成新表的机制,主表的关联条件跟副表的关联条件进行匹配,满足条件的数据自动整合成一i条新的数据放入新表,这时如果副表的关联条件有重复,那么新生成表的数据就会重复,只有在匹配不到副表的情况下,副表数据才会为空,如果已匹配到就不会再去匹配空值
注意:
1.关联查询时,关联条件一定要主外键关联,不然会出现多余重复数据(不仅仅如此会造成重复数据,唯一衡量的标准即是:主,副表重复匹配)
2.2016-07-13
主外键关联时,如果主表的关联列是外键,会出现多余数据,副表数据查出来是空
作用:2016-06-24
1.数据有紧密关联的必须用关联查询,如果用多条SQL语句拆开查询,一旦哪一环节改变,他无法把改变传递给下一环节,它们相互之间独立。
如果是关联查询任何一点的改变都会影响整条流程,所以,需要用关联查询的数据,必须用关联查询出来,而不是多条SQL语句拆分查出来
技巧:
1.在做关联查询时想要关联的副表很关键,有的时候不去关联已经存在的表,而是去关联查询出来的一张虚拟的表,这一点很重要,很多业务场景已有的表数据是不满足
注意:2017-12-28:关联查询,首先看主表,where中不加任何筛选条件,主表中所有数据都会查出来,然后再看关联表,再看关联关系,关联筛选条件,表和表直接的关联,
会先根据关联筛选条件 去查询关联表,得出虚拟表 再跟主表进行关联匹配,有就关联,多则重复加,没有则为空
SQL语句关联查询的更多相关文章
- MySQL的EXPLAIN命令用于SQL语句的查询执行计划
MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提供任何调整建议,但它能够提供重要的信息 ...
- mysql 常用 sql 语句 - 快速查询
Mysql 常用 sql 语句 - 快速查询 1.mysql 基础 1.1 mysql 交互 1.1.1 mysql 连接 mysql.exe -hPup ...
- SQL语句之查询(SELECT)
目录 SQL语句之查询(SELECT) 简单查询 限定查询 模糊查询 排序查询 多表查询 SQL语句之查询(SELECT) SQL是用于访问和处理数据库的标准计算机语言: 中文:结构化查询语言:英文全 ...
- SQL语句在查询分析器中可以执行,代码中不能执行
问题:SQL语句在查询分析器中可以执行,代码中不能执行 解答:sql中包含数据库的关键字,将关键字用[]括起来,可以解决. 后记:建数据库的时候尽量避免使用关键字. 例子: sql.Format(&q ...
- 如何在 Linux 上用 SQL 语句来查询 Apache 日志
Linux 有一个显著的特点,在正常情况下,你可以通过日志分析系统日志来了解你的系统中发生了什么,或正在发生什么.的确,系统日志是系统管理员在解决系统和应用问题时最需要的第一手资源.我们将在这篇文章中 ...
- 在Hibernate中使用HibernateTemplate来进行包含sql语句的查询
/** * 使用sql语句进行查询操作 * @param sql * @return */ public List queryWithSql(final Stri ...
- Sql语句之查询所有学生所有科目分数及总分
昨天练Sql语句,数据库建了四个表分别是,学生表,课程表,成绩表以及教师表(教师表不在讨论范围),突然想到以前高中时代老师手上的那张成绩表,然后我就寻思着能不能用Sql语句把表打印出来,以下是我的思考 ...
- Python与开源GIS:在OGR中使用SQL语句进行查询
摘要: 属性选择与空间选择都可以看作是OGR内置的选择功能,这两种功能可以解决大部分实际中的问题.但是也有这种时候,就是进行查询时的条件比较复杂.针对这种情况,OGR也提供了更加灵活的解决方案:支持使 ...
- SQL 语句在查询分析器执行很快,程序 Dapper 参数化查询就很慢(parameter-sniffing)
这个问题困扰我好长时间了,使用SQLSERVER 事务探查器找到执行超时的SQL语句,参数查询都是通过执行exe sp_executesql 的存储过程调用,因为它能够分析并缓存查询计划,从而优化查询 ...
随机推荐
- oracle 修改数据精度问题
今天,在建表后插入语句时,报了这样的错误,对于这样的错误,搜集了一些资料,进行了总结如下: 建表语句: 1 2 3 4 5 6 7 8 9 create table pre_info( pre_cod ...
- 打印信息,通过.jasper工具将集合输出到PDF文件 然后利用打印机打印文件
我们上一次成功的利用iReport工具制作了一张报表,并且预览了报表最后的效果,也生成了格式为“jrpxml”.“jrxml”与“jasper”的文件.这次,我们使用jasper提供的java的api ...
- linux命令学习之:sort
sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出.sort命令既可以从特定的文件,也可以从stdin中获取输入. 语法 sort (选项) (参数) 选项 sort将文 ...
- linux命令学习之:systemctl
systemctl命令是系统服务管理器指令,主要负责控制systemd系统和服务管理器,它实际上将 service 和 chkconfig 这两个命令组合到一起. CentOS 7.x开始,CentO ...
- 血的教训:Protocol http not supported or disabled in libcurl
报错显示:http not supported or disabled in libcurl 查看配置 curl -V ---------------------------------------- ...
- nginx: [emerg] mkdir() "/var/temp/nginx/client" failed (2: No such file or directory)
报错信息 [root@bogon sbin]# ./nginx nginx: [emerg] mkdir() : No such file or directory) 解决方法 [root@bogon ...
- 因为要生成的折线数量是不定的 ,所以需要echarts 动态的为option中的Series添加数据
series:function(){ var serie=[]; var aa = zhonglei[0].split(","); for( var i=0;i < aa.l ...
- C#设计模式-2工厂方法模式(Factory Method)
什么是工厂模式?类比生活中的概念,当我们需要打电话的时候,我们需要一部手机,我们通常会选择直接去卖手机的实体店买.但在程序设计中,当我们需要调用一个类(PhoneA或PhoneB)的方法的时候,我们往 ...
- (转)Eclipse中需要查看某个类的源码,直接按住Ctrl 然后点击想要查看的类或则方法
文章转自:http://blog.sina.com.cn/s/blog_52f623240102vpcr.html 在Eclipse中需要查看某个类的源码,直接按住Ctrl 然后点击想要查看的 ...
- Liunjx 文件
cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 1.命令格式: cat [选项] [文件] ...