SQL语句的基本使用4(多值子查询)

1.在student_info表中查找与“刘东阳”性别相同的所有学生的姓名、出生日期。

select 姓名,出生日期 from student_info  where 性别=(select 性别 from student_info where 姓名='刘东阳' );

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

select 学号,姓名,性别 from student_info where 学号 in(select 学号 from grade where 课程编号 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 分数>all(select 分数 from grade where 学号='0002') and 学号='0001';

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

select 学号,姓名 from student_info where  姓名 like'刘%'
union 
select 学号,姓名 from student_info where  姓名 like'张%';

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

1.delete
detele 可用于删除表的部分或所有数据,它的使用语法如下:
delete from table_name [where...] [order by...] [limit...]
1.1 delete 实现原理
在 InnoDB 引擎中,delete 操作并不是真的把数据删除掉了,而是给数据打上删除标记,标记为删除状态
1.2 关于自增列
在 InnoDB 引擎中,使用了 delete 删除所有的数据之后,并不会重置自增列为初始值

2.truncate
truncate 执行效果和 delete 类似,也是用来删除表中的所有行数据的,它的使用语法如下:
truncate [table] table_name
truncate 在使用上和 delete 最大的区别是,delete 可以使用条件表达式删除部分数据,而 truncate 不能加条件表达式,所以它只能删除所有的行数据

2.1 truncate 实现原理
truncate 看似只删除了行数据,但它却是 DDL 语句,delete 语句属于 DML,用来对数据进行操作的。truncate 本质上是新建了一个表结构,再把原先的表删除掉,所以它属于 DDL 语言,而非 DML 语言。
2.2 重置自增列
truncate 在 InnoDB 引擎中会重置自增列

3.drop
drop 和前两个命令只删除表的行数据不同,drop 会把整张表的行数据和表结构一起删除掉,它的语法如下:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [,tbl_name]

其中 TEMPORARY 是临时表的意思,一般情况下此命令都会被忽略。

三者的区别

  1. 数据恢复方面:delete 可以恢复删除的数据,而 truncate 和 drop 不能恢复删除的数据。
  2. 执行速度方面:drop > truncate > delete。
  3. 删除数据方面:drop 是删除整张表,包含行数据和字段、索引等数据,而 truncate 和 drop 只删除了行数据。
  4. 添加条件方面:delete 可以使用 where 表达式添加查询条件,而 truncate 和 drop 不能添加 where 查询条件。
  5. 重置自增列方面:在 InnoDB 引擎中,truncate 可以重置自增列,而 delete 不能重置自增列。

总结

delete、truncate 可用于删除表中的行数据,而 drop 是把整张表全部删除了,删除的数据包含所有行数据和字段、索引等数据,其中 delete 删除的数据可以被恢复,而 truncate 和 drop 是不可恢复的,但在执行效率上,后两种删除方式又有很大的优势。

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

https://www.123pan.com/s/qIcdjv-cw5jh.html
posted @ 2023-10-16 21:13  代码猎人1027  阅读(190)  评论(0)    收藏  举报