1. 程式人生 > >SQL語句(練習題)

SQL語句(練習題)

零售價 sql語句 鍵盤 庫存 tor having 機械 大於 lec

#1
#需求:查詢所有貨品信息
SELECT * FROM product;
#需求:查詢所有貨品的id,supplier,cutoff
SELECT id,supplier,cutoff FROM product;
SELECT ID,DIR_ID FROM product;
SELECT DISTINCT dir_id FROM product;
SELECT DIR_ID PS FROM product;
SELECT saleprice*3 FROM product
#2.過濾查詢
#需求: 選擇id,貨品名稱,零售價在300-400之間的貨品
SELECT id,productName,salePrice FROM product WHERE salePrice>300 AND salePrice<400;
#需求: 選擇id,貨品名稱,分類編號為2或4的所有貨品
SELECT id,productName,dir_id xid FROM product WHERE dir_id=2 OR dir_id=4;
#需求: 選擇id,貨品名稱,分類編號不為2的所有商品
SELECT id,productName,dir_id FROM product WHERE dir_id!=2;
SELECT id,productName,dir_id FROM product WHERE dir_id<>2;
#需求: 選擇id,貨品名稱,分類編號的貨品零售價大於等於250或者成本大於等於200
SELECT id,productName,dir_id,salePrice,costPrice FROM product
WHERE salePrice>=250 OR costPrice>=200;
#3.其余過濾查詢
#需求: 選擇id,貨品名稱,零售價在300-400之間的貨品
SELECT id,productName,salePrice FROM product WHERE salePrice BETWEEN 300 AND 400;
#需求: 選擇id,貨品名稱,零售價不在300-400之間的貨品
SELECT id,productName,salePrice FROM product WHERE salePrice NOT BETWEEN 300 AND 400;
#需求:選擇id,貨品名稱,分類編號為2或4的所有貨品
SELECT id,productName,dir_id FROM product WHERE dir_id IN (2 OR 4);
#需求:選擇id,貨品名稱,分類編號不為2或4的所有貨品
SELECT id,productName,dir_id FROM product WHERE dir_id NOT IN (2 OR 4);
#需求:查詢商品名為NULL的所有商品信息
SELECT id,productName FROM product WHERE productName IS NULL;
#需求: 查詢貨品名稱帶有 ‘M‘ 的所有信息
SELECT id,productName From product WHERE productName LIKE ‘%M%‘;
#需求: 查詢匹配貨品名稱 ‘羅技M9?‘ 的所有信息
SELECT id,productName From product WHERE productName LIKE ‘羅技M9_‘;
#需求: 查詢匹配貨品名稱 ‘羅技M9??‘ 的所有信息
SELECT id,productName From product WHERE productName LIKE ‘羅技M9__‘;
#4
#需求:選擇所有信息並且按零售價升序/降序排序
SELECT * FROM product ORDER BY salePrice;
SELECT * FROM product ORDER BY salePrice ASC;
SELECT * FROM product ORDER BY salePrice DESC;
#需求:選擇id,貨品名稱,分類編號,零售價先按分類編號排序,編號相同的再按零售價降序排序
SELECT id,productName,dir_id,salePrice FROM product ORDER BY dir_id,salePrice DESC;
#需求:查詢M系列並按照批發價排序(加上別名)
SELECT id,productName,salePrice pf FROM product WHERE productName LIKE ‘%M%‘ ORDER BY pf DESC;
#需求:查詢分類為2並按照批發價升序/降序排序(加上別名)
SELECT id,productName,dir_id,salePrice pf FROM product WHERE dir_id=2 ORDER BY salePrice;
SELECT id,productName,dir_id,salePrice pf FROM product WHERE dir_id=2 ORDER BY salePrice DESC;
#5.
#需求:查詢所有商品平均零售價
SELECT AVG(salePrice) FROM product;
#需求:查詢商品總記錄數
SELECT COUNT(id) FROM product;
#需求:查詢分類為2的商品總數
SELECT COUNT(id) FROM product WHERE dir_id=2;
#需求:查詢商品的最小零售價,最高零售價,以及所有商品零售價總和
SELECT MIN(salePrice),MAX(salePrice),SUM(salePrice) FROM product;

