DBMS第五篇:中级SQL——join、views、transactions、integrity constraint

本文深入探讨了中级SQL查询,包括Join的各种类型,如Inner Join和Outer Join,以及视图的定义、用途和更新。此外,还介绍了事务处理的重要性,以及数据库的完整性约束,如Referential Integrity和断言,强调了它们在确保数据一致性方面的作用。

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

升级了。

来见见中级段位的SQL查询:

视图定义、事务、完整性约束、关于SQL数据定义的更多细节、授权
view definition, transactions, integrity constraints, more details regarding SQL data definition, and authorization.

(英文精编·6版·第四章)


1.Join Expressions

1.1Join….on 可以表达更丰富的语义

  • 查询语句简短
  • 和where语句结合,使得查询语句可读性好
Select * 
From student join takes on student.ID=takes.ID

与下面的查询相同

Select * 
From student ,takes 
Where student.ID=takes.ID

1.2Outer Joins

之前写的DMBS第三篇中提及这个外连接:
在这里插入图片描述


先来回顾一下natural join的执行结果特点:

  • 假设 r1 naturla join r2
    如果r1中有tuple不与r2匹配,那么这个tuple就会被drop
  • 自然连接又叫做内连接(Inner Join)

而外连接,就会保留不匹配的tuple(s)

  • 左外连接,保留左边表的nonmatched元组
  • 右外连接保留右边。
  • 全外连接,全保留。

SQL语句如下:

-- 左外连接
course left outer join prereq on 
course.course_id = prereq.course_id

-- 右外连接
course natural right outer join prereq

-- 全外连接
course full outer join prereq using (course_id)

小结:
1.join时,若不用前缀outer join时候,默认都是inner join
2.natural inner join is equivalent to natural join

2.Views

In our examples up to this point,
都是逻辑模型级别上操作

What & Why

  • 视图—— 隐藏信息
  • 视图提供了一种机制,可以向某些用户的视图隐藏某些数据
  • 视图是一种虚表,在数据库中并不实际存在
  • 数据库中只存在视图的定义,
    执行视图定义时才从基本表中获得数据。

在某些情况下,不希望所有用户都看到整个逻辑模型——安全考虑
创建一个个性化的关系集合——用户体验


View Definition

  • 使用 create view..as..< query expression >
    必须要使用视图名,和查询表达式
  • 视图关系在概念上包含查询结果中的元组,
    不是预先计算和存储的
  • 像一组查询表达式的别名,而不是一个实际的表
    访问视图关系,则它的元组都是即时计算查询结果创建的

Example

1.一个不显示薪水的讲师的视图

create view faculty as 
 select ID, name, dept_name 
 from instructor;

Faculty是一个虚拟关系
在这里插入图片描述
在这里插入图片描述


一个View的高级用法:

  • 在视图的基础上建立视图
CREATE VIEW physics_fall_2009 AS 
	SELECT course.course_id, sec_id, building, room_number 
 	FROM course, section 
	 WHERE course
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

adingable

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值