SQL表连接查询

两张表:

 1 mysql> select * from student;
 2 +----+------+------+
 3 | id | name | age  |
 4 +----+------+------+
 5 |  1 | 小王 |   16 |
 6 |  2 | 小红 |   18 |
 7 |  3 | 小明 |   20 |
 8 |  4 | 小李 |   22 |
 9 |  5 | 小强 |   17 |
10 +----+------+------+
11 5 rows in set (0.00 sec)
1 mysql> select * from mark;
2 +----+------+-----------+
3 | id | mark | studentid |
4 +----+------+-----------+
5 |  1 |   61 |         2 |
6 |  2 |   45 |         2 |
7 |  3 |   70 |         3 |
8 +----+------+-----------+
9 3 rows in set (0.00 sec)

一、内连接(inner join)

 1 mysql> select s.name,m.mark from student s,mark m where s.id=m.studentid;
 2 +------+------+
 3 | name | mark |
 4 +------+------+
 5 | 小红 |   61 |
 6 | 小红 |   45 |
 7 | 小明 |   70 |
 8 +------+------+
 9 3 rows in set (0.07 sec)
10 mysql> select s.name,m.mark from student s inner join mark m on s.id=m.studentid;
11 +------+------+
12 | name | mark |
13 +------+------+
14 | 小红 |   61 |
15 | 小红 |   45 |
16 | 小明 |   70 |
17 +------+------+
18 3 rows in set (0.06 sec)

二、左连接(left join)

 1 mysql> select s.name,m.mark from student s left join mark m on s.id=m.studentid;
 2 +------+------+
 3 | name | mark |
 4 +------+------+
 5 | 小红 |   61 |
 6 | 小红 |   45 |
 7 | 小明 |   70 |
 8 | 小王 | NULL |
 9 | 小李 | NULL |
10 | 小强 | NULL |
11 +------+------+
12 6 rows in set (0.07 sec)

三、右连接(right join)

1 mysql> select s.name,m.mark from student s right join mark m on s.id=m.studentid;
2 +------+------+
3 | name | mark |
4 +------+------+
5 | 小红 |   61 |
6 | 小红 |   45 |
7 | 小明 |   70 |
8 +------+------+
9 3 rows in set (0.00 sec)
时间: 2024-11-10 13:11:02

SQL表连接查询的相关文章

SQL表连接查询(inner join、full join、left join、right join)

前提条件:假设有两个表,一个是学生表,一个是学生成绩表. 表的数据有: 一.内连接-inner jion : 最常见的连接查询可能是这样,查出学生的名字和成绩: select s.name,m.mark from student s,mark m where s.id=m.studentid 上面就是我们最常见的inner join,即内连接,把符合student.id=mark.studentid 条件的元组才选出来,也可以写成: select s.name,m.mark from stude

SQL表连接查询(inner join(join)、full join、left join、right join)

下面列出了您可以使用的 JOIN 类型,以及它们之间的差异. JOIN: 如果表中有至少一个匹配,则返回行(join=inner join) LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只要其中一个表中存在匹配,就返回行 前提条件:假设有两个表,一个是学生表,一个是学生成绩表. 表的数据有: 一.内连接-inner jion : 最常见的连接查询可能是这样,查出学生的名字和成绩: sele

010.简单查询、分组统计查询、多表连接查询(sql实例)

-------------------------------------day3------------ --添加多行数据:------INSERT [INTO] 表名 [(列的列表)] --SELECT UNION --SELECT 'HAHA',1,32--UNION ALL --全部显示/显示重复数据 即使集合相同--UNION---------将查询的两个结果集合并.结构必须一致 -->常见面试题 --SELECT 'HEHE',2,33------将查询结果添加到列表中(子查询)IN

SQL多表连接查询

SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中不会这样建表,实际开发中这两个表会有自己不同的主键.) 一.外连接 外连接可分为:左连接.右连接.完全外连接. 1.左连接  left join 或 left outer join SQL语句:select * from student left join course on student.

SQL多表连接查询(详细实例)

转自: http://www.dedecms.com/knowledge/data-base/sql-server/2012/0709/2872.html 本文主要列举两张和三张表来讲述多表连接查询.新建两张表:表1:student  截图如下:表2:course  截图如下:(此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.)一.外连接外连接可分为:左连接.右连接.完全外连接.1.左连接  left join 或 left oute

oracle(sql)基础篇系列(二)——多表连接查询、子查询、视图

    多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所在的部门名字 --(1)必须明确的指出重复字段属于哪个表 select ename,dname dept.deptno from emp,dept where emp.deptno = dept.deptno;   --(2)新语法:join...on(...=...) select ename,

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

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

Mysql 表连接查询

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

django ORM model filter 条件过滤,及多表连接查询、反向查询,某字段的distinct

版权归作者所有,任何形式转载请联系作者.作者:petanne(来自豆瓣)来源:https://www.douban.com/note/301166150/ 1.多表连接查询:感觉django太NX了.  class A(models.Model):    name = models.CharField(u'名称')  class B(models.Model):    aa = models.ForeignKey(A)B.objects.filter(aa__name__contains='se