重点知识二

目录

1.左右连接、内连接、全连接的区别

2.什么是分区?

3.什么是临时表

4.什么是拉链表?

5.kettle组件有哪些

6.什么是脏数据?

7.什么是分析函数、开窗函数?

8.什么是视图?视图有什么作用?如何更改试图?

9. CHAR类型和VARCHAR类型有何区别?

10介绍下crontab?

11.什么是触发器?触发器类型?

12.sql语句执行顺序


1.左右连接、内连接、全连接的区别

left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。

right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。

inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。

full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。

2.什么是分区?

就是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。

什么时候使用分区表?
1、表的大小超过2GB。

2、表中包含历史数据,新的数据被增加都新的分区中。

表分区有以下优点:

1.改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。

2.增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;

3.维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;

4.均衡I/O:可 以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。

缺点:已经存在的表没有方法可以直接转化为分区表。

分区表的分类?

分区表:范围分区(range),列表分区(list),散列分区(hash),复合分区,交换分区

范围分区

将数据基于范围映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期。

--创建:

create table 表名

(列名 数据类型

...)

partition by range (字段)

(

partition 分区名1 values less than (值1或日期1),

partition 分区名2 values less than (值2或日期2),

partition 分区名3 values less than (值3或日期3),...

partition 分区名4 values less than (maxvalue)

);

列表分区

该分区的特点是某列的值只有几个,基于这样的特点我们可以采用列表分区。

--创建:

create table 表名

(列名 数据类型

...)

partition by list (字段)

(

partition 分区名1 values (值),

partition 分区名2 values (值),

partition 分区名3 values (值),...

);

散列分区hash:

在列值上使用散列算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散列分区。

--创建:

create table 表名

(列名 数据类型

...)

partition by hash (字段)

(

partition 分区名1,

partition 分区名2,

partition 分区名3,...

);

3.什么是临时表

临时表就是用来暂时保存临时数据(亦或叫中间数据)的一个数据库对象。

ORACLE临时表是会话或事务级别的,只对当前会话或事务可见。每个会话只能查看和修改自己的数据。

在oracle中,临时表分为会话级别(session)和事务级别(transaction)两种。

会话级的临时表在整个会话期间都存在,直到会话结束;

事务级别的临时表数据在transaction结束后消失,即commit/rollback或结束会话时,会清除临时表数据。

  1、事务级临时表on commit delete rows;当COMMIT的时候删除数据(默认情况)。

  2、会话级临时表on commit preserve rows;当COMMIT的时候保留数据,当会话结束删除数据。

4.什么是拉链表?

指的是记录数据在某一时间区间内的状态以及数据在某一时点上的变化的数据存储方式。

算法:

1.建立临时表VT_NEW用于存放转换、处理后的数据

2.建立临时表VT_INC用于存放比对出的增量数据

3.修改目标表,进行关链更新操作

4.修改目标表,进行开链插入操作

作用:

(1)节约存储空间(2)记录数据变化

缺点:

 断链难以恢复

5.kettle组件有哪些

输入、输出、转换、应用、脚本、连接、数据仓库、统计、检验、作业、映射等。

6.什么是脏数据?

脏数据是指源系统中的数据不在给定的范围内或对于实际业务毫无意义,或是数据格式非法,以及在源系统中存在不规范的编码和含糊的业务逻辑。

7.什么是分析函数、开窗函数?

开窗函数对行集组进行聚合计算可以为每组返回多个值聚合函数加over()就是开窗函数。

8.什么是视图?视图有什么作用?如何更改试图?

视图可以理解为数据库中一张虚拟的表。它是建立在已有表的基础上,创建视图所依据的表称为“基表”。通过一张或者多张基表进行关联查询后组成一个虚拟的逻辑表。

视图的作用?

(1)隐藏数据的逻辑复杂性并简化查询语句

(2) 可以提高数据访问的安全性,通过视图设定允许用户访问的列和数据行

3可以将复杂的查询保存为视图

视图上的DML语句有如下限制:

只能修改一个底层的基表

如果修改违反了基表的约束条件,则无法更新视图

如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图。

如果视图包含伪列或表达式,则将无法更新视图。

复杂视图中,可以更新键保留表的列,不可以更新非键保留表的列。

9. CHAR类型和VARCHAR类型有何区别?

char的长度是固定的,最长2000个字符,当输入的字符小于你定义的字符数目时,它会自动补空值,所以它占用空间较大但是效率高;varchar的长度是可变的,用它可以节省存储空间,但是效率没有char高。

10介绍下crontab?

crontab是用来定期执行程序的命令在固定的间隔时间执行指定的系统指令。

11.什么是触发器?触发器类型?

什么是触发器?

触发器是一种在事件发生时隐式地自动执行的PL/SQL块,不能接受参数不能被显式调用

触发器类型

1.DML触发器:在对表或视图执行DML语句时执行,其中包含语句级触发器(表级触发器),行级触发器,INSTEAD OF触发器(替换触发器)

2.模式(DDL)触发器:在模式中执行 DDL 语句时执行

3.数据库级触发器:在发生打开、关闭、登录和退出数据库等系统事件时执行。

12.sql语句执行顺序

1、最先执行from 表名

2、where语句是对条件加以限定

3、分组语句【group by…… having】

4、聚合函数

5、select语句

6、order by排序语句。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值