表library:

表borrow:

表reader:

1、等值连接:(常用)

  原理:将多张表组合成一个逻辑大表,即字段相加记录相乘(笛卡尔积)。

  语法:select * from 表A,表B where 表A.主键=表B.外键 and 查询条件。

  步骤:①明确来源于哪几张表;②找到关联字段;③添加条件;④合并语句。

  优点:简单方便。

  缺点:查询效率低,查询记录快速增长。

  适用范围:不适用于海量数据的查询。

  例子:

    找出李某所借图书的所有图书的书名及借书日期。

    SELECT

      full_name,

      book_name,

      borrowdate

    FROM

      library,

      borrow,

      reader

    WHERE

      library.mastr_serial_number = borrow.mastr_serial_number

      AND borrow.library_card_number = reader.library_card_number

      AND full_name LIKE '李%'

2、嵌套查询:(常用)

  原理:将多个单表查询结果拼接在一起。

  步骤:①依据需求,拆分多个单表查询;②针对每一个单表查询编写sql语句(每写完一条执行,检查是否正确);③合并sql语句(单表查询结果单个:=、!=、>、<、>=、<=;多个查询结果:in、not in)。

  优点:查询效率高,记录不会增加。

  缺点:复杂、逻辑性强,表结构要清晰

  例子:

    查询1997年10月以后借书的读者借书证号、姓名和单位。

    SELECT

      full_name,

      unit,

        library_card_number

      FROM

      reader

    WHERE

      library_card_number in (

      SELECT

        library_card_number

      FROM

        borrow

      WHERE

        borrowdate > '1997-10-31')

3.内连接:(不常用)

  特点:先判断再组合

  语法:inner join ... on

两张表:select * from 表A inner join 表B on 表A.主键=表B.外键 where 查询条件

三张表:select * from 表A inner join 表B on 表A.主键=表B.外键 inner join 表C on 表C.主键=表B.外键 where 查询条件

4.外连接:(不常用)

  分为左外连接右外连接

sql多表查询(单表查询略过)的更多相关文章

  1. Entity Framework 使用sql语句分页(查询单表)

    1.查询单表 var pageSize = 2;//条数 var pageIndex = 2;//索引 var sql = @" SELECT D.* FROM ( SELECT ROW_N ...

  2. oracle查询单表占用空间的大小

    oracle查询单表占用空间的大小 SELECT segment_name AS TABLENAME, BYTES B, BYTES KB, BYTES MB FROM user_segments w ...

  3. ActiveRecord-连接多张表之单表继承

    ActiveRecord-连接多张表之单表继承 1. 基本概念 Rails提供了两种机制,可以将复杂的面向对象模型映射为关系模型,即所谓的单表继承(single-table inheritance)和 ...

  4. django之数据库表的单表查询

    一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...

  5. Django框架----数据库表的单表查询

    一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...

  6. Mysql常用表操作 | 单表查询

    160905 常用表操作 1. mysql -u root -p 回车 输入密码   2. 显示数据库列表 show databases     3. 进入某数据库 use database data ...

  7. python开发mysql:表关系&单表简单查询

    一 一对多,多对一 1.1 建立多对一 ,一对多的关系需要注意 先建立被关联的表,被关联的字段必须保证时唯一的 在创建关联的表,关联的字段一定是可以重复的 1.2 示例: 出版社 多对一,多个老师可能 ...

  8. day42——外键的限制和解决方法、外键的三种约束模式、修改表(单表查询)

    day42 外键的限制和解决方法 可以添加外键关联的那个字段可以是 被唯一(unique)约束的字段 或者 主键 限制:+ 由于外键的使用,致使多个表之间产生了联系,当我们对这些表进行更新或删除操作的 ...

  9. python 之 数据库(修改表、复制表、删除表、单表查询)

    10.8 修改表.复制表.删除表 10.81 修改表 alter table . 修改表名 alter table 表名 rename 新表名; . 增加字段 alter table 表名 add 字 ...

  10. SQL语句基础之 单表查找

    Sql语句之 单表查询 一.一般查询 1.查看表中的所有记录 以及 所有字段(属性) 语句 : select * from student; 2.只查看某些字段 语句:select sname,sex ...

随机推荐

  1. C++ Const指针

  2. Vue系列之 => 评论功能(小知识点串联)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. openGL学习----相机

    0.参考:https://learnopengl-cn.github.io/01%20Getting%20started/09%20Camera/ 0.0其实相机就是搞清楚cameraPos,came ...

  4. Python 面向对象介绍

    面向对象,面向过程 面向对象引子 人狗大战,人与狗都有不同的特点,如果要写出这两个不同角色 需要写出两个角色,可以使用嵌套函数,函数内在写入函数,然后通 过字典,将里层函数reture出来,在调用. ...

  5. 解决eclipse修改后台代码ctrl+s总是【自动重启服务器】问题

    每次修改后台代码保存总是自启动服务很是耗时,以下设置可以解决你的烦恼: 双击你要设置的项目: 点击ok,最后ctrl+s一下就搞定了. 这时候你随便修改后台代码随便ctrl+s都不会重新启动服务器.b ...

  6. git分散式版本管理系统,从安装到基本使用

    首先,当然是安装git了,不用寻思,官网下载即可 https://git-scm.com/downloads 第二是设置账户,鼠标右键,选择git bush,在命令窗口中进行设置 git config ...

  7. ssm整合(方案一 引入jar)

    最近为了研究redis整合,基本都是ssm+redis 好吧 我是老古董了,以前都是ssi,那就折腾一下ssm先,具体方案: 方案一:基本引入jar版.方案二:maven版(后续继续整) 这篇主要是通 ...

  8. 《Visual C# 从入门到精通》第一章使用变量、操作符和表达式——读书笔记

    前言: 这个笔记是我个人总结,主要是熟练自己查看<Visual C# 从入门到精通>(第8版)这本书时,懵然起总结的想法,只是总结一些知识点,在工作项目会用得上,但是对毫无C#语言基础的, ...

  9. OpenGL.Tutorial16_ShadowMapping

    1. 2. In Tutorial 15 we learnt how to create lightmaps, which encompasses(包含) static lighting. While ...

  10. nodeJs的Buffer操作

    再nodejs里,很多类是引入模块才能使用,Buffer是一个全局类,他不需要require引入 Buffer有三种构造函数 //1.在构造函数传一个数字,规定buffer的长度.默认全是16进制的0 ...