SQL基础五(作业代码)

本文档详细介绍了如何使用SQL创建学生选课系统的数据库结构,包括学生表、课程表及成绩表,并通过具体实例展示了数据的插入过程。此外,还提供了多种查询方式,如查询学生各科目的最高分、不及格的成绩等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

create database stuinfo
create table student
(
   mid char(10) not null primary key,
   mname char(50) not null
)
create table  course
(
  fid char(10) not null primary key,
  fname char(50) not null
)
create table score
(
   sid int identity(1,1) primary key,
   fid char(10) not null,
   mid char(10) not null,
   score int,
   foreign key(fid) references course(fid),
   foreign key(mid) references student(mid)
)
INSERT INTO course(FID,FName)VALUES('F001','语文') 
INSERT INTO course(FID,FName)VALUES('F002','数学') 
INSERT INTO course(FID,FName)VALUES('F003','英语') 
INSERT INTO course(FID,FName)VALUES('F004','历史') 
--学生表中插入数据-- 
INSERT INTO student(MID,MName)VALUES('M001','张萨') 
INSERT INTO student(MID,MName)VALUES('M002','王强') 
INSERT INTO student(MID,MName)VALUES('M003','李三') 
INSERT INTO student(MID,MName)VALUES('M004','李四') 
INSERT INTO student(MID,MName)VALUES('M005','阳阳') 
INSERT INTO student(MID,MName)VALUES('M006','虎子') 
iNSERT INTO student(MID,MName)VALUES('M007','夏雪') 
INSERT INTO student(MID,MName)VALUES('M008','璐璐') 
INSERT INTO student(MID,MName)VALUES('M009','珊珊') 
INSERT INTO student(MID,MName)VALUES('M010','香奈儿')

INSERT INTO Score(FID,MID,Score)VALUES('F001','M001',78) 
INSERT INTO Score(FID,MID,Score)VALUES('F002','M001',67) 
INSERT INTO Score(FID,MID,Score)VALUES('F003','M001',89) 
INSERT INTO Score(FID,MID,Score)VALUES('F004','M001',76) 
INSERT INTO Score(FID,MID,Score)VALUES('F001','M002',89) 
INSERT INTO Score(FID,MID,Score)VALUES('F002','M002',67) 
INSERT INTO Score(FID,MID,Score)VALUES('F003','M002',84) 
INSERT INTO Score(FID,MID,Score)VALUES('F004','M002',96) 
INSERT INTO Score(FID,MID,Score)VALUES('F001','M003',70) 
INSERT INTO Score(FID,MID,Score)VALUES('F002','M003',87) 
INSERT INTO Score(FID,MID,Score)VALUES('F003','M003',92) 
INSERT INTO Score(FID,MID,Score)VALUES('F004','M003',56) 
INSERT INTO Score(FID,MID,Score)VALUES('F001','M004',80) 
INSERT INTO Score(FID,MID,Score)VALUES('F002','M004',78) 
INSERT INTO Score(FID,MID,Score)VALUES('F003','M004',97) 
INSERT INTO Score(FID,MID,Score)VALUES('F004','M004',66) 
INSERT INTO Score(FID,MID,Score)VALUES('F001','M006',88) 
INSERT INTO Score(FID,MID,Score)VALUES('F002','M006',55)
INSERT INTO Score(FID,MID,Score)VALUES('F003','M006',86) 
INSERT INTO Score(FID,MID,Score)VALUES('F004','M006',79) 
INSERT INTO Score(FID,MID,Score)VALUES('F002','M007',77) 
INSERT INTO Score(FID,MID,Score)VALUES('F003','M008',65) 
INSERT INTO Score(FID,MID,Score)VALUES('F004','M007',48) 
INSERT INTO Score(FID,MID,Score)VALUES('F004','M009',75) 
INSERT INTO Score(FID,MID,Score)VALUES('F002','M009',88)   
select * from score
select mname,语文=
             max(case
               when course.fname='语文' then score.score
             end)
            ,数学=
             max(case
               when course.fname='数学' then score
             end)
            ,英语=max(case
               when course.fname='英语' then (score)
             end)
            ,历史=max(case
               when course.fname='历史' then (score)
             end)
