文档章节

数据库系统概念:连接表达式、视图

o
 osc_fmg49rzg
发布于 2019/03/20 09:45
字数 1112
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

public class DataBase {
    public static void main() {

    }
}

/*
    4.1 连接表达式

    4.1.1 连接条件

    on条件允许在参与连接的关系上设置通用的谓词。

        select *
        from student join takes on student.ID = takes.ID;

    引入on条件有两个优点:
        1.对外链接这类连接来说,on条件的表现与where条件是不同的
        2.如果在on子句中指定连接条件,在where指定其他条件,这样更易读
 */

/*
    4.1.2 外链接

    自然连接类似于我在MySql5.7从入门到精通中看到的内连接。额,很尴尬,这东西
    就是内连接,书中后文说了。

    外链接运算与我们已经学过的连接运算类似,但是通过在结果中创建包含空值元组的方式
    保留了哪些在连接中丢失的元组。有三中形式的外链接:
        左外链接:只保留出现在左外链接运算之前的关系中的元组
        右外连接:只保留出现在右外连接运算之后的关系中的元组
        全外链接:保留出现在另个关系中的元组

    左外链接运算过程:
        1.向前面那样计算出内连接的结果
        2.然后对于在内连接左侧关系中任意一个与右侧关系中任意元组都不撇撇的元组t,
        向结果集中加一个元组r,r的构造如下:
            1.元组r从左侧关系得到的属性被赋予t中的值
            2.r的其他属性被赋值为null

            select *
            from student natural left outer join takes;

        MySQl 5.7从入门到精通中的写法:
            select *
            from student outer join takes on xxx;

        我感觉吧,natural这个关键字就是用来取代on这个条件的,有了natural
        就是说,你随随便便找一个字段名差不多的作为连接条件吧。

    需求:
        找出所有一门课程也没有选修的学生

        select ID
        from student natural left outer join takes
        where course_id is null;
 */

/*
    4.1.3 连接类型和条件

    连接类型:
        内连接,左外链接,右外链接,全连接

    连接条件:
        自然连接、using条件连接、on条件连接

    连接类型可以与连接条件进行各种组合~~~
 */

/*
    4.2 视图

    4.2.1 视图定义

    视图定义语句:
        create view v as <query expression>;

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

    create view physic_full_2009 as
        select course, course_id, sec_id, building, room_number
        from course, section
        where course.course_id = section.course_id
            and course.dept_name = 'Physic'
            and section.semester = 'Fall'
            and section year = '2009';
    这个东西很像存储过程、with语句;
 */

/*
    4.2.2 SQL查询中使用视图

    一旦定义了一个视图,我们就可以用视图名指代该视图生成的虚关系。
        select course_id
        from physics_fall_2009
        where building = 'Watson';

    可以按照如下方式,显式指定属性名:
        create view department_total_salary(dept_name,total_salary) as
            select dept_name, sum(salary)
            from instructor
            group by dept_name;

    一个视图可以定义到另一个视图中~
 */

/*
    4.2.3 物化视图

    特定数据库系统允许存储视图关系,但是它们保证:如果用于定义视图的实际关系改变,
    视图也跟着修改。这样的视图被称为物化视图。

    4.2.4 视图更新

    作者建议,除了一些有限的情况下,一般不允许对视图关系进行修改。一般来说,如果定义
    视图的查询对下列条件都能满足,我们称SQL视图是可更新的:
        1.from子句中只有一个关系
        2.select子句中只包含了关系的属性名,不包括任何表达式、聚集函数、distinct声明
        3.任何没有出现在select子句中的属性可以取控制;即没有not null约束,也不构成主码的一部分
        4.查询中不包含group by 或 having子句

    问题:
        create view history_instructors as
        select *
        from instructor
        where dept_name = 'History'

        上述语句可以更新。可以通过上述视图,将一条记录插入到表中,由于插入的记录不满足上
        述视图的选择条件,最中插入的记录不会显示在视图history_instructors中。

    在这种情况下,可以在视图定义的末尾包含with check option子句的方式来定义视图
    这样,如果向视图插入一条不满足视图的where子句条件的元组,数据库将拒绝该插入操作
    类似的,由于不满足条件,update操作也不会被允许。
 */

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
数据库期末考试复习

知识内容: 1.数据库系统概述 2.关系数据库的系统模型与设计理论 3.数据库设计方法 4.结构化查询语言SQL 5.SqlServer数据库系统与SqlServer系统应用及管理 6.Transact-SQL语言结构及Transac...

osc_cyiu3qx7
2018/06/28
0
0
oracle初学者入门

Oracle数据库是相对于其他数据库来说比较难的一个。Oracle Database,又名Oracle RDBMS,简称Oracle。是甲骨文公司推出的一款关系数据库管理系统。Oracle数据库系统是目前世界上流行的关系数...

osc_8quu62cg
2019/12/04
6
0
Oracle数据库初学者入门教程

Oracle数据库是相对于其他数据库来说比较难的一个。Oracle Database,又名Oracle RDBMS,简称Oracle。是甲骨文公司推出的一款关系数据库管理系统。Oracle数据库系统是目前世界上流行的关系数...

osc_28hs2gg6
2019/05/06
4
0
数据库基础知识复习(转)

1. 数据视图与数据模型 数据抽象共有三个层次:物理层、逻辑层和视图层。在逻辑层使用的数据模型包括两类:一类是概念数据模型,主要用于数据库设计,它能被一般的用户理解,与人的思维表达方...

鸭子船长
06/05
0
0
java系列(1/4)基础阶段-MySQL(2/13)

##本单元目标一、为什么要学习数据库二、数据库的相关概念 DBMS、DB、SQL三、数据库存储数据的特点四、初始MySQLMySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ★MySQL服务的登...

osc_ap8rqrw7
2019/08/20
2
0

没有更多内容

加载失败,请刷新页面

加载更多

Eclipse_JavaEE_Tomcat_MySQL环境配置

安装java环境,配置系统变量(JAVA_HOME,绝对路径) 下载eclipse+Tomcat+mysql window——》preference——》server——》runtime——》tomcat环境 项目右键build path 配mysql jar ,libra...

愿有时光可回首
今天
24
0
MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式

本文基于 MySQL 8 在上一篇:MySQL原理 - InnoDB引擎 - 行记录存储 - Compact格式 中,我们介绍了什么是 InnoDB 行记录存储以及 Compact 行格式,在这一篇中,我们继续介绍其他三种行格式。 ...

zhxhash
今天
29
0
leetcode面试题 17.13(恢复空格)--Java语言实现

求: 哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboo...

拓拔北海
今天
19
0
B站跨年晚会究竟做对了什么?

燃财经(ID:rancaijing)原创 作者 | 赵磊 编辑 | 周昶帆 “补课”是《bilibili晚会 二零一九最美的夜》这个视频中,观众在前两分钟刷得最多的弹幕,寓意着观众是在元旦之后回来补看跨年晚会...

子乾建建_Jeff
01/07
63
0
关于Scrapy爬虫项目运行和调试的小技巧(上篇)

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 迟日江山丽,春风花草香。泥融飞燕子,沙暖睡鸳鸯。 扫除运行Scrapy爬虫程序...

yuhan336
04/02
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部