第七章 | SQL语言之复杂查询与视图

1. 

update students set Sname='杨红梅' where Sid = 6;

update 表名 set <字段名=值> WHERE <筛选条件>;


 2.

陈述A是正确的。在SQL中,当使用UNION操作符来合并两个或多个查询的结果时,被合并的每个查询(在这个例子中是SubQuery1和SubQuery2)必须拥有相同数量的列,且这些列的数据类型必须是可以隐式转换的。此外,这些列在查询中的顺序也必须是一致的

这是因为UNION操作的结果集是一个单一的表,其列的顺序和类型由第一个查询(在这个例子中是SubQuery1)定义。如果后续的查询(SubQuery2)中的列顺序或类型与第一个查询不匹配,数据库将无法正确地将它们合并成一个结果集,这会导致语法错误或不可预期的结果。

所以,为了确保UNION操作能够正确执行,你需要确保所有参与UNION的查询具有相同数量的列,且这些列在查询中的顺序和数据类型都是一致的


3.

先用where 限制条件,然后再用group by和having子句


4.

视图更新

不能更新

1.由几个表导出

2.聚集函数

3.group by

4.Having

5.distinct

6.union all

7.没有主键不能更新


5.

空值是不确定不知道的值,不知道它是否满足条件 


6. 

注意NOT IN 和 NOT EXISTS

直接翻译:这个人的名字没有在选了C01课程且分数不及格的里面 


7.

Having 子句不能放在where子句里面

 SELECT ...FROM WHERE...... GROUP BY .....HAVING


8.


关系代数

SQL语言:并运算UNION, 交运算INTERSECT, 差运算EXCEPT。

基本语法形式: 子查询{ Union [ALL] |Intersect [ALL]|Except [ALL] 子查询}

通常情况下自动删除重复元组:不带ALL。若要保留重复的元组,则要带 ALL。

假设子查询1的一个元组出现m次,子查询2的一个元组出现n次 ,则该元组在:

子查询1 Union ALL 子查询2,出现m + n次

子查询1 Intersect ALL 子查询2,出现min(m,n)次

子查询1 Except ALL 子查询2,出现max(0, m –n)次

并运算

#求学过002号课的同学或学过003号课的同学学号 
Select  student_id From  SC  Where  couse_id = ‘002’ 
UNION 
Select  student_id From  SC  Where couse_id = ‘003’;

#上述语句也可采用如下不用UNION的方式来进行 
Select  student_id From  SC  Where couse_id = ‘002’ OR  C# = ‘003’;

交运算

#求既学过002号课,又学过003号课的同学学号 
Select   student_id From  SC  Where  course_id = ‘002’ 
INTERSECT 
Select   student_id  SC  Where  course_id = ‘003’;

#上述语句也可采用如下不用INTERSECT的方式来进行 
Select   student_id From  SC  
Where  C# = ‘002’ and  
student_id  IN (Select   student_id From  SC  Where course_id = ‘003’);

交运算符Intersect并没有增强SQL的表达能力,没有Intersect,SQL也 可以用其他方式表达同样的查询需求。只是有了Intersect更容易表达一些, 但增加了SQL语言的不唯一性

差运算

#假定所有学生都有选课,求没学过002号课程的学生学号 
Select   DISTINCT  student_id From  SC 
EXCEPT
Select   student_id  SC Where  course_id = ‘002’

#前述语句也可不用EXCEPT的方式来进行 
Select   DISTINCT  student_id From  SC  SC1 
Where  not exists 
(Select  *  From SC Where course_id = ‘002’ and  course_id = SC1.student_id) ;

差运算符Except也没有增强SQL的表达能力,没有Except,SQL也可以用 其他方式表达同样的查询需求。只是有了Except更容易表达一些,但增加了 SQL语言的不唯一性


9.


10.

存在然后检索表的所有 

  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值