SQL2-子查询、join查询
SQL常用高级查询包括:Join查询、子查询。
子查询:
USE flowershopdb --子查询:在一个select语句使用另一个select 语句作为条件或数据来源.
--查询块:一个select子句.
--嵌套查询:在一个查询块中嵌套另一个查询块.内层查询叫子查询,外层查询叫主查询. --1 不相关子查询:子查询不依赖于主查询,子查询可以独立执行. --作为条件
SELECT * FROM tb_detailed
WHERE c_id = (SELECT c_id FROM tb_category WHERE c_name='生日花')
--作为列
SELECT (SELECT c_name FROM tb_category WHERE c_id=1000),(SElECT d_remark FROM tb_detailed WHERE d_id=2000) --2 相关子查询:子查询依赖于主查询,子查询不可以独立执行.
SELECT de.* FROM tb_detailed de
WHERE de.c_id = (SElECT ca.c_id FROM tb_category ca WHERE ca.c_id=1001 AND ca.c_id=de.d_id ) --关键字:IN ALL ANY
--注:子查询必需有括起来().
--IN 表示查询结果是否在子查询结果集中
--All 表示查询结果要满足子查询的所有条件
--Any 表示查询结果要满足子查询的的任一个条件 -- IN 用于多个结果集
SELECT * FROM tb_detailed
WHERE d_id IN (SElECT d_id FROM tb_detailed WHERE d_remark='生日用花') -- ALL
-- >all、<all、>=all、<all
SELECT de.* FROM tb_detailed de
WHERE de.d_id > ALL(SElECT pr.d_id FROM tb_product pr WHERE pr.p_price>3)
--相当于
SELECT de.* FROM tb_detailed de
WHERE de.d_id > (SElECT MAX(pr.d_id) FROM tb_product pr WHERE pr.p_price>3) -- ANY
-- >any、<any、<=any、>=any
SELECT de.* FROM tb_detailed de
WHERE de.d_id > ANY(SElECT pr.d_id FROM tb_product pr WHERE pr.p_price>3)
--相当于
SELECT de.* FROM tb_detailed de
WHERE de.d_id > ANY(SElECT MIN(pr.d_id) FROM tb_product pr WHERE pr.p_price>3) --关键字:
--EXISTS 用于检查子查询是否至少会返回一行数据,该子查询实际上不返回任何数据,而是返回true或false【指定子查询,检测行的存在】 SELECT * FROM tb_user WHERE EXISTS (SELECT NULL)
--等同于
SELECT * FROM tb_user SELECT de.* FROM tb_detailed de
WHERE EXISTS(SElECT ca.c_id FROM tb_category ca WHERE ca.c_id=1001 AND ca.c_id=de.d_id )
--等同于
SELECT de.* FROM tb_detailed de
WHERE de.c_id IN(SElECT ca.c_id FROM tb_category ca WHERE ca.c_id=1001 AND ca.c_id=de.d_id ) --NOT EXISTS 如果子查询没有返回行,则满足Not Exists中的Where子句
SELECT de.* FROM tb_detailed de
WHERE NOT EXISTS(SElECT ca.c_id FROM tb_category ca WHERE ca.c_id=1001 AND ca.c_id=de.d_id )
Join查询:
CREATE DATABASE selectdb
USE selectdb SELECT * FROM A
SELECT * FROM B --多表条件查询
SELECT * FROM A,B WHERE A.A=B.A --Jion表连接
--[join是和哪个表连接,on后是连接的关系是什么] --内连接 INNER JOIN
-- 只连接匹配的行
SELECT A.A,A.B,A.C,B.D,B.E FROM A INNER JOIN B
ON A.A=B.A --左外连接 LEFT [OUTER] JOIN
--包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行
SELECT A.A,A.B,A.C,B.D,B.E FROM A LEFT JOIN B
ON A.A=B.A --右外连接 RIGHT [OUTER] JOIN
--包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行
SELECT A.A,A.B,A.C,B.D,B.E FROM A RIGHT JOIN B
ON A.A=B.A --全连接 FULL [OUTER] JOIN
-- 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
SELECT A.A,A.B,A.C,B.D,B.E FROM A FULL JOIN B
ON A.A=B.A --交叉连接 CROSS JOIN
-- 生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配
--A中的每一条数据与B中的每一条数据交叉 3*3
SELECT * FROM A CROSS JOIN B --自连接
--自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。
SELECT *
FROM B b1
JOIN B b2
ON b1.A=b2.D SELECT * FROM B
更多查询链接:http://www.cnblogs.com/hoojo/archive/2011/07/16/2108129.html
SQL2-子查询、join查询的更多相关文章
- 基于双下划线的跨表查询 (join查询)
因为你的数据库中的查询就是重点 那么你的django提供的orm也是查询语句最重点 ,也提供的查询方法比较的多,下面我们学习下类似于MYSQL的连表(join)查询 Django 还提供了一种直观而 ...
- tp5 thinkphp5 多表关联查询 join查询
model下: $res = \think\Db::name('article') ->alias("a") //取一个别名 ->join('admin ad','a. ...
- Mysql 拼接字段查询语句和join查询拼接和时间查询
个人平时记录的,有点乱 1.修改时间字段,如果时间字段的类型是date或者是datetime类型的 update 表名 set 时间字段 = DATE_FORMAT(NOW(),'%Y-%m-%d % ...
- Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)
Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...
- sql 内连接 子查询 合并查询
-- 内连接:-- 显示员工姓名.工资和公司所在地 select e.ename, e.sal, d.dname from emp e,dept d; -- 笛卡尔积 select e.ename, ...
- MySQL的查询,子查询,联结查询,联合查询
MySQL的查询,子查询,联结查询,联合查询 一.mysql查询的五种子句where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) 二 ...
- 18 12 06 sql 的 基本语句 查询 条件查询 逻辑运算符 模糊查询 范围查询 排序 聚合函数 分组 分页 连接查询 自关联 子查询
-- 数据的准备 -- 创建一个数据库 create database python_test charset=utf8; -- 使用一个数据库 use python_test; -- 显示使用的当前 ...
- 【HIVE】(3)联合查询join、时间戳函数、字符串函数
数据 t_join1.txt 1,a,1 2,b,2 3,c,4 t_join2.txt 1,2a 2,2b 3,2c 建表.导入: create table t_join1(id int, name ...
- 子查询 & 联合查询
子查询 嵌套在其他语句内部的select语句称为子查询或内查询,外层的语句可以是insert.update.delete.select等,一般select作为外层语句较多.外面如果为select语句, ...
随机推荐
- JAVA装饰器模式
Java程序员们应该对java.io对不会陌生,因为java.io包采用了装饰器模式. 一.定义: Decorator装饰器,顾名思义,就是动态地给一个对象添加一些额外的职责,就好比为房子进行装修一样 ...
- Java面试题Tomcat的优化经验
一.掉对web.xml的监视,把jsp提前编辑成Servlet.有富余物理内存的情况,加大tomcat使用的jvm的内存 二.服务器资源 服务器所能提供CPU.内存.硬盘的性能对处理能力有决定性影响. ...
- swipe方法
/** * @author zhousg * @Date 2016-02-04 * @Method 滑动方法 针对一个大容器内部的容器做滑动封装 * @param * args args.swipeD ...
- js——cookie
cookie:存储数据,当用户访问了某个网站(网页)的时候,我们就可以通过cookie来向访问者电脑上存储数据 1.不同的浏览器存放的cookie位置不一样,也是不能通用的 2. cookie的存储是 ...
- 关于中文乱码的解决方法(URL方式)
假设keyWord ='阳光'; url="play.jsp? keyWord ="+ keyWord 若按照上述的地址直接访问,则中文会变成乱码.必须使用encodeURI()进 ...
- php7 install script
./configure --prefix=/home/admin/local/php7 --with-gd=/home/admin/local/libgd-2.1.1/ --with-jpeg-dir ...
- leetcode Single Number python
#question : Given an array of integers, every element appears twice except for one. Find that single ...
- css负边距自适应布局
单列定宽单列自适应布局: <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> ...
- spoj COT2 - Count on a tree II 树上莫队
题目链接 http://codeforces.com/blog/entry/43230树上莫队从这里学的, 受益匪浅.. #include <iostream> #include < ...
- OpenCV学习 2:播放AVI视频
原创文章,欢迎转载,转载请注明出处 第二个程序,播放视频.用opencv做起来是如此的简单..哈哈. 学Opencv,只是为了在它的基础上实现工程应用,而它里面高深的理论我等屌丝只 ...