数据库的数据查询2

本文详细介绍了SQL中的嵌套查询,包括由内向外的多层查询处理,以及IN和EXISTS子查询的用法。同时,讲解了数据的插入、更新和删除操作,包括如何使用子查询来更精确地定位和操作数据。内容涵盖了基本的SQL语法和高级技巧,是数据库管理的重要参考资料。
摘要由CSDN通过智能技术生成

嵌套查询1

由内向外处理进行多层查询

SELECT Sname
FROM Student
WHERE Sno IN
         (SELECT Sno
          FROM SC
          WHERE Cno='2');

上层是外层查询或父查询,下层是内层查询或子查询。

子查询的SELECT语句中不能使用ORDER BY子句

  • 带有IN的子查询
  • 带有比较运算符的子查询

例1、找出每个学生超过自己选修课程平均成绩的课程号

SELECT Sno,Cno
FROM SC x
WHERE Grade>=(SELECT AVG(Grade))
              FROM Student
              WHERE Sname='刘晨');
  • 带有EXISTS的子查询

EXISTS代表存在量词,不返回任何数据,会产生逻辑真值和假值。

 

数据更新

  • 插入元组

INSERT

INTO <表名>[<属性列>,<属性2>]

VALUES(<常量1>,<常量2>);

INSERT
INTO Student(Sno,Sname,Ssex,Sdept)
VALUES('201215128','陈东','男');
  • 插入子查询结果

INSERT

INTO<表名>(<属性列1>,<属性列2>)

子查询;

INSERT
INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM Student
GROUP BY Sdept;

修改数据

UPDATE <表名>

SET<列名>=<表达式>,[<列名>=<表达式>]

[WHERE<条件>]

  • 修改某一个元组的数据
UPDATE Student
SET Sage=22
WHERE Sno='201215121'
  • 修改多个元组的数据
UPDATE Student
SET Sage=Sage+1
  • 带子查询的修改语句
UPDATE SC
SET Grade=0
WHERE Sno IN
      (SELECT Sno
       FROM Student
       WHERE Sdept='CS')

删除数据

DELETE

FROM <表名>

[WHERE <条件>]

带子查询的删除语句

DELETE
FROM SC
WHERE SNO IN
      (SELECT Sno
       FROM Student
       WHERE Sdept='CS')

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值