| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/uzz/cs3 |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/uzz/cs3/homework/13074 |
| 这个作业的目标 | SQL语句的基本使用5-多值子查询 |
1.在student_info表中查找与“刘东阳”性别相同的所有学生的姓名、出生日期
select 姓名,出生日期 from student_info where 性别=(select 性别 from student_info where 姓名='刘东阳' );

2.使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。
select student_info.学号,姓名,性别 from student_info,studentsdb.grade where student_info.学号=studentsdb.grade.学号 and 课程编号 in('0002','0005');

3.使用ANY子查询查找学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数
select 课程编号,分数 from grade where 分数>any(select 分数 from grade where 学号='0002') and 学号='0001';

4.使用ALL子查询查找学号为0001的学生的分数比学号为0002的学生的最高成绩还要高的课程编号和分数。
select 课程编号,分数 from grade where 学号='0001' and 分数>all(select 分数 from grade where 学号='0002');

5.使用UNION运算符针student_info表中姓“刘”的学生的学号、姓名与姓“张”的学生的学号、姓名返回在一个表中。
select 学号,姓名 from student_info where 姓名 like '刘%' union select 学号,姓名 from student_info where 姓名 like '张%';

6.思考:delete 、drop、truncate区别,并总结
1.区别:delete、drop和truncate都是用于删除数据的SQL语句,但它们之间有一些重要的区别。
删除范围:delete语句用于删除表中的数据,可以指定条件进行部分删除。而truncate语句用于清空整个表的数据,不进行条件判断。drop语句则会删除整个表及其结构。
速度:一般来说,drop语句最快,其次是truncate,最后是delete。这是因为drop直接删除整个表,而truncate通过释放表的存储空间来删除数据,delete则需要逐行删除数据。
存储空间:delete语句删除数据后,表及其索引所占用的存储空间不会减少。而truncate语句会释放表的存储空间,使表和索引恢复到初始大小。drop语句则会释放整个表的存储空间。
回滚与触发器:truncate和drop操作不能回滚,且不会触发触发器。而delete操作可以回滚,且会触发触发器。
2.总结:
delete、drop和truncate都是用于删除数据的SQL语句,但它们在删除范围、速度、存储空间和回滚与触发器方面存在区别。具体使用哪种语句,需要根据具体需求和情况来判断。