2021011212
针对stu数据库中的student、course和sc三个表实现以下查询:
1、插入一门新课程记录
课程号:8,课程名:C程序设计,学分:3。
INSERT INTO courselyu(cno,cname,ccredit)
VALUES ('8', 'C程序设计', 3)
2、所有学生都选8号课程,将选课记录插入到SC中。需要把8的东西删掉,才可以用
INSERT INTO sclyx(sno,cno)
SELECT sno,cno
FROM studentlyx,courselyu
WHERE cno='8'
3、将8号课程的学分改为4分。
UPDATE courselyu
SET courselyu.ccredit=4
WHERE courselyu.cno='8'
4、将所在系为‘cs’并且年龄小于20岁的学生的所在系改为‘ma’。
UPDATE studentlyx
SET sdept='MA'
WHERE sdept='CS 'AND sage<20
5、删掉所有年龄小于20岁并且所在系为‘is’的学生记录。
6、将邓军所选课程的成绩都提高10分。
UPDATE sclyx
SET grade=grade+10
WHERE sno in
(select sno
From studentlyx
Where sname='邓军')
7、删除‘C程序设计’课程的选课记录。
DELETE from sclyx
Where cno in
(select cno
From courselyu
Where courselyu.cname='C程序设计' )
8、将年龄最小的学生的所在系去掉。
UPDATE studentlyx
SET studentlyx.sdept=NULL
WHERE sage IN (
SELECT min_sage FROM (
SELECT MIN(sage) AS min_sage FROM studentlyx
) AS a
)
总结
You can't specify target table 'studentlyx' for update in FROM clause 错误
它的意思是说,不能在同一语句中,先select出同一表中的某些值,再update这个表,即不能依据某字段值做判断再来更新某字段的值。
引用
在做多表查询,或者查询的时候产生新的表的时候会出现这个错误:Every derived table must have its own alias(每一个派生出来的表都必须有一个自己的别名)。
引用