本文共 3119 字,大约阅读时间需要 10 分钟。
我们需要根据要求定义三张表:学生表S、课程表C以及选课表SC。每张表的字段信息如下:
字段及规格:
表结构定义:
CREATE TABLE S ( S# CHAR(10) PRIMARY KEY, Sname VARCHAR(8) NOT NULL, Sex CHAR(2), Age INT, sdept VARCHAR(30));
字段及规格:
表结构定义:
CREATE TABLE C ( C# CHAR(4) PRIMARY KEY, Cname VARCHAR(20) NOT NULL, Teacher VARCHAR(8) NOT NULL);
字段及规格:
表结构定义:
CREATE TABLE SC ( S# CHAR(10), C# CHAR(4), Grade INT, PRIMARY KEY (S#, C#), FOREIGN KEY (S#) REFERENCES S(S#), FOREIGN KEY (C#) REFERENCES C(C#));
以下是针对上述数据库的SELECT 查询示例:
SELECT C#, Cname FROM C WHERE Teacher = 'LIU';
SELECT S#, Sname FROM S WHERE Sex = '男' AND Age > 23;
SELECT DISTINCT Cname, Teacher FROM C WHERE C# IN ( SELECT C# FROM SC WHERE S# = 'S3');
SELECT Sname FROM S WHERE Sex = '女' AND S# IN ( SELECT DISTINCT S# FROM SC WHERE C# IN ( SELECT C# FROM C WHERE Teacher = 'LIU' ));
SELECT DISTINCT C# FROM C WHERE C# NOT IN ( SELECT DISTINCT C# FROM SC WHERE S# IN ( SELECT S# FROM S WHERE Sname = 'WANG' ));
SELECT DISTINCT S# FROM SC GROUP BY S# HAVING COUNT(C#) > 2;
SELECT C#, Cname FROM C WHERE NOT EXISTS ( SELECT * FROM S WHERE NOT EXISTS ( SELECT * FROM SC WHERE S# = S.S# AND C# = C.C# ));
SELECT DISTINCT S# FROM SC WHERE NOT EXISTS ( SELECT * FROM C WHERE Teacher = 'LIU' AND NOT EXISTS ( SELECT * FROM SC WHERE S# = S.S# AND C# = C.C# ));
SELECT * FROM S WHERE Sname LIKE '张%';
SELECT S#, AVG(Grade) FROM SC GROUP BY S#;
SELECT S#, Sname FROM S WHERE S# IN ( SELECT S# FROM SC GROUP BY S# HAVING AVG(Grade) >= 80);
SELECT S#, Sname FROM S WHERE S# IN ( SELECT TOP 1 S# FROM SC GROUP BY S# ORDER BY AVG(Grade) DESC);
CREATE VIEW V_LIU ( 学号,姓名,性别,课程号,课程名,成绩) AS SELECT S.S#, Sname, Sex, C#, Cname, GradeFROM S, SC, CWHERE S.S#=SC.S# AND SC.C#=C.C# AND Teacher = 'LIU';
CREATE VIEW V_MALE AS SELECT * FROM S WHERE Sex = '男';
CREATE VIEW V_LIU ( 学号,姓名,性别,课程号,课程名,成绩) AS SELECT S.S#, Sname, Sex, C#, Cname, GradeFROM S, SC, CWHERE S.S#=SC.S# AND SC.C#=C.C#;
CREATE VIEW V_AVG ( 学号,姓名,平均成绩) AS SELECT S.S#, Sname, AVG(Grade)FROM S, SCWHERE S.S#=SC.S# GROUP BY S.S#, Sname;
UPDATE S SET Age = Age + 1;
UPDATE SC SET Grade = 0 WHERE C# IN ( SELECT C# FROM C WHERE Teacher = 'LIU');
DELETE FROM SC WHERE S# IN ( SELECT S# FROM S WHERE Sex = '女');
DELETE FROM S;
INSERT INTO S VALUES('1006', '黎明', '男', 20); 转载地址:http://gjgtz.baihongyu.com/