?基礎查詢
1、查詢用戶信息,僅顯示用戶的姓名與手機號,用中文顯示列名。中文顯示姓名列與手機號列
SELECT user_id AS '編號', phone AS '電話' FROM user;
2.?根據訂購表進行模糊查詢,模糊查詢需要可以走索引,需要給出explain語句。使用explain測試給出的查詢語句,需要顯示走了索引查詢。
CREATE INDEX idx_order_id ON `order`(order_id);
?
不能用模糊查詢的符號作為查詢的開頭,否則不走索引。
EXPLAIN SELECT * FROM `order` WHERE order_id LIKE '小%';
?
可以看到已經走了索引了。
3.統計用戶訂單信息,查詢所有用戶的下單數量,并進行倒序排列。使用聚合函數查詢處所有用戶的訂單數量,倒序排列結果
SELECT user_id, COUNT(order_id) AS '訂購數量'
FROM `order`
GROUP BY user_id
ORDER BY `訂購數量` DESC;
?
復雜查詢?
?1.查詢用戶的基本信息,訂單信息。正確顯示用戶信息,正確顯示訂單信息,正確進行多表聯合查詢
u.user_id, -- 選擇用戶的用戶IDu.username, -- 選擇用戶名u.age,-- 選擇年齡u.sex,-- 選擇性別u.phone, -- 選擇電話u.email, -- 選擇郵箱uo.quantity,uo.book_id
FROM user u -- 從用戶表中選擇數據
JOIN `order` uo ON u.user_id = uo.user_id; -- 使用JOIN連接用戶表和訂單表,連接條件是兩個表中的user_id相同
?
2.查看訂單中下單最多的書籍。正確使用聚合函數,正確使用子查詢,正確顯示結果?
SELECT pt.book_id -- 選擇書籍名稱
FROM `books` p -- 從書籍表中選擇數據
JOIN `order` pt ON p.book_id = pt.book_id -- 使用JOIN連接書籍表和訂單表,連接條件是書籍表中的book_id與訂單表中的book_id相同
JOIN (SELECT book_id, -- 子查詢中選擇書籍編號IDCOUNT(order_id) AS order_count -- 子查詢中對每個書籍ID的訂單ID進行計數,并命名為order_countFROM `order` -- 子查詢從訂單表中選擇數據GROUP BY book_id -- 按書籍ID進行分組ORDER BY order_count DESC -- 按訂單數量降序排列LIMIT 3) oi ON p.book_id = oi.book_id; -- 子查詢的結果作為臨時表oi,與產品表通過book_id進行連接
?
3.查詢 訂單中購買書籍最多的數量,和庫存中剩余書籍總數量
SELECT `order_id` -- 選擇用戶的所有信息quantity, -- 選擇用戶IDstock_qty -- 選擇書籍庫存
FROM user `order` -- 從用戶表中選擇數據
JOIN (SELECT order_id, -- 子查詢中選擇用戶IDSUM(quantity) AS total_spent -- 子查詢中對每個用戶的訂單總數量進行求和,并命名為total_spentFROM `order` -- 子查詢從訂單表中選擇數據GROUP BY order_id -- 按用戶ID進行分組ORDER BY total_spent DESC -- 按總消費金額降序排列LIMIT 1) o ON order_id= o.order_id -- 子查詢的結果作為臨時表o,與用戶表通過user_id進行連接
JOIN `stock` uo ON uo.stock_id = order_id; -- 使用JOIN連接用戶表和錢包表,連接條件是兩個表中的user_id相同