根据实验2在学生作业管理数据库Mydb中创建的学生表、课程表和学生作业表,进行以下操作。
-
使用查询语句完成以下任务(每一个查询都要给出SQL语句,并且列出查询结果)。
(1)查询与“张志国”同一班级的学生信息(使用连接查询和子查询方式)。
子查询
SELECT * FROM student WHERE name!='张志国' and class=(SELECT class FROM student WHERE name='张志国' )
连接查询SELECT R1.*FROM student AS R1, student AS R2WHERE R2.name='张志国' AND R1.class = R2.class;
(2)查询比“计算机应用基础”学时多的课程信息(使用连接查询和子查询方式)。子查询
SELECT * FROM course WHERE period_num>(SELECT period_num FROM course WHERE name='计算机应用基础' );
连接查询SELECT Course1.* FROM course AS Course1,course AS Course2 WHERE Course2.name = '计算机应用基础' AND Course1.period_num>Course2.period_num;
(3)查询选修课程号为K002的学生的学号、姓名(使用连接查询、普通子查询、使用exists关键字的相关子查询)。连接查询
SELECT student.id,student.name FROM sc INNER JOIN student ON student.id = sc.student_id INNER JOIN course ON sc.course_id= course.course_id WHERE sc.course_id='K002'
普通子查询select distinct student.id,student.name from sc,student where student.id in ( select student.id from sc where sc.course_id='K002' and sc.student_id=student.id)
相关子查询SELECT DISTINCT student.id,student.name FROM sc,student WHERE EXISTS(SELECT *FROM scWHERE sc.course_id ='K002' AND sc.student_id=student.id );
(4)查询没有选修K001和M001课程的学号、课程号和三次成绩(使用子查询)。SELECT DISTINCT student_id,course_id,work1_score,work2_score,work3_score FROM sc WHERE student_id NOT IN (SELECT student_id FROM sc WHERE course_id='K001' OR course_id='M001');
-
使用数据操纵完成以下任务(每一个任务都要给出SQL语句,并且列出查询结果)。
(1)在学生表中添加一条学生记录,其中,学号为0593,姓名为张乐,性别为男,专业班级为电子05。
INSERT INTO student VALUES (0593,'张乐','男','电子05','1991-01-01',null);
(2)将所有课程的学分数变为原来的两倍。UPDATE course SET score = 2*score;
(3)删除张乐的信息。DELETE FROM student WHERE name = '张乐';