#6.-------------------------------------------
#需求:查詢所有的貨品信息+對應的貨品分類信息----------
#顯示內連接
SELECT * FROM product,productdir WHERE product.dir_id=productdir.id;
#隱示內連接
SELECT * FROM product p JOIN productdir pd ON p.dir_id=pd.id;

#需求: 查詢零售價大於200的無線鼠標------------
#顯示內連接
SELECT * FROM product,productdir WHERE salePrice>200 AND dirName=‘無線鼠標‘ AND product.dir_id=productdir.id;
#隱示內連接
SELECT * FROM product p JOIN productdir pd ON salePrice>200 AND dirName=‘無線鼠標‘ AND p.dir_id=pd.id;

#需求: 查詢每個貨品對應的分類以及對應的庫存---------
#顯示內連接
SELECT p.productName,pd.dirName,pc.storeNum FROM product p,productdir pd,productstock pc WHERE p.dir_id=pd.id AND p.dir_id=pc.product_id;
#隱示內連接
SELECT p.productName,pd.dirName,pc.storeNum FROM product p JOIN productdir pd JOIN productstock pc ON p.dir_id=pd.id AND p.dir_id=pc.product_id;

#需求: 如果庫存貨品都銷售完成,按照利潤(profit)從高到低查詢貨品名稱,零售價,貨品分類(三張表).-------------
#顯示內連接
SELECT p.id,p.productName,p.salePrice,pd.dirName,(p.salePrice-p.costPrice)*pc.storeNum profit
FROM product p,productdir pd,productstock pc
WHERE p.dir_id=pd.id AND p.dir_id=pc.product_id
ORDER BY profit;
#隱示內連接
SELECT p.id,p.productName,p.salePrice,pd.dirName,(p.salePrice-p.costPrice)*pc.storeNum profit
FROM product p JOIN productdir pd JOIN productstock pc
ON p.dir_id=pd.id AND p.dir_id=pc.product_id
ORDER BY profit;

#需求:查詢出所有商品編號對於商品的所有信息
SELECT * FROM product p LEFT JOIN productdir pd ON p.dir_id=pd.id;

SELECT * FROM product p RIGHT JOIN productdir pd ON p.dir_id = pd.id;

#7.
#需求: 查詢每個商品分類的名稱和父分類名稱:
#顯示內連接
SELECT p.id,p.dirName,pt.dirName FROM productdir p,productdir pt WHERE p.parent_id=pt.id;
#隱示內連接
SELECT p.id,p.dirName,pt.dirName FROM productdir p JOIN productdir pt ON p.parent_id=pt.id;

#需求: 查詢出所有的頂級分類
SELECT * FROM productdir WHERE parent_id IS NULL;

SELECT * FROM product WHERE supplier IS NULL;

#8.
#1.插入完整數據記錄/空值
INSERT INTO productdir VALUES(101,‘機械鍵盤‘,5);
#2.插入數據記錄一部分
INSERT productdir (id,dirName,parent_id) VALUES(NULL,‘老人鍵盤‘,5);
INSERT productdir(dirName) VALUES(‘鍵盤‘);
INSERT productdir(dirName) VALUES(NULL);
#3.插入查詢出來的結果
INSERT productdir(dirName,parent_id)
SELECT dirName,parent_id FROM productdir;

#刪除數據
DELETE FROM productdir WHERE id = 105;

DELETE FROM productdir WHERE id > 100;

#需求:將零售價大於300的商品的零售價上調0.2倍
UPDATE product SET salePrice = salePrice*1.2 WHERE salePrice > 300;

UPDATE product SET salePrice = salePrice/1.2 WHERE salePrice > 300;
#需求:將零售價大於300的有線鼠標的零售價上調0.1倍
UPDATE product p,productdir pd SET salePrice = salePrice*1.1
WHERE p.dir_id = pd.id AND pd.dirName = ‘有線鼠標‘ AND p.salePrice > 300;

#分組 (主要是統計的功能) GROUP BY HAVING

SELECT dir_id,COUNT(id) FROM product GROUP BY dir_id;

SELECT dir_id,COUNT(id) AS ‘統計數量‘ FROM product
GROUP BY dir_id HAVING dir_id > 2;

SQL語句(練習題)