文档章节

多表查询

d
 dfhao
发布于 2017/05/07 23:17
字数 576
阅读 5
收藏 0

#多表关系

###1、表与表之间的关系

  • 一对一
  • 一对多
  • 多对多

###2、多表查询

  • 合并结果集:
    • 被合并的两个结果:列数、列类型必须相同
    • UNION 去除重复记录
    • UNION ALL 不去除重复记录
  • 连接查询
    • 结果为多个表的乘积
    • 连接查询会产生笛卡尔积,通过关联关系去除笛卡尔积。
    • 内连接: [INNER] JOIN ON 两张表共有的记录
    • 外连接: OUTER JOIN ON
      • 左外连接 LEFT [OUTER] JOIN
      • 右外连接 RIGHT [OUTER] JOIN
      • 全外连接(MySQL不支持)FULL JOIN
    • 自然连接 NATURAL JOIN(自然连接无需你去给出主外键等式,它会自动找到这一等式)
  • 子查询
    • 子查询出现的位置:
      • where后,作为条为被查询的一条件的一部分;
      • from后,作表;
    • 当子查询出现在where后作为条件时,还可以使用如下关键字
      • any
      • all
    • 子查询结果集的形式:
      • 单行单列(用于条件)
      • 单行多列(用于条件)
      • 多行单列(用于条件)(当子查询结果集形式为多行单列时可以使用ALL或ANY关键字)
      • 多行多列(用于表)
  • 自连接:自己连接自己,起别名

###3、生成SQL脚本 导出数据

  • 在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本,但要注意,脚本文本中只包含数据库的内容,而不会存在创建数据库的语句!所以在恢复数据时,还需要自已手动创建一个数据库之后再去恢复数据。
  • mysqldump –u用户名 –p密码 数据库名>生成的脚本文件路径
  • 注意,mysqldump命令是在Windows控制台下执行,无需登录mysql!!!

###4、执行SQL脚本 恢复数据

  • 前提:必须先创建数据库名
  • 执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本!!!
  • 执行SQL脚本不只是用来恢复数据库,也可以在平时编写SQL脚本,然后使用执行SQL 脚本来操作数据库!
  • SOURCE C:\mydb1.sql 或者用下面的方法恢复数据
  • mysql –u用户名 –p密码 数据库<要执行脚本文件路径

© 著作权归作者所有

上一篇: GitHub专用工具
下一篇: 数据库知识
d
粉丝 4
博文 17
码字总数 6158
作品 0
杭州
程序员
私信 提问
关于php的mvc模型的疑惑

在php中,mvc里的模型部分是一个模型操作一个表?那如果要多表查询,是在模型里就把多表查询实现啦,还是几个表的模型已经写好,然后在控制器里实现多表的查询。是在模型的时候就实现多表的查...

欣儿
2013/04/02
573
4
Linux-MySQL基本命令-SQL语句

服务端命令SQL 在数据库系统中,SQL语句不区分大小写(建议用大写) SQL语句可单行或多行书写,以“;”结尾 关键词不能跨多行或简写 用空格和缩进来提高语句的可读性 子句通常位于独立...

一入IT深似海·
2018/07/29
0
0
MySQL 查询优化器(总结)

通过以上对单表查询、复合查询不同情况下的查询分析和测试,对查询优化器有了更深入的理解。同时,通过以上测试,也发现很多在查询中应该优化或者规避的策略,这些策略可以有效的优化SQL语句...

tara_qri
2015/09/29
182
0
ylb:SQL 表的高级查询-多表连接和子查询

ylbtech-SQL Server: SQL Server-表的高级查询-多表连接和子查询 SQL Server 表的高级查询-多表连接和子查询。 1,ylb:表的高级查询-多表连接和子查询返回顶部 --========================...

吞吞吐吐的
2017/10/14
0
0
SqlSugar入门篇2 【查询】 让我们实现零SQL

SqlSugar在查询的功能是非常强大的,多表查询、分页查询 、 一对一查询、一对多查、WhenCase等复杂函数、Mapper功能、和拉姆达自定义扩展等,用好了是可以做到真正零SQL的一款ORM。 首先将S...

孙凯旋
2018/10/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ES6

ES6:不改变原理的基础上,让API变得更简单 一、let:代替var用于声明变量 1、var的缺点: (1)声明提前 (2)没有块级作用域 2、let的优点: (1)组织了申明提前 (2)让let所在的块({}),...

wytao1995
今天
3
0
kubernetes 环境搭建 —— minikube

创建集群 minikube start 搭建好 k8s 集群后,可以查看集群的状态以及部署应用。主要用到的是 k8s 的 api,这通常需借助于 kutectl 命令行工具 基本操作 kubectl versionkubectl cluster-i...

lemos
今天
9
0
关于js混淆与反混淆还原操作

使用js的混淆加密,其目的是为了保护我们的前端代码逻辑,对应一些搞技术吃饭的公司来说,为了防止被竞争对手抓取或使用自己的代码,就会考虑如何加密,或者混淆js来达到代码保护。 1、为什么...

开源oschina
今天
11
0
用盛金公式解三次方程(ansi c版)

/* cc cubic.c -lm gcc cubic.c -lm Shengjin's Formulas Univariate cubic equation aX ^ 3 + bX ^ 2 + cX + d = 0, (a, b, c, d < R, and a!= 0). Multiple root disc......

wangxuwei
今天
9
0
JBolt开发平台入门(16)- 弹出Dialog显示指定区域的html内容

在JBolt里,有个主从表Demo。 子表中除了普通的table显示,还有其它从表显示形式 比如下方案例:是针对一个升级管理子表中存放版本的changelog富文本信息。 需求是点击左上角的弹出查看按钮,...

山东-小木
今天
46
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部