STUDENT表有 sno sname ssex sage sdept,couse 有cno cname credit semester,sc有sno cno gradr,请使用SQL语句完成查询选修了生物信息学课程且成绩高于该门课程平均分数的学生的姓名。
时间: 2024-05-02 22:22:16 浏览: 169
SELECT s.sname
FROM student s, sc, couse c
WHERE s.sno = sc.sno
AND sc.cno = c.cno
AND c.cname = '生物信息学'
AND sc.grade > (
SELECT AVG(sc.grade)
FROM sc, couse
WHERE sc.cno = couse.cno
AND couse.cname = '生物信息学'
)
```
相关问题
① student1 表数据输入 Sno Sname Ssex Sage Sdept 3005 赵达 女 14 SX 3006 杨红 南 21 JSJ
可以使用 SQL 语句向 student1 表中插入数据:
```
INSERT INTO student1(Sno, Sname, Ssex, Sage, Sdept) VALUES
('3005', '赵达', '女', 14, 'SX'),
('3006', '杨红', '男', 21, 'JSJ');
```
执行完上述语句后,student1 表中就会有两条数据。
student(sno,sname,sage,ssex,sdept) course(cno,cname,credit,ctime) sc(sno,cno,grade) 1.建立学生表的insert触发器,若向学生表中插入一条记录,则自动向选课(sc)表中插入一行,令该生选一门选修人数最多的课。写sql语句
以下是向学生表中插入记录时自动向选课表中插入一行的 SQL 语句:
```
CREATE TRIGGER insert_sc AFTER INSERT ON student
FOR EACH ROW
BEGIN
INSERT INTO sc (sno, cno, grade)
SELECT NEW.sno, cno, NULL
FROM (
SELECT cno, COUNT(*) AS num
FROM sc
GROUP BY cno
ORDER BY num DESC
LIMIT 1
) AS t
WHERE cno NOT IN (
SELECT cno
FROM sc
WHERE sno = NEW.sno
);
UPDATE course
SET num = num + 1
WHERE cno = (
SELECT cno
FROM (
SELECT cno, COUNT(*) AS num
FROM sc
GROUP BY cno
ORDER BY num DESC
LIMIT 1
) AS t
);
END;
```
该触发器会在向学生表中插入记录时自动执行,向选课表中插入一行数据,使该学生选修人数最多的尚未选修的课程。同时,更新选修课程的选修人数。
阅读全文
相关推荐















