創建表

  • 倉庫表
CREATE TABLE Warehouses
(
    Code     INTEGER PRIMARY KEY NOT NULL,
    Location TEXT                NOT NULL, -- 倉庫地址
    Capacity INTEGER             NOT NULL  -- 容納箱子的數量
);
  • 箱子表
CREATE TABLE Boxes
(
    Code      TEXT PRIMARY KEY NOT NULL,
    Contents  TEXT             NOT NULL, -- 內容
    Value     REAL             NOT NULL, -- 價值
    Warehouse INTEGER          NOT NULL, -- 屬於那個倉庫
    CONSTRAINT fk_Warehouses_Code FOREIGN KEY (Warehouse) REFERENCES Warehouses (Code)
);

預置數據

  • 倉庫信息
INSERT INTO Warehouses
VALUES (1, 'Chicago', 3),
       (2, 'Chicago', 4),
       (3, 'New York', 7),
       (4, 'Los Angeles', 2),
       (5, 'San Francisco', 8);
  • 箱子信息
INSERT INTO Boxes
VALUES ('0MN7', 'Rocks', 180, 3),
       ('4H8P', 'Rocks', 250, 1),
       ('4RT3', 'Scissors', 190, 4),
       ('7G3H', 'Rocks', 200, 1),
       ('8JN6', 'Papers', 75, 1),
       ('8Y6U', 'Papers', 50, 3),
       ('9J6F', 'Papers', 175, 2),
       ('LL08', 'Rocks', 140, 4),
       ('P0H6', 'Scissors', 125, 1),
       ('P2T6', 'Scissors', 150, 2),
       ('TU55', 'Papers', 90, 5);

題目

  1. 選擇所有倉庫
  2. 選擇值大於$ 150的所有箱子
  3. 在所有箱子中選擇所有不同的內容
  4. 選擇所有箱子的平均值
  5. 選擇倉庫代碼和每個倉庫中箱子的平均值
  6. 與上一練習相同,但隻選擇那些平均值大於150的倉庫
  7. 選擇每個箱子的代碼以及箱子所在城市的名稱
  8. 選擇倉庫代碼以及每個倉庫中的箱子數量。可選,考慮到一些倉庫是空的(即,箱子數應該顯示為零,而不是從結果中省略倉庫)
  9. 選擇飽和的所有倉庫的代碼(如果倉庫中的箱子數大於倉庫的容量,則倉庫已飽和)
  10. 選擇位於芝加哥的所有箱子的代碼
  11. New York新建一個倉庫,可容納3個箱子
  12. 創建一個新箱子,代碼為H5RT,包含價值為200Papers,位於倉庫2
  13. 將所有箱子的價值減少15%
  14. 對價值大於所有箱子平均值的箱子應用20%的減值
  15. 移除價值低於100的所有箱子
  16. 從飽和倉庫中取出所有箱子

答案

  1. 選擇所有倉庫
select *
from warehouses;
  1. 選擇值大於$ 150的所有箱子
SELECT *
FROM Boxes
WHERE Value > 150;
  1. 在所有箱子中選擇所有不同的內容
SELECT DISTINCT Contents
FROM Boxes;
  1. 選擇所有箱子的平均值
SELECT AVG(Value)
FROM Boxes;
  1. 選擇倉庫代碼和每個倉庫中箱子的平均值
SELECT Warehouse, AVG(Value)
FROM Boxes
GROUP BY Warehouse;
  1. 與上一練習相同,但隻選擇那些平均值大於150的倉庫
SELECT Warehouse, AVG(Value)
FROM Boxes
GROUP BY Warehouse
HAVING AVG(Value) > 150;
  1. 選擇每個箱子的代碼以及箱子所在城市的名稱
SELECT Boxes.Code, Location
FROM Warehouses
         INNER JOIN Boxes
                    ON Warehouses.Code = Boxes.Warehouse;
  1. 選擇倉庫代碼以及每個倉庫中的箱子數量。可選,考慮到一些倉庫是空的(即,箱子數應該顯示為零,而不是從結果中省略倉庫)
/* Not taking into account empty warehouses */
SELECT Warehouse, COUNT(*)
FROM Boxes
GROUP BY Warehouse;

/* Taking into account empty warehouses */
SELECT Warehouses.Code, COUNT(Boxes.Code)
FROM Warehouses
         LEFT JOIN Boxes
                   ON Warehouses.Code = Boxes.Warehouse
GROUP BY Warehouses.Code;
  1. 選擇飽和的所有倉庫的代碼(如果倉庫中的箱子數大於倉庫的容量,則倉庫已飽和)
SELECT Code
FROM Warehouses
WHERE Capacity <
      (
          SELECT COUNT(*)
          FROM Boxes
          WHERE Warehouse = Warehouses.Code
      );

/* Alternate method not involving nested statements */
SELECT Warehouses.Code
FROM Warehouses
         JOIN Boxes ON Warehouses.Code = Boxes.Warehouse
GROUP BY Warehouses.Code
HAVING Count(Boxes.Code) > Warehouses.Capacity;
  1. 選擇位於芝加哥的所有箱子的代碼
/* Without subqueries */
SELECT Boxes.Code
FROM Warehouses
         RIGHT JOIN Boxes
                    ON Warehouses.Code = Boxes.Warehouse
WHERE Location = 'Chicago';

/* With a subquery */
SELECT Code
FROM Boxes
WHERE Warehouse IN
      (
          SELECT Code
          FROM Warehouses
          WHERE Location = 'Chicago'
      );
  1. New York新建一個倉庫,可容納3個箱子
INSERT
INTO Warehouses
VALUES (6, 'New York', 3);
  1. 創建一個新箱子,代碼為H5RT,包含價值為200Papers,位於倉庫2
INSERT INTO Boxes
VALUES ('H5RT', 'Papers', 200, 2);
  1. 將所有箱子的價值減少15%
UPDATE Boxes
SET Value = Value * 0.85;
  1. 對價值大於所有箱子平均值的箱子應用20%的減值
UPDATE Boxes
SET Value = Value * 0.80
WHERE Value > (SELECT AVG(Value) FROM (SELECT * FROM Boxes) AS X);
  1. 移除價值低於100的所有箱子
DELETE
FROM Boxes
WHERE Value < 100;
  1. 從飽和倉庫中取出所有箱子
DELETE
FROM Boxes
WHERE Warehouse IN
      (
          SELECT Code
          FROM Warehouses
          WHERE Capacity <
                (
                    SELECT COUNT(*)
                    FROM Boxes
                    WHERE Warehouse = Warehouses.Code
                )
      );

相關說明:

1、VIP會員無限製任意下載,免積分。立即前往開通>>

2、下載積分可通過日常 簽到綁定郵箱 以及 積分兌換 等途徑獲得!

3、本站資源大多存儲在雲盤,如出現鏈接失效請評論反饋,如有密碼,均為:www.ipipn.com。

4、所有站內資源僅供學習交流使用。未經原版權作者許可,禁止用於任何商業環境,否則後果自負。為尊重作者版權,請購買正版作品。

5、站內資源來源於網絡公開發表文件或網友分享,如侵犯您的權益,請聯係管理員處理。

6、本站提供的源碼、模板、軟件工具等其他資源,都不包含技術服務,請大家諒解!

7、源碼、模板等資源會隨著技術、壞境的升級而存在部分問題,還請慎重選擇。

PS.源碼均收集自網絡,如有侵犯閣下權益,請發信件至: admin@ipipn.com .


源站網 » SQL語句練習-倉庫

發表評論

讚助本站發展 維持服務器消耗

全站源碼免費下載 立刻讚助