Oracle数据库基础知识汇总

1.一个实例对应一个数据库

2.模式

3.表空间(>>)提高管理效率

从用户的角度看,一个库中有若干模式(模式唯一对应同名用户),一个模式下有表、视图和存储过程等数据库对象。

从存储的角度看,一个库中有若干表空间,负责存储数据库中的各种对象。

注意: 一个模式下的表可以存储于不同的表空间中。

         存储于同一表空间中的表可以在不同的模式下。

对数据库访问使用模式概念,对数据存储管理使用表空间概念。

 

表空间

表空间:逻辑结构,由多个数据文件组成,

           从物理上讲,表是存在于数据文件里

           从逻辑上讲,表是存在于表空间

/**

(oracle数据库逻辑结构上包括表空间、段、区和块,物理上由数据文件组成,一个表空间包含一个或多个数据文件。)

表空间用于从逻辑上组织数据库的数据,通过表空间可以控制数据库占用的磁盘空间,同时dba可以将不同的数据类型部署到不同的位置,这样有利于提高I/O性能,同时利于备份和恢复等操作。

**/

创建表空间一般由特权用户或dba角色来执行,需要有权限

 

4.授权使用grant,收回权限使用 revoke (解锁账户--使用profile管理用户)

grant connect to xiaoming (with admin option )

revoke select on emp from xiaoming;
alter user tea  account unlock; 

概述:profile是口令限制,资源限制的命令集合,当建立数据库的,oracle会自动建立名称为defaultprofile。当建立用户没有指定profile选项,那么oracle就会将default分配给用户。

 

5.实施步骤:

   a.创建用户

    create user user1 identified by u123 default tablespace aa;(密码必须以字母开头)

   b.为用户分配connect权限

    grant connect  to user1;

   c.分配表空间使用权限   

    grant unlimited tablespace to user1;

 

===============================================================

修改密码:

如果给自己修改密码可以直接使用
password 用户名
如果给别人修改密码则需要具有dba的权限,或是拥有alter user的系统权限
SQL> alter user 用户名 identified by 新密码

sys用户是超级用户,该用户默认的密码是change_on_install

system用户是管理操作员,默认的密码是manager

syssystem这两个用户最大的区别是在于有没有create database的权限

================================================

*如何取消重复行DISTINCT

*使用列的别名 ...............as .....

*如何处理null,使用nvl函数来处理

*如何连接字符串(||

*如何使用like操作符
%:表示0到多个字符  _:表示任意单个字符

*数据分组 ——maxminavgsumcount

*如果要删除的用户,已经创建了表,那么就需要在删除的时候带一个参数cascade;

 

6.insert  update   delete/truncate    drop

 

7.函数:日期 ,数学,字符串函数,系统函数 decode

1)日期函数

     默认情况下日期格式是dd-mon月-yy 即12-7月-78
     sysdate: 该函数返回系统时间
     add_months(d,n)
     last_day(d):返回指定日期所在月份的最后一天
2)数学函数

数学函数的输入参数和返回值的数据类型都是数字类型的。数学函数包括cos,cosh,exp,ln, log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round,

常用的有:

round(n,[m])该函数用于执行四舍五入,如果省掉m,则四舍五入到整数,如果m是正数,则四舍五入到小数点的m位后。如果m是负数,则四舍五入到小数点的m位前。
trunc(n,[m]) 该函数用于截取数字。如果省掉m,就截去小数部分,如果m是正数就截取到小数点的m位后,如果m是负数,则截取到小数点的前m位。
mod(m,n)
 floor(n) 返回小于或是等于n的最大整数
 ceil(n)   返回大于或是等于n的最小整数

(3)系统函数

sys_context
1)terminal:当前会话客户所对应的终端的标示符
2)lanuage: 语言
3)db_name: 当前数据库名称
4)nls_date_format: 当前会话客户所对应的日期格式
5)session_user: 当前会话客户所对应的数据库用户名
6)current_schema: 当前会话客户所对应的默认方案名
7)host: 返回数据库所在主机的名称
通过该函数,可以查询一些重要信息,比如你正在使用哪个数据库?
select sys_context('USERENV','db_name') from dual;
注意:USERENV是固定的,不能改的,db_name可以换成其它,比如select sys_context('USERENV','lanuage') from dual;又比如select sys_context('USERENV','current_schema') from dual;

 

 

8.分组函数  min max count ...

 

9.查询  分组查   连接查   子查询  

如果在select语句中同时包含有group by, having, order by 那么它们的顺序是group by, having, order by

 子查询
   子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。
oracle的分页一共有三种方式

1根据rowid来分 执行时间0.03) 
2按分析函数来分执行时间1.01

3rownum来分 (执行时间0.1)

Select * from select s.*,rownum rn from

