第5次作业-SQL语句的基本使用5-多值子查询
这个作业属于哪个课程 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 姓名 = '刘东阳');
+--------+------------+
| 姓名   | 出生日期   |
+--------+------------+
| 张青平 | 2000-10-01 |
| 刘东阳 | 1998-12-09 |
| 钱忠理 | 1994-09-23 |
| 孙海洋 | 1995-04-03 |
| 郭小斌 | 1997-11-10 |
+--------+------------+
5 rows in set (0.15 sec)

2.使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。

SELECT 学号,姓名,性别 FROM student_info  
    WHERE 学号 IN(SELECT 学号 FROM grade  
    WHERE 课程编号 IN('0002','0005'));
+------+--------+------+
| 学号 | 姓名   | 性别 |
+------+--------+------+
| 0001 | 张青平 | 男   |
| 0002 | 刘东阳 | 男   |
| 0003 | 马晓夏 | 女   |
+------+--------+------+
3 rows in set (0.20 sec)

3.使用ANY子查询查找学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。

SELECT 课程编号,分数 FROM grade   
    WHERE 学号 = '0001' AND 分数 >ANY(SELECT 分数 FROM grade  
    WHERE 学号 = '0002');
+----------+-------+
| 课程编号 | 分数  |
+----------+-------+
| 0001     | 80.00 |
| 0002     | 91.00 |
| 0003     | 88.00 |
| 0004     | 85.00 |
| 0005     | 77.00 |
+----------+-------+
5 rows in set (0.24 sec)

4.使用ALL子查询查找学号为0001的学生的分数比学号为0002的学生的最高成绩还要高的课程编号和分数。

SELECT 课程编号,分数 FROM grade  
    where 学号 = '0001' AND 分数 >ALL(SELECT 分数 FROM grade  
    where 学号 = '0002');
+----------+-------+
| 课程编号 | 分数  |
+----------+-------+
| 0002     | 91.00 |
| 0003     | 88.00 |
| 0004     | 85.00 |
+----------+-------+
3 rows in set (0.24 sec)

5.使用UNION运算符针student_info表中姓“刘”的学生的学号、姓名与姓“张”的学生的学号、姓名返回在一个表中。

 SELECT 学号,姓名 FROM student_info WHERE 姓名 LIKE '刘%'  
UNION  
SELECT 学号,姓名 FROM student_info WHERE 姓名 LIKE '张%';  
  
+------+--------+
| 学号 | 姓名   |
+------+--------+
| 0002 | 刘东阳 |
| 0001 | 张青平 |
| 0008 | 张玲珑 |
+------+--------+
3 rows in set (0.22 sec)

6.思考:delete 、drop、truncate区别,并总结。

(1)语法不同:truncate和delete是SQL语句,drop是DDL(数据定义语言)语句。
(2)执行速度不同:truncate比delete和drop快,因为它直接删除整个表而不是一行一行地删除。
(3)回滚方式不同:truncate和drop是不可回滚的操作,一旦执行完成,就无法恢复。而delete可以在事务中回滚。
(4)可以删除的范围不同:truncate和delete只能删除表中的数据,而drop可以删除整个表。
(5)是否保留表结构不同:truncate和delete保留表结构,而drop删除整个表,包括表结构。
(6)是否激活触发器不同:delete会激活触发器,而truncate和drop不会激活触发器。
     综上所述,如果需要删除整个表并重新创建,则使用drop语句;如果需要删除表中的数据,但保留表结构,则使用truncate语句;
如果需要删除表中的数据,并激活触发器,则使用delete语句。在使用这些语句时,需要谨慎考虑其影响,以避免不必要的损失。

7.整理课上关于多值子查询的例子,以笔记形式、或者视频讲授形式呈现。尽可能通俗易懂,不限于形式。

链接:https://pan.baidu.com/s/13nEecBHxJEHEPOPYUlm-lA
提取码:s84c

posted on 2023-10-19 17:38  史迪仔ww  阅读(25)  评论(0编辑  收藏  举报