📅  最后修改于: 2023-12-03 15:42:13.591000             🧑  作者: Mango
这是一道涉及使用RDBMS(关系型数据库管理系统)的问题。在这个问题中,我们需要建立一些数据表,对这些表进行查询与更新操作。
根据题目描述,我们需要创建三个数据表:customers
、orders
、order_items
。
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50),
phone VARCHAR(15),
address VARCHAR(100)
);
在customers
表中,我们创建了customer_id
列作为主键,并且为每个客户存储他们的名称、电子邮件、电话和地址。
CREATE TABLE orders (
order_id INT PRIMARY KEY,
order_date DATE,
customer_id INT REFERENCES customers(customer_id),
total_amount DECIMAL(10,2)
);
在orders
表中,我们创建了order_id
列作为主键,并在该表中引用了customers
表中的customer_id
列作为外键,以包括每个订单的客户信息。此外,我们还存储了订单的总金额total_amount
。
CREATE TABLE order_items (
item_id INT PRIMARY KEY,
order_id INT REFERENCES orders(order_id),
product_name VARCHAR(50),
quantity INT,
price DECIMAL(10,2)
);
在order_items
表中,我们存储每个订单中的商品信息,同时使用order_id
引用了orders
表中的外键,以包含每个商品的订单信息。
SELECT o.order_id, o.order_date, c.name, c.email, c.phone, c.address, o.total_amount
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id;
此查询将展示每个订单以及相关客户的详细信息。
SELECT o.order_id, SUM(oi.quantity) AS total_items, SUM(oi.price * oi.quantity) AS total_amount
FROM orders o JOIN order_items oi ON o.order_id = oi.order_id
GROUP BY o.order_id;
此查询将展示每个订单的总商品数量和总金额。
INSERT INTO customers (customer_id, name, email, phone, address) VALUES (1, 'John Doe', 'johndoe@example.com', '+1234567890', '123 Main St, Anytown USA');
此查询将向customers
表中添加新客户的信息。
INSERT INTO orders (order_id, order_date, customer_id, total_amount) VALUES (1, '2020-01-01', 1, 100.00);
此查询将向orders
表中添加新订单的信息。
INSERT INTO order_items (item_id, order_id, product_name, quantity, price) VALUES (1, 1, 'Product A', 1, 50.00);
INSERT INTO order_items (item_id, order_id, product_name, quantity, price) VALUES (2, 1, 'Product B', 2, 25.00);
此查询将向order_items
表中添加新产品的信息,并将它们关联到之前添加的订单。