from student,score,course 
where student.mid=score.mid and score.fid=course.fid
group by mname

select   姓名=mname,课程=fname,成绩=score  from student,course,score where score<70 and student.mid=score.mid and score.fid=course.fid
select 姓名=(select mname from student where mid=score.mid ),
       课程=(select fname from course where fid=score.fid),
       成绩=score
from score where score<70
--select * from score where score<70

select 姓名=(select mname from student where mid=score.mid),平均分=avg(score)  from score group by mid order by 平均分 desc


select distinct mid from score 
select mid from student
View Code

 

转载于:https://www.cnblogs.com/tcheng/p/6076342.html

### 关于 SQL 数据库作业代码示例 #### 创建数据库结构 为了创建一个医院信息管理系统的数据库,首先需要定义各个表及其关系。以下是创建患者管理和医生排班两个基本模块所需的SQL语句。 ```sql CREATE DATABASE HospitalManagementSystem; GO USE HospitalManagementSystem; -- 创建患者表 CREATE TABLE Patients ( PatientID INT PRIMARY KEY IDENTITY(1,1), FirstName NVARCHAR(50) NOT NULL, LastName NVARCHAR(50) NOT NULL, DateOfBirth DATE NOT NULL, Gender CHAR(1), -- M or F PhoneNumber VARCHAR(20) ); GO -- 创建医生表 CREATE TABLE Doctors ( DoctorID INT PRIMARY KEY IDENTITY(1,1), Name NVARCHAR(100) NOT NULL, Specialty NVARCHAR(100), OfficePhone VARCHAR(20) ); GO -- 创建预约表 CREATE TABLE Appointments ( AppointmentID INT PRIMARY KEY IDENTITY(1,1), PatientID INT FOREIGN KEY REFERENCES Patients(PatientID), DoctorID INT FOREIGN KEY REFERENCES Doctors(DoctorID), ScheduledTime DATETIME NOT NULL, Status NVARCHAR(50) DEFAULT 'Scheduled' ); GO ``` 这些命令用于建立基础架构并设置必要的约束条件来维护数据完整性[^1]。 #### 插入测试数据 为了让新创建的数据更有意义,在这里提供一些简单的插入操作作为例子: ```sql INSERT INTO Patients (FirstName, LastName, DateOfBirth, Gender, PhoneNumber) VALUES ('张', '三', '1987-04-23', 'M', '+86 13812345678'); INSERT INTO Doctors (Name, Specialty, OfficePhone) VALUES ('李华', '内科', '+86 13987654321'); INSERT INTO Appointments (PatientID, DoctorID, ScheduledTime) VALUES ((SELECT TOP 1 PatientID FROM Patients ORDER BY PatientID DESC), (SELECT TOP 1 DoctorID FROM Doctors ORDER BY DoctorID DESC), GETDATE()); ``` 这段脚本向之前定义好的表格里加入了几个虚拟条目以便后续查询和展示功能。 #### 查询与统计 最后介绍几种常见的查询方式以及统计数据的方法: ```sql -- 获取所有患者的列表 SELECT * FROM Patients; -- 查找特定日期内安排的所有预约 SELECT p.FirstName + ' ' + p.LastName AS PatientName, d.Name AS DoctorName, a.ScheduledTime FROM Appointments a JOIN Patients p ON a.PatientID = p.PatientID JOIN Doctors d ON a.DoctorID = d.DoctorID WHERE CONVERT(DATE, a.ScheduledTime) BETWEEN '2023-01-01' AND '2023-01-31'; -- 统计每位医生当天有多少未完成的预约 SELECT d.Name, COUNT(*) as PendingAppointments FROM Doctors d LEFT JOIN Appointments a ON d.DoctorID = a.DoctorID AND CAST(a.ScheduledTime AS DATE) = CAST(GETDATE() AS DATE) AND a.Status != 'Completed' GROUP BY d.Name; ``` 上述查询可以帮助管理员更好地理解和利用存储在系统中的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值