连结操作(Join operations):取两个关系,将结果返回另一个关系
利用笛卡尔乘积,将两个元组匹配
通常在 from 後做子查询表达式
连接条件(Join condition):定义两个关系中哪个元组匹配,连接结果存在那些属性
course inner join prereqon
course.course_id= prereq.course_id
course left outer join prereq on
course.course_id= prereq.course_id
限定资料库用户可浏览的虚拟关系
视图定义(View Definition)
定义一张视图(View)
create view v as < query expression >
query expression为SQL表达式
v为视图名称
范例
create view faculty as
select ID, name, dept_name
from instructor
select name
from faculty
where dept_name= ‘Biology’
create view departments_total_salary(dept_name, total_salary) as
select dept_name, sum (salary)
from instructor
group by dept_name;
利用视图定义其他视图
repeat
Find any view relation vi in e1
Replace the view relation vi by the expression defining vi
until no more view relations are present in e1
视图的更新
insert into faculty values (’30765’, ’Green’, ’Music’)
完整性约束
确保数据库资料的一致性,不会因为缺是数据导致损害
1.客户必须有非空的电话号码
2.银行薪资必须至少4美元
单一关系的限制
name varchar(20) not null
create table section (course_idvarchar (8),sec_idvarchar (8),
semester varchar (6),
year numeric (4,0),
building varchar (15),
room_number varchar (7),
time slot id varchar (4),
primary key (course_id, sec_id, semester, year),
check(semester in (’Fall’, ’Winter’, ’Spring’, ’Summer’));
参照完整性
关联的两个表中,被关联的属性会互相影响,不可单独删除或增加
A 为一组属性。R 和 S 两个包含属性 A 的关系,其中 A 是 S 的主要键。如果对於所出现的任何值,这些值也会出现在 S 中的所有值也会出现。
create table course (
course_idchar(5) primary key,title varchar(20),
dept_name varchar(20) references department)
check (time_slot_idin (select time_slot_idfrom time_slot))
date '2005-7-27'
time '09:00:30'
time '09:00:30.75'
timestamp '2005-7- 27 09:00:30.75'
nterval '1' day
create type Dollarsas numeric (12,2) final
grant<privilege list>
on <relation name or view name> to<user list>
<user list>:user-id
* 视图的授权并不代表基础关联的任何授权
select:允许读取关联的访问,或使用视图查询的能力
EX:予许U1~3的查询关联的授权
grant select on instructor to U1, U2, U3
revoke select on branch from U1, U2, U
grant select on takes to instructor;
•create role student•
grant instructor to Amit;
•create role dean;
•grant instructor to dean;
•grant dean to Satoshi;
create view geo_instructor as
(select *
from instructor
where dept_name= 'Geology');
grant select on department to Amit with grant option;
revoke select on department from Amit, Satoshi cascade;
revoke select on department from Amit, Satoshi restrict;
>>: Docker in docker .解决技术环境问题
Coroutine 的三大要素不知道大家还记得吗?CoroutineScope、Suspend fu...
「今天要正式开始补课了。」诗忆相当紧张,趁着午休时间,拿着课堂讲义在图书馆试图预习,可惜一个字也读不...
本篇跟着 程序开发(2) ,接续往下讨论 INPUT数组(RECORD或单一变数)资料输入 INP...
在我们学习统计学之前应该清楚理解何谓统计学,这样才能够学以致用,并有效利用excel等工具来帮助我们...
上一篇我们学会了新增资料,但是如果资料打错了想要改的话应该怎们办呢?那这时候我们就需要用到我们的UP...