Mysql联合,连接查询

一、 联合查询    UNION, INTERSECT, EXCEPT

  UNION运算符可以将两个或两个以上Select语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为:    
        select_statement 
        UNION [ALL] selectstatement   [UNION [ALL] selectstatement][…n]

  其中selectstatement为待联合的Select查询语句。    
  ALL选项表示将所有行合并到结果集合中。不指定该项时,被联合查询结果集合中的重复行将只保留一行。    
联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。 在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。

在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如:    
查询1 UNION (查询2 UNION 查询3)

  INTERSECT,EXCEPT

  INTERSECT是交集. EXCEPT是差集的意思

select user_id from user intersect select user_id from toy; 
//就是返回这两个select查询相同的部分.(这里就是有玩具的孩子的user_id)

select user_id from user except select user_id from toy; 
//就是返回第一个select 减去第二个select 结果的部分。(这里就是没有玩具的孩子的user_id)

二、连接查询 

  通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。

在标准SQL中的UNION语句如下:

      SELECT column_name(s) FROM table_name1
      UNION
      SELECT column_name(s) FROM table_name2

  其中有前提:每个SELECT的内容(表项)必须是相同的结构。详细的说,链接的表的列数必须互相相同,同时相对的列属性也必须相同。而列名可以不同(结构相同)

  首先交叉连接:cross join

select u.username, t.toyname from user as u cross join toy as t; 
//交叉连接就是把所有第一个表和第二个表的值一一对应 
//例如:假如第一个表格有5个值,第二个表有4个值,这个结果就应该有20条记录。

  内联接:inner join

    相等连接:(equal join)

  select u.username, t.toyname from user as u inner join toy as t on(也可以用where) u.user_id = t.user_id; 
  //这个的结果就是各自拥有的玩具了。

    不等连接:(non-equal join)

  select u.username, t.toyname from user as u inner join toy as t on(也可以用where) u.user_id <> t.user_id order by u.username; 
  //这个的结果是各自没有的玩具

    自然连接:(natural join)

  这个是有在连接的两个表格中的列名称相等的时候才能用。


1

<code class=" hljs sql">select u.username, t.toyname from user as u natural join toy as t; //和上面的相等连接的结果是一样的。</code>

  外连接:outer join

    左外联接、右外联接比较相似:left outer join ; right outer join;


1

2

<code class=" hljs sql">select u.usrename, t.toyname from user u inner join toy t on (这里不能用where) u.user_id = t.user_id;

//这个是查询用户姓名和他所拥有的玩具名字</code>

select u.username, t.toyname from user u left outer join toy t on u.user_id = t.user_id; 
//这个是以左表(user)为基准,来查询所有用户姓名和他所拥有的玩具名字。

select u.username, t.toyname from user u right outer join toy t on u.user_id = t.user_id; 
//这个是以右表(toy)为基准,来查询所有玩具的拥有者姓名,对于没有拥有者的为NULL

时间: 2024-10-03 22:27:15

Mysql联合,连接查询的相关文章

【mysql】连接查询

连接查询: 将多个表的记录连接起来 [mysql]连接查询

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常见连接查询

在实际应用中,由于不同的业务需求,一般的select查询语句无法满足要求.所以就需要了解一些MySQL的高级查询方式 内连接 inner join 典型的连接查询,有相等(=)连接和不等(<>)连接.如:现在有产品表及供应商表 产品表: 供应商表: 如果现在有个需求:查询产品表中产品对应的供应商公司名称及地址.那么就可以根据产品表中的供应商ID进行连接查询 这样根据两个表中供应商ID相同的条件,就查询出想要的数据.注:连接查询默认为inner join,所以inner可省略不写 左连接 lef

MYSQL的连接查询

连接能干什么? 当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集进行汇总显示. MYSQL的三种连接 1.内连接查询,查询的结果为两个表匹配到的数据 2.右(外)连接查询,查询的结果为两个表匹配到的数据和右表特有的数据,对于左表中不存在的数据使用null填充. 3.左(外)连接查询:查询的结果为两个表匹配到的数据和左表特有的数据,对于右表中不存在的数据使用null填充. 连接基本语法 select * from 表1 inner或left或right join 表2 on 表1.列

MySQL之连接查询

1.内连接:只列出匹配的记录 语法: SELECT - FROM join_table INNER JOIN join_table2  ON join_condition WHERE where_defnition 解释:只列出这些连接表中与连接条件相匹配的数据行.INNER可以不写,则默认为内连接.[ON join_condition]里面写的是连接的条件. 举例: select e.name,d.name from employee e inner join department d on

mysql操作--连接查询

1.innerjoin(内连接,或等值连接) select * from table1 inner join table2 on table1.column1= table2.column2; 2.left join(左连接) select * from table1left join table2 on table1.column1= table2.column2; 3.right join(右连接) select * from table1 right join table2 on tabl

MySQL左右连接查询中的NULL的数据筛选问题

原文地址:https://www.cnblogs.com/alonely/p/10452448.html

MySQL 外连接、内连接,连接查询、多表查询、子查询、视图

MySQL连接查询.多表查询.子查询: 连接查询:事先将两张或多张表join,根据join的结果进行查询: [导入hellodb.sql数据库],输入密码即可 [[email protected] home]# mysql -uroot -p  mydb < /home/hellodb.sql     hellodb.sql数据库下载链接:http://pan.baidu.com/s/1pJKK4w7 密码:a0re [查看students表] mysql> select * from stu

MySQL数据库联合查询与连接查询

联合查询 基本概念 联合查询是可合并多个相似的选择查询的结果集.等同于将一个表追加到另一个表,从而实现将两个表的查询组合在一起,使用为此为UNINO或UNION ALL 联合查询:将多个查询的结果合并到一起(纵向合并):字段数不变,多个查询的记录数合并 应用场景 1.将同一张表中不同的结果(需要对应多条查询语句来实现),合并到一起展示数据 2.最常见:在数据量大的情况下,会对表进行分表操作,需要对每张表进行部分数据统计,使用联合查询来将数据存放到一起显示 基本语法 select 语句 union