有表SC(Sno,Cno,Grade),C(Cno,Cname,Cpno,Ccredit),S(Sno,Sname,Sage,Sdept)
时间: 2023-09-27 22:08:41 浏览: 57
这里给出的是三张表:
SC表包含了学生选课信息,包括学生编号(Sno)、课程编号(Cno)和成绩(Grade)。
C表包含了课程信息,包括课程编号(Cno)、课程名称(Cname)、先修课程编号(Cpno)和学分(Ccredit)。
S表包含了学生信息,包括学生编号(Sno)、姓名(Sname)、年龄(Sage)和所属学院(Sdept)。
这三张表都是关系型数据库中的表,可以通过SQL语句进行查询、插入、更新和删除等操作。例如,可以使用以下语句查询SC表中某个学生的选课情况:
```
SELECT C.Cname, SC.Grade
FROM C, SC
WHERE C.Cno = SC.Cno AND SC.Sno = '123';
```
这个语句会查询出学生编号为'123'的学生所选的所有课程的名称和成绩。其中,使用了表连接来将C表和SC表关联起来,并且使用了条件语句来筛选出特定的学生。
相关问题
用sql语句创建数据库Student(Sno,Sname, Ssex, Sage,Sdept) SC(Sno,Cno,Grade) C(Cno,Cname,Cpno,Ccredit)并且给我插入一点数据
好的,以下是创建数据库Student、SC、C的SQL语句:
```
CREATE DATABASE Student;
USE Student;
CREATE TABLE Student(
Sno VARCHAR(10) PRIMARY KEY,
Sname VARCHAR(20) NOT NULL,
Ssex CHAR(2) CHECK(Ssex='男' OR Ssex='女'),
Sage INT CHECK(Sage>=18 AND Sage<=35),
Sdept VARCHAR(20) NOT NULL
);
CREATE TABLE C(
Cno VARCHAR(10) PRIMARY KEY,
Cname VARCHAR(20) NOT NULL,
Cpno VARCHAR(10),
Ccredit FLOAT CHECK(Ccredit>=1 AND Ccredit<=5)
);
CREATE TABLE SC(
Sno VARCHAR(10),
Cno VARCHAR(10),
Grade FLOAT CHECK(Grade>=0 AND Grade<=100),
PRIMARY KEY(Sno, Cno),
FOREIGN KEY(Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES C(Cno)
);
```
插入数据:
```
INSERT INTO Student VALUES('01', '张三', '男', 20, '计算机科学与技术');
INSERT INTO Student VALUES('02', '李四', '男', 19, '软件工程');
INSERT INTO Student VALUES('03', '王五', '女', 21, '信息管理');
INSERT INTO C VALUES('01', '数据库', NULL, 3.0);
INSERT INTO C VALUES('02', '数据结构', NULL, 4.0);
INSERT INTO C VALUES('03', '操作系统', '01', 4.5);
INSERT INTO SC VALUES('01', '01', 90.0);
INSERT INTO SC VALUES('01', '02', 85.0);
INSERT INTO SC VALUES('02', '01', 70.0);
INSERT INTO SC VALUES('02', '02', 80.0);
INSERT INTO SC VALUES('03', '01', 95.0);
INSERT INTO SC VALUES('03', '02', 90.0);
INSERT INTO SC VALUES('03', '03', 85.0);
```
student表:Sno,sname,sage,ssex,sdept;course表:cno,cname,cpno,ccredit;SC表:sno,sno,grade查询至少有一门课与学号为"200215121 "的同学所学相同的同学
您可以使用如下SQL语句来查询至少有一门课与学号为"200215121 "的同学所学相同的学生:
```
SELECT DISTINCT s2.sno, s2.sname
FROM student s1, student s2, SC c1, SC c2
WHERE s1.sno = '200215121'
AND s1.sno = c1.sno
AND c1.cno = c2.cno
AND c2.sno = s2.sno
AND s1.sno <> s2.sno;
```
解释一下上述SQL语句:
1. 首先从student表中找到学号为“200215121”的学生,记为s1;
2. 然后从SC表中找到与s1学号相同的选课记录c1;
3. 接着从SC表中找到与c1所对应的课程相同的其他选课记录c2;
4. 然后从student表中找到与c2对应的学生,记为s2;
5. 最后输出s2的学号和姓名,注意要去重。
这样,就可以查询到至少有一门课与学号为"200215121 "的同学所学相同的学生了。