MYSQL学习笔记(自用)第五章

第五章

第一节. Introduction| 编写复杂查询

##恢复数据库到处是状态
## FILE-->OPEN SQL Script-->open create-databases

第二节. 子查询| Subqueries

USE sql_store;

SELECT *
FROM products
WHERE unit_price > (
        SELECT unit_price
		FROM products
        WHERE product_id = 3
)

第二节. 作业练习

USE sql_hr;
SELECT *
FROM employees
WHERE salary > (
      SELECT AVG(salary)
      FROM employees
)

第三节. IN运算符| The IN Operator

USE sql_store;

SELECT *
FROM products
WHERE product_id NOT IN (
        SELECT DISTINCT product_id
        FROM order_items
)

第三节. 作业练习

USE sql_invoiceing;
SELECT *
FROM clients
WHERE product_id NOT IN (
        SELECT DISTINCT client_id
        FROM invoices
)

第四节. 子查询 vs 连接| Subqueries vs Joins

SELECT *
FROM clients
WHERE product_id NOT IN (
        SELECT DISTINCT client_id
        FROM invoices
)

SELECT *
FROM  clients
LEFT JOIN invoices USING (client_id)
WHERE invoice_id IS NULL

第四节. 作业练习

USE sql_store;
SELECT DISTINCT customer_id, first_name, last_name
FROM customers c 
JOIN orders o USING (customer_id)
JOIN order_items oi USING (order_id)
WHERE oi.product_id = 3

第五节. ALL关键字| The ALL Keyword

USE sql_invoicing;

SELECT *
FROM invoices
WHERE invoice_total > (
	SELECT MAX(invoice_total)
	FROM invoices
	WHERE client_id = 3
)

第五节. 作业练习

 SELECT *
 FROM invoices
 WHERE invoice_total > ALL (
	SELECT MAX(invoice_total)
    FROM invoices
    WHERE client_id = 3
)

第六节. ANY关键字| The ANY Keyword

 SELECT *
 FROM invoices
 WHERE invoice_total > ANY (
	SELECT MAX(invoice_total)
    FROM invoices
    WHERE client_id = 3
)

SELECT *
FROM clients
WHERE client_id IN (
	SELECT client_id
    FROM invoices
    GROUP BY client_id
    HAVING COUNT(*) >= 2
)

第七节. 相关子查询| Correlated Subqueries

USE sql_hr;

SELECT *
FROM employees e
WHERE salary > (
	SELECT AVG(salary)
    FROM employees
    WHERE office_id = e.office_id
)

第七节. 作业练习

USE sql_invoicing;

SELECT *
FROM invoices i
WHERE invoice_total > (
		SELECT AVG(invoice_total)
        FROM invoices
        WHERE client_id = i.client_id
 )

第八节. EXISTS运算符| The EXIXTS Operator

SELECT *
FROM clients
WHERE client_id IN (
		SELECT DISTINCT client_id
        FROM invoices
)

SELECT *
FROM clients c
WHERE EXISTS (
		SELECT client_id
        FROM invoices
        WHERE client_id = c.client_id
)

第八节. 作业练习

USE sql_store;

SELECT *
FROM products p
WHERE NOT EXISTS (
		SELECT product_id
        FROM order_items
        WHERE product_id = p.product_id
)

第九节. SELECT子句中的子查询| Subqueries in the SELECT Clause

USE sql_invoicing;
SELECT 
		invoice_id,
        invoice_total,
        (SELECT AVG(invoice_total)
            FROM invoices) AS invoice_average,
		 invoice_total - (SELECT invoice_average) AS difference
		FROM invoices

第九节. 作业练习

SELECT
		client_id,
        name,
        (SELECT SUM(invoice_total)
			FROM invoices
            WHERE client_id = c.client_id) AS total_sales
		(SELECT AVG(invoice_total) FROM invoices) AS average
        (SELECT total_sales - average) AS difference
FROM clients c

第十节. FROM子句中的子查询| Subqueries in the FROM CLause

SELECT *
FROM (
SELECT
		client_id,
        name,
        (SELECT SUM(invoice_total)
			FROM invoices
            WHERE client_id = c.client_id) AS total_sales
		(SELECT AVG(invoice_total) FROM invoices) AS average
        (SELECT total_sales - average) AS difference
FROM clients c
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bro Ze

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值