SQL保姆级教程

 

在实际的项目开发中,在进行数据表结构设计的时候,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间很多都是相关联的,所以各个表结构之间也存在着一定的关系。有时候,我们需要从多个表中查询数据,这时候就需要用到MySQL的多表查询了。

1.多表关系
关系类型 场景案例
实现方法
一对多

(多对一)

一个公司都有很多不同的部门,他们之间各司其职;每个部门有着多个员工,这就是典型的一对多的模型。在多的一方建立外键,来连接一的一方的主键
多对多最常见的就是学生与课程表之间的关系,每个学生都有着多门课程,每门课程又可以供不同学生选择。建立第三张中间表,中间表至少包含两个外键,分别连接两方主键
一对一多用于单表的拆分,将一张表的基础字段放在一张表中,其他的详情字段放在另一张表中,从而提升效率。比如说:描述一个人,我们能从身体的基本信息来描述(身高,体重,姓名,年龄),也可以使用受教育信息(小学,中学,大学)等。在任意一方加入外键,来连接另一方的主键,并设置外键为唯一的(unique)
2.多表查询分类
  • 内连接查询相当于查询A、B两个集合之间的交集C。分为隐式连接和显式连接

-- 隐式内连接SELECT 字段列表 FROM 表1,表2… WHERE 条件;
-- 显示内连接SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;
  • 外连接查询分为左外连接和右外连接

    左外连接:查询左表所有数据,以及两张表交集部分数据,A+C
    右外连接:查询右表所有数据,以及两张表交集部分数据,B+C
# 左外连接SELECT * FROM emp_query e left join dept_query d on d.id = e.dept_id; # 右外连接SELECT * FROM emp_query e right join dept_query d on d.id = e.dept_id;
  • 自连接是是当前表与自身的查询连接,通过一张表查询出我们的关联信息。可以是内连接也可以是外连接。比如一张表中存在着一个领导层,通过一张表中的人物关系查询其上层领导。自连接必须使用表别名
select 字段列表 from 表A 别名a 表B 别名b on 条件....;
  • 联合查询也就是把两张表的查询结果拼接起来。例如:将公司人员大于35的的员工和薪资低于8000的员工查询出来。一共有两种方式。

# 联合查询:也就是将查询结果直接拼接在一起(union union all)SELECT * FROM emp_query WHERE age > 30UNION ALLSELECT * FROM emp_query WHERE salary < 12000;
# 使用union,name就没有重复的了,去重后拼接SELECT * FROM emp_query WHERE age > 30UNIONSELECT * FROM emp_query WHERE salary < 12000;
 1.对于联合查询的多张表,他们的列数与字段类型必须相同
   2.union会将全部的数据合并在一起,而union会对数据进行去重
  • SQL语句中嵌套select语句,称为嵌套查询,也称子查询。

这条查询语句的查询条件是取决于另外一个查询语句的。
SELECT  *  FROM   t1   WHERE  column1 =  ( SELECT  column1  FROM  t2 ... );
子查询外部的语句可以是insert / update / delete / select 的任何一个,最
  • 标量子查询:子查询返回的结果为单个值[一行一列]

  • 列子查询:子查询返回的结果为一列,但可以是多行

  • 行子查询:子查询返回的结果为一行,但可以是多列

  • 表子查询:子查询返回的结果为多行多列[相当于子查询结果是一张表]

  • 标量子查询

子查询返回结果是单个值(数字,字符串,日期等)最简单的形式
常用的操作符:= <> > >= < <=
  • 列子查询列子查询
子查询返回的结果是一列(可以是多行)
常用的操作符:in,not in,any,all
  • 行子查询
子查询返回的结果是一行(可以是多列)
常用的操作符:=, <>, in, not in
  • 表子查询
子查询返回的结果是多行多列
常用的操作符:in
  • exists型子查询

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/88798.html

(0)
guozi的头像guozi
上一篇 2024年6月4日 上午9:48
下一篇 2024年6月4日 上午10:20

相关推荐

  • 门户网站被篡改怎么处理,网站被攻击怎么办

    防火墙是保护您的网络免受外部攻击的第一道防线。门户网站应该使用可靠的防火墙来过滤非法和恶意流量,并有严格的访问控制规则来限制未经授权的用户访问系统资源。 3.更新软件补丁 门户网站…

    行业资讯 2024年5月10日
    0
  • 泄密查询网站

    随着互联网的发展,我们的生活离不开各种各样的网络服务,而其中最受关注的当属云服务器行业。在这个行业中,有一种神秘的存在——泄密查询网站。它们究竟是什么?它们又有什么作用和意义?如何…

    行业资讯 2024年3月30日
    0
  • 武汉建站公司

    武汉建站公司,这个行业名词在近些年变得越来越熟悉,它是什么?它有哪些特点?它的服务内容又是如何的?它的未来发展又将会如何?随着互联网的日益普及和发展,建站公司作为一个新兴行业,正逐…

    行业资讯 2024年4月21日
    0
  • 重考生停刊,重考生待修复

    首先,我们需要明确攻击者不仅仅是一个无聊、懒惰的人。他们的动机各不相同,其中最重要的是经济利益。对于一些黑客来说,攻击复试网站获取用户个人信息、银行账户等敏感信息进行出售或勒索已经…

    行业资讯 2024年5月8日
    0

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注