(select  *  from stuinfo where stu_id=1001 s  

where rownum<=10

Where rn>=6

     

 

10.结果集   

  差集, minus 显示存在第一个集合中,而不存在第二个集合中的数据。  

  交集,intersect 使用该操作符用于取得两个结果集的交集。

  并集  union当使用该操作符时,会自动去掉结果集中重复行       union all它不会取消重复行,而且不会排序

 

11.pl  变量(几种数据类型,游标 系统游标)  条件   循环  

Oracle支持的数据类型:

(1)字符类

Char:定长最大2000个字符。

varchar2(20): 变长最大4000个字符。

clob(character large object) 字符型大对象 最大4G
char 查询的速度极快浪费空间,查询比较多的数据用。
varchar 节省空间

(2)数字型

 number范围 -10的38次方到10的38次方 ,可以表示整数,也可以表示小数

number(5,2) number(5)

(3)日期类型

date 包含年月日和时分秒 

timestamp 可以精确到毫秒

4)图片

blob 二进制数据 可以存放图片/声音  4G 

 

定义游标CURSOR 游标名 IS SELECT查询语句

打开游标:open 游标名

提取数据:fetch 游标名 into 变量名

关闭游标:CLOSE 游标名

 

游标:从表中检索出结果集,从中每次指向一条记录进行交互的机制。 关系数据库中的操作是在完整的行集合上执行的。

游标有什么作用?

 ①指定结果集中特定行的位置。

 ②基于当前的结果集位置检索一行或连续的几行。

 ③在结果集的当前位置修改行中的数据。

 ④对其他用户所做的数据更改定义不同的敏感性级别。

 ⑤可以以编程的方式访问数据库。

 

效率低(实际数据较多情况下)尽量避免在游标循环中再进行表连接的操作

 

12.存储过程  函数  包   触发器  序列  事务(原子性,一致性,隔离性,持久性)

存储过程:一组为了完成特定功能的SQL 语句集存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数来执行它。

触发器:触发器是一种特殊类型的存储过程,触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用

触发器作用:强化约束 跟踪变化  级联运行 存储过程的调用 触发器可以调用一个或多个存储过程

函数:函数用于返回特定数据。执行时得找一个变量接收函数的返回值

包:所以通过使用包就可以分类管理过程和函数 包分两部分,包规范和包体

 

序列: oacle提供的用于产生一系列唯一数字的数据库对象

       主要用于提供主键值 自动提供唯一的数值 提高访问效率

 

事务:事务的任务便是使数据库从一种状态变换成为另一种状态 commit rollback

 

过程(Procedure) 是一个存储在数据库中命名了的P L / S Q L语句集合。它可以包含输入输出参数,是可执行的代码集合,并可以被其他应用程序调用。

函数(Function)是存储在数据库中的P L / S Q L语句集合。与过程的主要区别是函数必须有一个返回值。

(Package) 是根据相同功能的特点把过程和函数捆绑在一起的集合。所有的内部过程和函数在数据字典中作为一个单一的存储包记录,便于程序的组织和管理。

数据库触发器(Trigger) 也是存储的可执行P L / S Q L语句集合。触发器主要是通过事件进行触发而被执行的,数据库触发器在插入、更改或删除语句之前或之后运行。

 

 

 

 

 

 

 

13.索引  视图

索引是一种供服务器在表中快速查找一个行的数据库结构

  (1)快速存取数据。

  (2)既可以改善数据库性能,又可以保证列值的唯一性。

  (3)实现表与表之间的参照完整性

  (4)在使用orderbygroupby子句进行数据检索时,利用索引可以减少排序和分组的时间。

 

视图:

    1.为用户集中数据,简化用户的数据查询和处理。

2.屏蔽数据库的复杂性,用户不必了解数据库的复杂性。

3.简化用户权限的管理,只授予用户使用视图的权限。

4.便于数据共享,多个用户不必都定义所需的数据。

5.可以重新组织数据,以便关联到其他应用中。

 

14.优化

 Oracle SQL性能优化:

   WHERE子句中的连接顺序.表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.

   SELECT子句中避免使用 ‘ * ‘:

   尽量多使用COMMIT

   TRUNCATE替代DELETE

   减少对表的查询

   使用表的别名

   整合简单,无关联的数据库访问

 

15.三范式

(1)字段的原子性(列不可再分/字段无二义性);

(2)非主属性必须依赖主属性(一个表描述一个事物);

(3)非主属性必须直接依赖主属性(不能存在传递依赖)。

 

第一范式就是无重复的列

第二范式就是非主属性非部分依赖于主关键字

第三范式就是属性不依赖于其它非主属性。

16.数字字典

 数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户。 
  用户只能在数据字典上执行查询操作(select语句),而其维护和修改是由系统自动完成的。
 数据字典的组成:数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表。数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息。数据字典视图主要包括user_xxx,all_xxx,dba_xxx三种类型。 

更多推荐

面试汇总(六)--Oracle数据库基础知识汇总