sql多表查询(单表查询略过)
表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多表查询(单表查询略过)的更多相关文章
- Entity Framework 使用sql语句分页(查询单表)
1.查询单表 var pageSize = 2;//条数 var pageIndex = 2;//索引 var sql = @" SELECT D.* FROM ( SELECT ROW_N ...
- oracle查询单表占用空间的大小
oracle查询单表占用空间的大小 SELECT segment_name AS TABLENAME, BYTES B, BYTES KB, BYTES MB FROM user_segments w ...
- ActiveRecord-连接多张表之单表继承
ActiveRecord-连接多张表之单表继承 1. 基本概念 Rails提供了两种机制,可以将复杂的面向对象模型映射为关系模型,即所谓的单表继承(single-table inheritance)和 ...
- django之数据库表的单表查询
一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...
- Django框架----数据库表的单表查询
一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...
- Mysql常用表操作 | 单表查询
160905 常用表操作 1. mysql -u root -p 回车 输入密码 2. 显示数据库列表 show databases 3. 进入某数据库 use database data ...
- python开发mysql:表关系&单表简单查询
一 一对多,多对一 1.1 建立多对一 ,一对多的关系需要注意 先建立被关联的表,被关联的字段必须保证时唯一的 在创建关联的表,关联的字段一定是可以重复的 1.2 示例: 出版社 多对一,多个老师可能 ...
- day42——外键的限制和解决方法、外键的三种约束模式、修改表(单表查询)
day42 外键的限制和解决方法 可以添加外键关联的那个字段可以是 被唯一(unique)约束的字段 或者 主键 限制:+ 由于外键的使用,致使多个表之间产生了联系,当我们对这些表进行更新或删除操作的 ...
- python 之 数据库(修改表、复制表、删除表、单表查询)
10.8 修改表.复制表.删除表 10.81 修改表 alter table . 修改表名 alter table 表名 rename 新表名; . 增加字段 alter table 表名 add 字 ...
- SQL语句基础之 单表查找
Sql语句之 单表查询 一.一般查询 1.查看表中的所有记录 以及 所有字段(属性) 语句 : select * from student; 2.只查看某些字段 语句:select sname,sex ...
随机推荐
- Linux下的.txt文件复制到win下面不自动换行
原因:在Linux系统下, '\n'就是一个换行符,而在windows下,它是由回车换行组成,表示为 \r\n 解决方法:用Notepad++打开文档-->编辑-->文档格式转换--> ...
- JAVA多线程之CountDownLatch与join的区别
首先,我们来看一个应用场景1: 假设一条流水线上有三个工作者:worker0,worker1,worker2.有一个任务的完成需要他们三者协作完成,worker2可以开始这个任务的前提是worker0 ...
- 内存地址 id
def a(): return b def b(): print('666')c = a()print(c) #打印16进制的内存地址print(b) #打印16进制的内存地址print (id(c) ...
- centos crash debug
https://www.dedoimedo.com/computers/crash.html#mozTocId484074 http://people.redhat.com/anderson/cras ...
- TPS54331 TPS54332 3.5V to 28V Input, 3A, 570kHz Step-Down Converter with Eco-mode
The TPS54331 is a 28-V, 3-A non-synchronous buck converter that integrates a low RDS(on) high side M ...
- Gpload安装手册(Linux版本)
Gpload安装手册(Linux版本) 一.python 2.7版本 Linux系统默认是安装python2.7的,如果没有需要手动安装(python版本要求2.4.4以上): 通过命令:python ...
- 常用验证正则:用户名、密码、邮箱、手机号、身份证(PHP和JavaScript)
日常开发中,常常会用到一些简单常用的正则表达式,用于判断一些常见的情况 下边,就列出五种(验证用户名,密码强度,邮箱格式,手机号格式和身份证格式)常见的情况 分成PHP版本和JavaScript两个版 ...
- 百度AI搜索引擎
一.爬虫协议 与其它爬虫不同,全站爬虫意图爬取网站所有页面,由于爬虫对网页的爬取速度比人工浏览快几百倍,对网站服务器来说压力山大,很容易造成网站崩溃. 为了避免双输的场面,大家约定,如果网站建设者不愿 ...
- vue搭建前端相关命令
Vue搭建.新建工程并打开浏览器调试的指令: 这四行命令就是我们接下来工作了. 1.npm install –global vue-cli 我们在安装好nodejs后就可以用到“npm”这个前缀指令, ...
- js打开新页面的方式:
1.超链接<a href="http://www.jb51.net" title="脚本之家">Welcome</a>等效于js代码wi ...