diff --git a/codes/mysql/sql必知必会示例/select.sql b/codes/mysql/sql必知必会示例/select.sql index 619ce10..4ef0136 100644 --- a/codes/mysql/sql必知必会示例/select.sql +++ b/codes/mysql/sql必知必会示例/select.sql @@ -96,3 +96,105 @@ WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01') AND prod_price >= 10; SELECT * FROM products WHERE prod_price NOT BETWEEN 3 AND 5; + +-- ------------------------------------------- +-- 通配符 +-- ------------------------------------------- +SELECT prod_id, prod_name, prod_price +FROM products +WHERE prod_name LIKE 'Fish%'; + +SELECT prod_id, prod_name, prod_price +FROM products +WHERE prod_name LIKE '%bean bag%'; + +SELECT prod_id, prod_name, prod_price +FROM products +WHERE prod_name LIKE 'F%y'; + +SELECT prod_id, prod_name, prod_price +FROM products +WHERE prod_name LIKE '__ inch teddy bear'; + +SELECT prod_id, prod_name, prod_price +FROM products +WHERE prod_name LIKE '% inch teddy bear'; + +-- ------------------------------------------- +-- 排序和分组 +-- ------------------------------------------- + +SELECT vend_id, COUNT(*) AS num +FROM products +GROUP BY vend_id; + +SELECT cust_id, COUNT(*) AS orders +FROM orders +GROUP BY cust_id +HAVING COUNT(*) >= 2; + +SELECT order_num, COUNT(*) AS items +FROM orderitems +GROUP BY order_num +HAVING COUNT(*) >= 3 +ORDER BY items, order_num; + +-- ------------------------------------------- +-- 子查询 +-- ------------------------------------------- + +SELECT cust_id +FROM orders +WHERE order_num IN (SELECT order_num + FROM orderitems + WHERE prod_id = 'RGAN01'); + +SELECT cust_name, cust_contact +FROM customers +WHERE cust_id IN (SELECT cust_id + FROM orders + WHERE order_num IN (SELECT order_num + FROM orderitems + WHERE prod_id = 'RGAN01')); + +-- ------------------------------------------- +-- 连接 +-- ------------------------------------------- + +-- 内连接 +SELECT vend_name, prod_name, prod_price +FROM vendors INNER JOIN products +ON vendors.vend_id = products.vend_id; + +-- 自连接 +SELECT c1.cust_id, c1.cust_name, c1.cust_contact +FROM customers c1, customers c2 +WHERE c1.cust_name = c2.cust_name +AND c2.cust_contact = 'Jim Jones'; + +-- 自连接 +SELECT c.*, o.order_num, o.order_date, + oi.prod_id, oi.quantity, oi.item_price +FROM customers c, orders o, orderitems oi +WHERE c.cust_id = o.cust_id +AND oi.order_num = o.order_num +AND prod_id = 'RGAN01'; + +-- 左连接 +SELECT customers.cust_id, orders.order_num +FROM customers LEFT JOIN orders +ON customers.cust_id = orders.cust_id; + +-- 右连接 +SELECT customers.cust_id, orders.order_num +FROM customers RIGHT JOIN orders +ON customers.cust_id = orders.cust_id; + +-- 组合 +SELECT cust_name, cust_contact, cust_email +FROM customers +WHERE cust_state IN ('IL', 'IN', 'MI') +UNION +SELECT cust_name, cust_contact, cust_email +FROM customers +WHERE cust_name = 'Fun4All'; \ No newline at end of file