1.学生表 create table student ( sid varchar(16),---学号 sname varchar(32),--学生姓名 sage int,---学生年龄 ssex varchar(16)---学生性别 ) 2.课程表 create table course ( cid varchar(16),--课程编号 cname varchar(32),--课程名称 tid varchar(16)---教师编号 ) 3.成绩表 create table course ( sid varchar(16),--学号 cid varchar(32),--课程编号 score int---成绩 ) 4.教师表 create table teacher ( tid varchar(16),--教师编号 tname varchar(32)--教师名字) 查询成绩大于85分的学生姓名
时间: 2023-03-30 09:01:21 浏览: 181
可以使用以下 SQL 语句查询成绩大于85分的学生姓名:
SELECT sname FROM student, score WHERE student.sid = score.sid AND score.score > 85;
相关问题
[简答题] 对于上题的教务管理数据库: --1.学生表 Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CID,Cname,TID) --CID --课程编号,Cname 课程名称,TID 教师编号 --3.教师表 Teacher(TID,Tname) --TID 教师编号,Tname 教师姓名 --4.成绩表 SC(SID,CID,score) --SID 学生编号
,CID 课程编号,score 成绩
以上教务管理数据库中的四个表可以通过以下 SQL 语句进行创建:
```sql
CREATE TABLE Student (
SID INT PRIMARY KEY,
Sname VARCHAR(20),
Sage DATE,
Ssex VARCHAR(2)
);
CREATE TABLE Course (
CID INT PRIMARY KEY,
Cname VARCHAR(20),
TID INT,
FOREIGN KEY (TID) REFERENCES Teacher(TID)
);
CREATE TABLE Teacher (
TID INT PRIMARY KEY,
Tname VARCHAR(20)
);
CREATE TABLE SC (
SID INT,
CID INT,
score INT,
PRIMARY KEY (SID, CID),
FOREIGN KEY (SID) REFERENCES Student(SID),
FOREIGN KEY (CID) REFERENCES Course(CID)
);
```
其中,Student 表的主键为 SID,Course 表的主键为 CID,Teacher 表的主键为 TID,SC 表的主键为 (SID, CID)。Course 表中的 TID 列为外键,引用自 Teacher 表的 TID 列。SC 表中的 SID 列和 CID 列都为外键,分别引用自 Student 表的 SID 列和 Course 表的 CID 列。这样设计可以保证数据的完整性和一致性。
create table student( sno varchar(50) primary key, --学号 sname varchar(50), sage int check(sage between 12 and 40), ssex varchar(50), sdept varchar(50) --系名 ) create table course( cno varchar(50) primary key, --课号 cname varchar(50), credit int check(credit between 1 and 6), ctime int --学时 ) create table sc( sno varchar(50), cno varchar(50), grade decimal(5,2) check(grade between 0 and 100) --成绩 ) 根据上面基本表的信息完成下列查询。 1 查询选修了数据库原理的学生的人数和平均成绩。 2 查询选修3门课 以上的学生姓名。 3列出人数超过1000人的系名。 4 查询所有课程都及格的学生姓名。用sql语句完成查询
1. 查询选修了数据库原理的学生的人数和平均成绩。
```
SELECT COUNT(DISTINCT sno) AS '选修数据库原理的学生人数', AVG(grade) AS '平均成绩'
FROM sc
WHERE cno = '001';
```
2. 查询选修3门课以上的学生姓名。
```
SELECT s.sname AS '学生姓名'
FROM student s
INNER JOIN (
SELECT sno, COUNT(*) AS '选修课程数'
FROM sc
GROUP BY sno
HAVING COUNT(*) >= 3
) t ON s.sno = t.sno;
```
3. 列出人数超过1000人的系名。
```
SELECT sdept AS '系名', COUNT(*) AS '学生人数'
FROM student
GROUP BY sdept
HAVING COUNT(*) > 1000;
```
4. 查询所有课程都及格的学生姓名。
```
SELECT s.sname AS '学生姓名'
FROM student s
WHERE NOT EXISTS (
SELECT cno
FROM course
WHERE NOT EXISTS (
SELECT *
FROM sc
WHERE sc.cno = course.cno AND sc.sno = s.sno AND sc.grade >= 60
)
);
```
阅读全文