Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名。
union与union all的区别(摘):
①对重复结果的处理:union会去掉重复记录,union all不会;
②对排序的处理:union会排序,union all只是简单地将两个结果集合并;
③效率方面的区别:因为union 会做去重和排序处理,因此效率比union all慢很多;
union 内部的每个 select 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 select 语句中的列的顺序必须相同。
除法运算
- 前表求象集
- 后表求投影
- 若投影的集合都包含在某个象集里面,
- 得出最后结果
参考示例:
mysql主(称master)从(称slave)复制的原理:
(1).master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)
(2).slave将master的binary log events拷贝到它的中继日志(relay log)
(3).slave重做中继日志中的事件,将改变反映它自己的数据(数据重演)
—
自然连接
- 找出同名属性
- 进行等值连接(一种特殊的笛卡尔积)
- 同名属性合并
事务日志用以保存数据库数据的变动,包括增删改等操作。
inner join时只会对非NULL的记录做join,并且2边都有的才会匹配。
实体完整性规则:这条规则要求关系中元组在组成主键的属性上不能有空值.如果出现空值,那么主键值就起不了唯一标识元组的作用.
将实体-联系模型转换为关系模型时,一个m:n的联系可以转换为一个独立的关系模式,与该联系相连的各实体的码及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
数据库的特点是数据共享、数据独立、减少数据冗余、避免数据不一致和加强数据保护
数据的查询优化策略:
避免全表扫描,采用分区的形式,找到指定区域来避免全表查询。
建立索引,是数据信息进行排序的数据结构,目的是提高查询效率。
并行查询是从操作系统和CPU上给予多线程多核的操作,也属于提高插叙效率的一种。
查询数据库优化的几种方案(摘)
查询优化的几个方案:
-
对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
-
应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。
-
应尽量避免在 where 子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE。
-
应尽量避免在 where 子句中使用 or 来连接条件, 否则将导致引擎放弃使用索引而进行全表扫描, 可以 使用UNION合并查询: select id from t where num=10 union all select id from t where num=20
-
**in 和 not in 也要慎用,**否则会导致全表扫描,对于连续的数值,能用 between 就不要用 in 了:Select id from t where num between 1 and 3
SQL 语言具有两种使用方式:
- 一种是在终端交互方式下使用,称为交互式SQL;
- 另一种是嵌入在高级语言的程序中使用,称为嵌入式SQL。
候选码定义:若关系中的某一属性组的值能唯一标识一个元组,而其子集不能,则成为该属性组为候选码。 主码定义:若一个关系有多个候选码,则选定其中一个为主码。 主属性定义:候选码的诸属性成为主属性。 非主属性定义:不包含在任何候选码中的属性称为非主属性。
SQL合法标识符 第一个字必须是 字母 、下划线 、@和#开头