MySQL多表连接查询

多表连接查询:

create table class(

cid int primary key auto_increment,

cname varchar(20)

)default charset=‘utf8‘;

create tablr stu(

sid int primary key auto_increment,

sname varchar(20).

cid int

);default charset=‘utf8‘;

insert into class(name) values(‘一班‘);

insert into class(name) values(‘二班‘);

insert into class(name) values(‘三班‘);

insert into class(name) values(‘四班‘);

insert into class(name) values(‘张三‘,1);

insert into class(name) values(‘李四‘,2);

insert into class(name) values(‘王五‘,2);

insert into class(name) values(‘杨六‘,3);

insert into class(name) values(‘赵七‘,5);

insert into class(name) values(‘周八‘,6);

select * from class;

select * from stu;

-------------------------------------

交叉连接:--没有任何条件,只需要将多张表的所有数据排列显示出来

select * from class,stu;

内连接:建立在两张或多张表之间,存在数据的关联关系

inner join

select * from 表A INNER JOIN 表B on 连接条件;

等价于

select * from 表A,表B where 表A.字段=表B.字段;

两张表:

select * from class INNER JOIN stu ON class.cid=stu.cid;

select * from class,stu, 表C WHERE class.cid=stu.cid AND 表A.字段=表C.字段;

三张表:

select * from student s,course c,score sc WHERE s.sid=sc.sid AND c.cid=sc.cid;

外连接:

左外连接 LEFT JOIN / LEFT OUTER JOIN

右外连接 RIGHT JOIN / RIGHT OUTER JOIN

外连接:左表或右表作为主表的情况下,主表的全部内容都会显示,而另一张表没有对应的数据则会补null

select * from class c LEFT JOIN stu s ON c.cid=s.cid;

select * from class c RIGHT JOIN stu s ON c.cid=s.cid;

时间: 2024-12-05 01:46:29

MySQL多表连接查询的相关文章

Mysql 多表连接查询 inner join 和 outer join 的使用

JOIN的含义就如英文单词"join"一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接.这里描述先甩出一张用烂了的图,然后插入测试数据. 首先先列举本篇用到的分类(内连接,外连接,交叉连接)和连接方法(如下): A)内连接:join,inner join B)外连接:left join,left outer join,right join,right outer join,union C)交叉连接:cross join 案例表: t_users: t_departme

Mysql 表连接查询

1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEF

Mysql表连接查询

原文地址: https://www.cnblogs.com/qiuqiuqiu/p/6442791.html 1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行. 2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接. 在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定: 1)LEFT JOIN或L

(MYSQL学习笔记2)多表连接查询

3种连接方式的区别: INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录. LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录. RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录. 3个表连接查询,语句如下: SELECT a.YHID,a.TDID,b.YHMC,b.YHZH,c.TDMC FROM (km_tdcy a LEFT JOIN km_xtyh b ON a.YHID=b

MySql数据库再学习——简述多表连接查询的自我理解

一:序 这几天在学习数据库部分,因为在学校听课也是比较迷糊,经过学习之后感觉现在思路比较清楚,对于多表连接查询操作有了一个新的认识. 二:假设 假设现在有两个表 :A ,B. 三:两表之间的连接方式 两个表的连接方式分为,内,外,交叉三种. 内连接的查询方式又分为隐式和显式两种. 外连接的查询方式又分为左,右两种. 交叉是将两个表的记录做乘积,因为得到的记录很大程度上没有直接联系,所以交叉连接查询基本没什么意义. 四:内连接 内连接的关键词:inner join...(inner可以省略) 隐式

表连接查询与where后使用子查询的性能分析。

子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果. 子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表连接查询的性能做出一点分析. 对于表连接查询和子查询性能的讨论众说纷纭,普遍认为的是表连接查询的性能要高于子查询.本文将从实验的角度,对这两种查询的性能做出验证,并就实验结果分析两种查询手段的执行流程对性能的影响. 首先准备两张表 1,访问日志表mm_log有150829条记录(相关sql文件已放在

MySQL多表连接

1.内联接 典型的联接运算,使用像 =  或 <> 之类的比较运算).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行. 2.外联接. 外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEFT OUTER子句中

数据库多表连接查询的实现方式

数据库多表连接查询的实现方式 连接查询是关系数据库中最主要的查询,主要包括自连接.内连接.外连接和交叉连接.通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中.当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息.连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型.为不同实体创建新的表,然后通过连接进行查询. 内连

单表查询、多表查询、虚拟表连接查询

  单表查询,以下面这个表为例:+----+------------+--------+-----+------------+----------------------------+--------------+------------+--------+-----------+| id | name | sex | age | hire_date | post | post_comment | salary | office | depart_id |+----+------------+-