用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). MySQL版本:Server version: 5.6.31 MySQL Community Server (GPL) 数据库表:a_table.b_table 主题:内连接.左连接(左外连接).右连接(右外连接).全连接(全外连接) 表为: 内连接: 1. 交叉连接查询(基本不会使用-得到的是两个表的乘积)…
子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果. 子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表连接查询的性能做出一点分析. 对于表连接查询和子查询性能的讨论众说纷纭,普遍认为的是表连接查询的性能要高于子查询.本文将从实验的角度,对这两种查询的性能做出验证,并就实验结果分析两种查询手段的执行流程对性能的影响. 首先准备两张表 1,访问日志表mm_log有150829条记录(相关sql文件已放在…
Oracle 表之间的连接分为三种: 1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)        (2)右外连接(右边的表不加限制)        (3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接) SQL的标准语法:        select table1.column,table2.column               from table1 [inner | left | right | full ] join table2 on…
为什么我们要使用内连接和外连接呢?可以从两张或者多张表中找出,我们需要的属性. 这个比较好:http://www.cnblogs.com/youzhangjin/archive/2009/05/22/1486982.html http://www.cnblogs.com/huangfr/archive/2012/06/20/2555530.html Join操作基本分为3大类:外连接(细分为:左连接.右连接.全连接).自然连接.内连接 外连接中:左外连接:左边的记录是全的,右边链接的表没有则为N…
#进阶7:子查询 /* 含义: 出现在其他语句中的select语句,称为子查询或者内查询 外部的查询语句,称为主查询或外查询 分类: 按照子查询出现的位置: select后面:只支持标量子查询 from后面:支持表子查询 重点:where或者having后面: 标量子查询,重点 列子查询,重点 行子查询(用的较少) exists后面(相关子查询):表子查询 按照结果集的行列不同: 标量子查询(结果集中只有一行一列) 列子查询(结果集只有一列多行) 行子查询(结果集为一行多列) 表子查询(结果集为…
一.连接查询 1.连接查询建立在有相互关系的两个表间,进行两个及两个以上的表或视图的查询. 2.对n张表进行查询,至少需要n-1个连接表的条件. 二.笛卡尔积(容易造成数据库宕机) 1.指表中每行元素与其他表的每行均组合,没有连接条件. 2.假设有两张表,表A有X条数据,表B有Y条数据,则笛卡尔积查询后,会得到一张X*Y条数据的表. 三.主键.外键 1.主键与外键用于维护关系型数据库的完整性. 2.主键:非空且唯一,用于标识一张表. 3.外键:用于存放另一张表的主键,外键可以重复,也可以为nul…
交叉连接(cross join):该连接产生的结果集笛卡尔积 a有7行,b有8行    a的第一行与b的每一行进行连接,就有8条a得第一行 7*8=56条 select a.real_name,s.unix_host,s.os_username from account a cross  join service s:(56条) select a.real_name,s.unix_host,s.os_username from account a cross  join service s wh…
elect ename,job,sal from emp where deptno>10 order by sal desc; 联合查询,PK dept.deptno FK emp.deptno  select emp.ename,dept.dname,dept.deptno from emp join dept on emp.deptno = dept.deptno; 也可以指定别名: select e.ename,d.dname,d.deptno from emp e  join dept…
先简单粗暴给个结论,多表连结查询中,on比where更早起作用,系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行匹配过滤,where后语句为真,则能查询出来,而通过外连接,例如左连接on,则无论是否为真,都会把左边表的内容都查询出来. 多表查询基本语法 select*from table_1,table_2 where table_1.no=table_2.no 实例: select*from stu,sc where stu.sno=sc.sno 查出了stu表中…
/* 2 需求:建立产品和分类表 1.查询每种分类的产品数量,没有产品的分类也要统计.(cname,quantity) 2.根据分类名称查询分类中的所有产品 */ -- ------------------- -- category -- 先建立主表,再建立从表,可以在从表创建时添加外键. -- ------------------- drop table if exists category; create table category( cid int unsigned key auto_i…