mysql 内连接、左连接、右连接

记录备忘下,初始数据如下:

DROP TABLE IF EXISTS t_demo_product;
CREATE TABLE IF NOT EXISTS t_demo_product(
    proid int(20),
    proname varchar(20),
    price int(10),
    PRIMARY KEY(proid)
)ENGINE=InnoDB  DEFAULT CHARSET=gbk;

DROP TABLE IF EXISTS t_demo_operation;
CREATE TABLE IF NOT EXISTS t_demo_operation(
    opid  int(10),
    proid int(20),
    opcount int(10),
    PRIMARY KEY(opid)
)ENGINE=InnoDB  DEFAULT CHARSET=gbk;

insert into t_demo_product(proid, proname, price) values
(1,‘产品A‘,‘10‘)
,(2,‘产品B‘,‘11‘)
,(3,‘产品C‘,‘12‘)
,(4,‘产品D‘,‘13‘)
,(5,‘产品E‘,‘14‘);

insert into t_demo_operation(opid, proid, opcount) values
(1,1,2)
,(2,3,6)
,(3,3,1)
,(4,4,3)
,(5,7,3);

//内连接,不允许未空
select * from t_demo_product a, t_demo_operation b where a.proid = b.proid;
select * from t_demo_product a join t_demo_operation b on a.proid = b.proid;

//左连接,以t_demo_product为主,若对应存在多条记录则记录多条,无则为空
select * from t_demo_product a left join t_demo_operation b on a.proid = b.proid;

//右连接, 以t_demo_operation为主,若对应多条则记录多条,无则为空
select * from t_demo_product a right join t_demo_operation b on a.proid = b.proid;

时间: 2024-10-18 01:37:25

mysql 内连接、左连接、右连接的相关文章

解析:内联,左外联,右外联,全连接,交叉连接的区别

连接分为:内连接.外连接.交叉连接 一.内连接--最常用 定义:仅将两个表中满足连接条件的行组合起来作为结果集. 在内连接中,只有在两个表中匹配的行才能在结果集中出现 关键词:INNER JOIN 格式:SELECT 列名表 FROM 表名1 [INNER] JOIN 表名2 ON或WHERE 条件表达式 说明: (1)列名表中的列名可以出自后面的两个表,但如果两个表中有同名列,应在列名前标明出处,格式为:表名.列名 (2)若连接的两个表名字太长,可以为它们起个别名. 格式为:表名 AS 别名 

linq to entity 左联接 右连接 以及内连接写法的区别(转)

linq to entity 左连接 右连接 以及内连接写法的区别  还有就是用lambda表达式怎么写,那个效法效率高些? [解决办法]左连右连还是内连这个其实你不需要关心.只需要根据实体的映射关系写查询,框架会自动帮你生成的.至于linq查询语法与扩展方法的效率,应该是一样的,比如: C# code var users=(from u in db.Users where u.UserRoleId==1 select u) .ToList(); var users2=db.Users.Wher

【数据库】浅显易懂地理解左、右连接

之前一直对数据库里面的外连接有些疑惑,理解的不是很透彻,今天总算自己建了个表,详细地对照了几种写法,总算彻底搞清楚了. 基本概念 左连接.右连接就是数据库里面的关键字  left join 和 right join, 当然在oracle里面也可以在某个字段的后面加上(+)来表示外连接 左连接保留出现在left join左边的关系中的元组,也就是允许右边关系中为空:通俗一点:Left join 会从左表中返回所有的行,即便在右表中没有找到匹配的项. 同理右连接保留出现在right join右边的关

mysql 内连接 左连接 右连接 外连接

mysql> desc student;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| ID | int(11) | NO | PRI | 0 | || NAME | varchar(16) | YES | | NULL | || A

mysql之左连接与右连接

http://www.cnblogs.com/zzwlovegfj/archive/2012/06/23/2559593.html ****************************************************************** 左连接: select 列1,列2,列N from tableA left join tableB on tableA.列 = tableB.列(正常是一个外键列) [此处表连接成一张大表,完全当成一张普通表看] where,havi

MySQL的左连接、右连接和全连接的实现

表student:+----+-----------+------+| id | name | age |+----+-----------+------+| 1 | Jim | 18 || 2 | Lucy | 16 || 3 | Lily | 16 || 4 | Lilei | 17 || 5 | Hanmeimei | 16 |+----+-----------+------+表mark:+----+---------+-------+| 1 | English | 90 || 1 | M

Oracle表与表之间的连接方式(内连接:inner join 、外连接 全连接: full outer join、左连接:left outer join 、右连接:right outer join、自然连接:natural join)

1 --内连接:INNER JOIN 它表示返回两个表或记录集连接字段的匹配记录,表示两个表中相互包含的部分 2 select * from student inner join sc on student.sno=sc.sno; 3 --外连接(全连接):包含左.右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行.不符合条件的,以空值代替. 4 --全连接:表示两个表组合在一起,左右不相匹配时使用空值替换 5 select * from student full outer join

左连接、右连接、交叉连接、全外连接

第一部分.连接查询 一.内连接 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值.内连接分三种: 1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列. 2.不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值.这些运算符包括>.>=.<=.<.!>.!<和<>. 3.自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用

Oracle 左连接 left join、右连接right join说明

Oracle 左.右连接 + 在等号 左边表示右连接  获取右表所有记录,即使左表没有对应匹配的记录. + 在等号 右边表示左连接  获取左表所有记录,即使右表没有对应匹配的记录. 例子: select e.empno,e.name,d.deptno,d.dname,d.loc from emp e,dept d where e.deptno(+) = d.deptno 右连接 已知  emp表中没有40,dept表中有40,部门编号为40的没有员工. 使用右连接  from emp e rig

MySQL学习——SQL查询语句(连接查询&amp;子查询)(三)

一:连接查询: 连接查询是将俩个或者俩个以上的表按照某个条件连接起来,从中选择需要的数据,连接查询同时查询俩个或者俩个以上的表时使用,当不同的表中存在表示相同意义的字段时,可以通过该字段来连接这几个表,例如,学生表中有course_id字段来表示所学课程的课程号,课程表中有num字段来表示课程号,那么可以通过学生表中的course_id字段与课程表中的num字段来进行连接查询,连接查询包括内连接查询和外连接查询. 1.1 内连接查询 内连接查询是一种常用的连接查询,内连接查询可以查询俩个或者以上