数据库StudentCourse 有表SC含Sno作学号,Cno作课程号,Grade作成绩。表Student含Sno作学号,Sname作姓名,Ssex作性别,Sbirthday作出生日期,Sdept作所在系,Memo作备注。表Course含Cno作课程号,Cname作姓名,PreCourse作先行课,PreCno作先行课程号,Credit作学分,Semester作开课学期。 查询有先行课的课程号,课程名,先行课
时间: 2023-09-15 15:21:30 浏览: 295
可以通过以下SQL语句查询有先行课的课程号,课程名和先行课程号:
```
SELECT
c.Cno AS '课程号',
c.Cname AS '课程名',
p.Cno AS '先行课程号'
FROM
Course c
JOIN Course p ON c.PreCno = p.Cno
WHERE
c.PreCourse = '是'
```
解释:
1. 使用JOIN操作将Course表与自身连接,连接条件为c.PreCno = p.Cno,即连接先行课程号和课程号相同的记录;
2. 在WHERE语句中过滤掉没有先行课的课程,即c.PreCourse = '是';
3. SELECT语句中选择需要查询的字段,分别是c.Cno、c.Cname和p.Cno,并使用AS关键字为每个字段指定别名。
相关问题
已知两张表 S(sno,sname,sage)sno为学号,sname为姓名,sage为年龄 SC(sno,cno,grade)sno为学号,cno为课程号,grade为sno这个学生选修了cno这门课获得的成绩 列出每门课(cno)的最高分的学生姓名(sname)
可以使用如下SQL语句来实现:
```
SELECT cno, MAX(grade), sname
FROM SC
INNER JOIN S ON SC.sno = S.sno
GROUP BY cno, sname;
```
这里使用了 INNER JOIN 来连接两张表,然后按照 cno 和 sname 进行分组,最后通过 MAX 函数来获取每门课的最高分。
创建XSXK(学生选课)数据库,为XSXK数据库创建如下关系表: Student (Sno, Sname, Ssex, Sage, Sdept,Scredit), 其中,Sno代表学号,Sname代表姓名,Ssex代表性别:Sage代表年龄,Sdept代表所在系,Scredit代表学生所修课程的总学分。 Course (Cno, Cname, Cpno, Ccredit),其中,Cno代表课程号,Cname代表课程名,Cpno代表先修课号,Ccredit代表学分。 SC (Sno, Cno, Grade) ,其中,Sno代表学号,Cno代表课程号,Grade代表成绩。
好的,以下是创建XSXK数据库的SQL语句:
```
CREATE DATABASE XSXK;
USE XSXK;
CREATE TABLE Student (
Sno CHAR(10) PRIMARY KEY,
Sname VARCHAR(20) NOT NULL,
Ssex CHAR(2) NOT NULL,
Sage INT NOT NULL,
Sdept VARCHAR(20) NOT NULL,
Scredit FLOAT NOT NULL
);
CREATE TABLE Course (
Cno CHAR(10) PRIMARY KEY,
Cname VARCHAR(20) NOT NULL,
Cpno CHAR(10),
Ccredit FLOAT NOT NULL,
FOREIGN KEY (Cpno) REFERENCES Course(Cno)
);
CREATE TABLE SC (
Sno CHAR(10),
Cno CHAR(10),
Grade FLOAT NOT NULL,
PRIMARY KEY (Sno, Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
```
以上SQL语句创建了三个关系表:Student、Course和SC。其中,Student表包含学生的基本信息,Course表包含课程的基本信息,SC表表示学生所选课程及成绩。这些表之间通过主键和外键建立了关联关系。
阅读全文