SQL查询与数据库设计实战:课程选课人数与商品订单统计

0 下载量 20 浏览量 更新于2024-06-28 收藏 67KB DOCX 举报
在本次数据库复习资料中,我们主要关注了SQL语句的应用,特别是涉及到多张关联表的操作。首先,针对一个学生选课系统的数据库,有三个核心表:学生表、课程表和选课表。学生表包含了学号、姓名、性别和出生日期等信息,而课程表则记录了课号、课程名、学分等内容。选课表则是连接学生和课程的桥梁,通过学号和课号来记录学生的选课情况以及成绩。 问题1要求查询每门课的选课人数,即使没有被选修也要显示。通过使用LEFT OUTER JOIN关键字,我们可以确保所有课程都出现在结果中,同时对课程表进行GROUP BY操作,按照课程名进行分组,并使用COUNT函数计算每个课程的选课人数。SQL语句如下: ```sql SELECT 课程.课号, 课程名, COUNT(学号) as 人数 FROM 课程 LEFT OUTER JOIN 选课 ON 选课.课号 = 课程.课号 GROUP BY 课程.课号, 课程名, 课程.课号 AS 人数; ``` 接着,另一个场景涉及到了商品销售相关的数据库,包括商品表、订单表、订单详情表和顾客表。商品表包含商品编号、名称、单价和库存数量等信息;顾客表记录了顾客编号和姓名;订单表用于存储订单编号和可能的关联信息;订单详情表则链接订单和商品,提供更详细的购买记录。在这个复杂的关系中,如果需要创建一个数据库来管理这些数据,我们需要定义相应的表结构,并可能执行SQL命令来初始化数据库,如: ```sql CREATE DATABASE ShoppingCart; USE ShoppingCart; CREATE TABLE Customers ( CustomerID char(5) PRIMARY KEY, CustomerName varchar(50) ); CREATE TABLE Products ( ProductID char(5) PRIMARY KEY, ProductName varchar(50), Price money, StockQuantity int ); CREATE TABLE Orders ( OrderID char(10) PRIMARY KEY, OrderDate datetime ); CREATE TABLE OrderDetails ( OrderID char(10), ProductID char(5), Quantity int, FOREIGN KEY (OrderID) REFERENCES Orders(OrderID), FOREIGN KEY (ProductID) REFERENCES Products(ProductID) ); ``` 这里创建了一个名为"ShoppingCart"的数据库,并定义了各个表及其字段,以支持商品销售、顾客管理和订单管理的功能。通过这些表之间的外键约束,可以轻松跟踪订单详情,包括购买的商品数量和总价。 这两个例子展示了SQL语言在处理不同场景下的数据查询和数据库设计中的重要性,涵盖了左连接查询、聚合函数(COUNT)以及数据库结构的创建与设计。理解并熟练运用这些概念,对于数据库管理员和开发人员来说是至关重要的技能。