建mysql学生表 Student(SId,Sname,Ssex,Dno) 查询同时选修" 01“课程和” 02 "课程的情况
时间: 2024-01-21 20:20:01 浏览: 81
可以按照以下语句建立学生表:
```
CREATE TABLE Student (
SId INT PRIMARY KEY,
Sname VARCHAR(255),
Ssex VARCHAR(10),
Dno VARCHAR(20)
);
```
假设课程表为 Course,可以按照以下语句查询同时选修“01”课程和“02”课程的情况:
```
SELECT S.SId, S.Sname
FROM Student S
INNER JOIN SC SC1 ON S.SId = SC1.SId AND SC1.CId = '01'
INNER JOIN SC SC2 ON S.SId = SC2.SId AND SC2.CId = '02';
```
其中 SC 表是学生选课表,包含 SId 和 CId 两列。INNER JOIN 表示内连接,即只返回同时满足两个条件的记录。
相关问题
建学生表 Student(SId,Sname,Ssex,Dno) SId 学号(唯一),主键 Sname 学生姓名,非空 Ssex 性别为男或女,默认为“男” Dno 学生所在系(外键),查询同时选修" 01“课程和” 02 "课程的情况
可以使用以下 SQL 语句查询同时选修"01"课程和"02"课程的学生情况:
```sql
SELECT s.*
FROM Student s
INNER JOIN SC sc1 ON s.SId = sc1.SId AND sc1.CId = '01'
INNER JOIN SC sc2 ON s.SId = sc2.SId AND sc2.CId = '02';
```
其中,SC 表是选课表,包含了学生选修的课程信息。在查询中,我们需要将 Student 表和 SC 表连接起来,然后筛选出同时选修了"01"课程和"02"课程的学生记录。
INNER JOIN 子句用于连接两个表,ON 子句用于指定连接条件。通过在 ON 子句中同时指定学生ID和课程ID,我们可以筛选出符合条件的学生记录。最后,通过 SELECT 子句选择需要输出的学生信息。
教职工表Teacher(Tno, TName, age, sal, mgr, DNo),TNo为教职工编号,TName为教职工姓名,age年龄,sal为月薪,mgr为教职工的上一级领导的职工号,DNo为部门号; 课程表Course(Cno, CName, CCredits, CTno),Cno为课程编号,CName为课程名字,CCredits为课程学分, CTno为该课程上课老师的编号,其中外键CTno来自表Teacher的Tno键; 学生表Student(Sno, CLno, SName, SSex, SBir, Email),其中Sno为学生学号,CLno为系别编号,SName为学生姓名,SSex为学生性别,SBir为学生出生日期; 学生选课表SC(Sno, Cno, Score)。 (2)对jiaoxue数据库进行如下检索 1)查询课程号为001的成绩前五名的学生学号和成绩(假设成绩没有重复)。 2)查询每个系的学生人数以及全部学生总人数(提示:with rollup); 3)查询每个学生的学号、姓名和选课的课程号,每个学生只显示一行数据,如果该学生选了多门课,则所选的课程号放在同一行里,用逗号隔开(提示:group_concat()); 4)查询课程名以英文字母开头的课程信息(提示:正则表达式查询); 5)查询课程名纯英文字母的课程信息(提示:正则表达式查询)。
1)查询课程号为001的成绩前五名的学生学号和成绩(假设成绩没有重复)。
```
SELECT Sno, Score
FROM SC
WHERE Cno = '001'
ORDER BY Score DESC
LIMIT 5;
```
2)查询每个系的学生人数以及全部学生总人数(提示:with rollup)。
```
SELECT CLno, COUNT(*) AS '学生人数'
FROM Student
GROUP BY CLno WITH ROLLUP;
```
3)查询每个学生的学号、姓名和选课的课程号,每个学生只显示一行数据,如果该学生选了多门课,则所选的课程号放在同一行里,用逗号隔开(提示:group_concat())。
```
SELECT Sno, SName, GROUP_CONCAT(Cno SEPARATOR ',') AS '选课课程号'
FROM SC
JOIN Student ON SC.Sno = Student.Sno
GROUP BY SC.Sno;
```
4)查询课程名以英文字母开头的课程信息(提示:正则表达式查询)。
```
SELECT *
FROM Course
WHERE CName REGEXP '^[a-zA-Z]';
```
5)查询课程名纯英文字母的课程信息(提示:正则表达式查询)。
```
SELECT *
FROM Course
WHERE CName REGEXP '^[a-zA-Z]+$';
```
阅读全文