查询成绩表t_sc中有成绩的学生的学号和课程号
时间: 2023-09-06 14:01:40 浏览: 321
要查询成绩表t_sc中有成绩的学生的学号和课程号,可以使用SELECT语句来实现。具体的SQL查询语句如下:
SELECT 学号, 课程号
FROM t_sc
WHERE 成绩 IS NOT NULL;
该查询语句的意思是从t_sc表中选择学号和课程号,但只选择那些成绩不为空的记录。IS NOT NULL是用来判断成绩是否为空,如果不为空则表示该学生有成绩。
以上是使用SQL语句来查询成绩表中有成绩的学生的学号和课程号的方法。运行该查询语句后,会返回满足条件的学生学号和课程号,供进一步分析和使用。
相关问题
实战练习 1.创建一个不及格学生表bjg_sc1,包括学号,课程号,成绩字段,数据类型参照sc1表,利用触发器实现:如果向sc1表插入学生的成绩信息如果是不及格,自动将该学生的信息插入到bjg_sc1表中。 2.利用触发器实现:更新sc1表中某个学生的成绩数据,如果bjg_sc1中有该学生,并且该学生的成绩更新之后还没有及格,则自动更新bjg_sc1表中该学生的数据,如果更新以后该学生及格了,则在bjg_sc1表中删除学生。始终保持sc1表中不及格的数据与bjg_sc1表中的数据一致。
好的,我会根据您的要求回答问题。
针对您的第一个问题,以下是实现该需求的触发器代码:
```sql
CREATE TRIGGER trig_insert_bjg_sc1
AFTER INSERT ON sc1
FOR EACH ROW
BEGIN
IF NEW.grade < 60 THEN
INSERT INTO bjg_sc1 VALUES (NEW.sid, NEW.cid, NEW.grade);
END IF;
END;
```
该触发器在每次向sc1表插入数据时触发,判断插入的数据是否不及格,如果不及格则将该学生的信息插入到bjg_sc1表中。
针对您的第二个问题,以下是实现该需求的触发器代码:
```sql
CREATE TRIGGER trig_update_sc1
AFTER UPDATE ON sc1
FOR EACH ROW
BEGIN
DECLARE cnt INT;
SELECT COUNT(*) INTO cnt FROM bjg_sc1 WHERE sid = NEW.sid;
IF cnt > 0 AND NEW.grade < 60 THEN
UPDATE bjg_sc1 SET grade = NEW.grade WHERE sid = NEW.sid;
ELSEIF cnt > 0 AND NEW.grade >= 60 THEN
DELETE FROM bjg_sc1 WHERE sid = NEW.sid;
ELSEIF cnt = 0 AND NEW.grade < 60 THEN
INSERT INTO bjg_sc1 VALUES (NEW.sid, NEW.cid, NEW.grade);
END IF;
END;
```
该触发器在每次更新sc1表中的数据时触发,首先判断该学生是否已经在bjg_sc1表中,如果是,则更新该学生的成绩;如果更新后该学生及格了,则删除该学生在bjg_sc1表中的记录;如果该学生原本不及格,但是更新后及格了,则将该学生的信息插入到bjg_sc1表中。通过该触发器,可以保证sc1表和bjg_sc1表中的不及格学生信息始终保持一致。
现有一个学生表students(包含列学生号sid, 学生姓名sname等等),一个学术成绩表sc_score(包含学生号sid,课程号cid,成绩score),一个课程表(包含课程号cid,课程名称cname等等)。采用表的连接查询出学生的成绩(包含学号、姓名、课程名、成绩)。
可以使用以下 SQL 语句进行连接查询:
```
SELECT students.sid, students.sname, course.cname, sc_score.score
FROM students
INNER JOIN sc_score ON students.sid = sc_score.sid
INNER JOIN course ON sc_score.cid = course.cid;
```
这个查询使用了 INNER JOIN 连接了三个表。首先连接了学生表和学术成绩表,连接条件是学生号。然后再连接了学术成绩表和课程表,连接条件是课程号。最终查询结果包含学生号、学生姓名、课程名和成绩。
阅读全文