数据库(三)

目录

一、关联查询

1.等值连接内连接

2.外连接

3.外键约束

4.设计表的原则

二、其他

1.视图

2.索引

3.数据库三范式

总结


一、关联查询

        同时查询多张表的方式称为关联查询。n张表进行关联查询至少需要n-1个连接条件

 select * from emp, dept;

        直接对两张表进行关联查询,会产生笛卡尔积,假设两张表的数据分别为m, n,则最后查询的数据量为m * n;

        笛卡尔积的产生导致查询结果的不正确性,数据大量冗余;为了避免笛卡尔积,所以需要添加where条件,使用等值连接或者内连接,得到表之间的数据交集

1.等值连接内连接

        等值连接和内连接都是关联查询的方式:推荐使用内连接

        等值连接:select * from emp, dept where emp.id == dept.id;

        内连接:select * from emp join dept on emp.id = dept.id;

2.外连接

        目的获取一张表的全部数据以及和另一张表的交集数据。外连接包括左外连接和右外连接,两者类似;

如左外连接:对于两张表A, B; A称为主表,B称为副表,语句格式:

        select * from A left join B on A.args = B.args

查询结果得到主表A中的所有数据;查询结果中B不包含的数据用NULL表示;右外连接相反。

3.外键约束

        什么是外键? 一张表中的字段是另一张表中的主键

语法格式:[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…] REFERENCES <主表名> 主键列1 [,主键列2,…]

实际开发中,很少使用外键,因为外键的引入,不方便数据的修改,删除操作

4.设计表的原则

        一对一:两张表A,B,A,B中的数据一一对应。选择一张表添加外键指向主表的主键

        一对多:多的表设置外键

        多对多:三张表,设置一张关系表,存储主表和副表的主键

二、其他

1.视图

        视图:可以理解为是一张虚拟的表,目的取代一段sql语句,对外屏蔽真正的表数据;取代一段sql语句,实现重用,提高效率,隐藏敏感信息。

        语法格式:create view 视图名 as (子查询)   -》 与表的创建修改类似

        视图分类:

  •   简单视图:创建视图的子查询不包括去重,分组查询和聚合函数;关联查询的视图可以称为简单视图,可以进行增删改查
  •   复杂视图:与简单视图相反,只能进行查询。

在插入过程中,如果插入一条数据在原表中显示但是在视图中不显示,称为数据污染

解决方法: 在创建视图的语句后面添加 with check option

1. 创建视图:

 2.插入数据

 这里的意思通过视图插入一条数据,但是没有添加deptno,而该视图仅仅select deptno = 20的元组。导致原表和视图数据不匹配,称为数据污染。

 

2.索引

什么是索引:索引是数据库中提高查询效率的技术,类似于字典的目录

为什么使用索引:如果不使用索引数据会零散的保存在每一个磁盘块中,要想找到数据需要挨个遍历每一个磁盘块,使用索引后,磁盘块会以树状结构保存,查询数据时能够大大降低磁盘块的访问量从而提高查询效率

索引是越多越好吗? 不是,索引会占存储空间,如果数据量小的话添加索引反而会降低查询效率。只针对常用的查询字段创建索引,否则就浪费存储空间

创建索引的格式:索引是给字段添加的

        create index 索引名 on 表名(字段名)

3.数据库三范式

        简单叙述,需要补充

1.第一范式:表中的字段不可再分

2.第二范式:表中数据(每一条元组)唯一,表中数据项完全依赖于主键;否则,将不具有完全依赖的列属性和部分依赖差分成新的表。

3.第三范式:简而言之,不存在非主属性依赖。即所有属性仅对主键完全依赖。


总结

对于关联查询,范式,索引进行简要总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值