子查询,insert和select,update和delete

本文详细介绍了SQL中的子查询,包括嵌套子查询和相关子查询,并探讨了如何使用子查询与INSERT、UPDATE和DELETE语句结合,以实现数据的添加、更新和删除操作。重点讲解了在WHERE子句中使用子查询的技巧和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、子查询

  • 子查询在其他查询结果的基础上提供了一种有效的方式来表示where子句的条件
  • 子查询是可以嵌套在SELECT、INSERT、UPDATE、DELETE语句中
  • 子查询的SELECT查询总是使用圆括号括起来
  • 格式:
    select 列名 from 表名 where 列名 in(select 查询语句);
  • 子查询的注意事项
    1、where后面的条件要什么,我们的子查询就查什么
    例:条件要学号,子查询就查学号
    2、什么情况优先考虑子查询
    2.1题上给出的条件没有明确的提示结果
    例:查询计算机系学生选修了哪些课程?(问:计算机系学生有哪些?)
    2.2where后面要用到聚合函数当条件
    聚合函数不能直接写,就可以借助查询语句把聚合函数的结果给查出来就OK
    成绩大于平均成绩
    where grade>(select avg(grade) from sc)
    ===>where grade>78
select 列名 from 表名 where 列名 in(select 列名 from 表名 where 条件);

select 列名 from 表名 where 列名 in(select 列名 from 表名 where 列名 in(select 列名 from 表名 where 条件));

二、子查询分类

子查询分为两种

  • 嵌套子查询
  • 相关子查询

1、嵌套子查询

  • 指的是子查询中还包含其他的子查询
select(select(select(select)))

2、相关子查询(单值子查询)

  • 指的是子查询的结果有且只有一个值,然后将一列值与查询返回的值进行比较

三、其他

1、使用insert和select语句添加数据

  • 在INSERT语句中使用SELECT子句可以将一个或多个表或视图中的值添加到另一个表中。使用SELECT子句还可以同时插入多行
    (当insert语句和select语句做结合,就是把查询的结果插入到某一张表中)
  • 通过select语句生成的结果集,再结合insert语句,可以把结果集插入到指定的表中,这种方法用于插入的数据不确定(通常多于一条),并且都具有一些特性时
  • 格式insert into 表名 select查询语句;

2、使用update和select语句(子查询)结合

格式:

update 表名
set 列名
where 列名 in(select 语句);

3、删除语句

delete from 表名 where 列名 in(select查询语句);

例:删除计算机系学生的成绩

delete from sc where sno in(select sno from student where sdept='计算机系');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值