1.数据字典 是数据库系统自动生成的一些表和视图,存放表空间、 用户、 权限和建表的一些信息 |
2.用户完整性,即字段可以通过check设置限制范围 |
3.数据库由多个数据文件组成,表空间是多个物理存储的数据文件的逻辑统一 |
4.Oracle中的文件类型:数据文件、控制文件(.ctl)、日志文件(重做日志文件,出差可回滚)、参数文件和备份文件等构成数据库物理载体 |
5.数据库一般有三个默认表空间,SYSTEM、SYSAUX、TEMP;表空间类型:系统表空间、临时表空间、永久表空间、撤销表空间(平时做数据撤销回滚就用到此表空间) |
6.表空间可设置成只读状态,保证大量静态表数据不被更改 |
7.结果集缓存的使用??http://blog.itpub.net/26015009/viewspace-765600/ |
8.SID和全局数据库域名,数据库名区别 https://blog.csdn.net/yes_is_ok/article/details/80016522 |
sid是数据库与本地操作系统进行通信的系统标识,若一个系统装了多个oracle 数据库 则有多个sid,全局数据库名是在分布式架构中,用库名+结点名表示全系统中唯一的数据库 |
9.安装数据库后若出现无法连接,则考虑防火墙的设置 |
10.DDL:create、alter、drop,DML:insert、update、delete,DCL:grant、commit、rollback、revoke |
11.对权限的最佳讲解(见书中权限的讲解章) |
12.SQL关键字、字段、对象名的不区分大小写,但sql中的字符值或者日期等,表中的值是区分大小写的 |
13.权限:系统权限(一共有206种,见章节)和实体权限 ,授权方式:直接授权;先授权给角色,再将角色授予用户 ,如果是间接授权的话,通过user_sys_privs仍然查不出用户的权限,因为用户本身不拥有权限 |
14.connect 角色拥有的只有创建会话权限(包括查看表),而RESOURCE角色拥有以下权限,其中create也包含更改和删除的权限 |
15.一个用户想操作或查看别的方案对象,表名前加方案名 |
16.对象与对象权限的关系,和对象授权的格式 grant select on tablename to username |
|
15.系统权限create table 给了用户后,如果revoke的话,只能撤销建表权限,而增删改数据仍可以 |
16.unlimited tablespace 这个权限只能给用户,表示用户可以在任意表空间建表,一般dba会回收这个权限,限制用户在某个表空间用以下语句 |
alter user zsx quota unlimited on sofa; |
.删除数据库用户时,一要保证用户退出连接,二如果用户有对象,则drop user zsx cascade ,否则无法删除 |
17.rowid详解 https://blog.csdn.net/wxwpxh/article/details/50532464 |
18.表空间由一个或多个dbf文件组成 |
19.方案(schema)是数据对象的集合,与用户一一对应,用户建立之后,一旦用户有了数据对象,则自动会拥有方案 https://rsy.iteye.com/blog/2148619 |
20.oracle模糊查询 用like 通配符 %和_ |
21.NOT的用法,where not name like ‘%张%’ 或者 where not 1=1 |
22.group by 分类查询需要注意:select后只能是分组列名(或)和聚合函数,其他列名不能添加;where子句会优先满足,然后再对结果进行分类,而having则是先分类,再对结果进行筛选; |
23,group by 可以组内再分组 group by column1,column2 |
24.简单连接产生笛卡尔积,查询的结果就是两个基表行数乘积,通过where条件避免笛卡尔积冗余 |
24.如果指定了别名,则所有子句中只能使用别名,真实表名将被覆盖 |
25.子句的执行顺序,先from,再where,最后在select,所以,当from中指定别名时,真实表名将被覆盖 |
26.join连接分为(1)外连接会显示满足where子句条件的行,而不管另一张表是否有匹配值 |
27.not in后面有null值出现则不会返回值,原因是,not in相当于not(表达式) ,null表示未知,任何值与null比较结果都未知,未知情况下not不返回值,但是in(表达式)有null不受影响 https://blog.csdn.net/longcccvv/article/details/54376015 |
28.in和exists区别:in会返回行,而exists只会判断是否有返回行,如果有则返回true,否则返回false,exists外层每一行from的数据都要由子查询进行评估,当为true则返回这一行,否则不返回 |
29.truncate用于删除表中所有数据,由于不会产生回滚信息,所以要比delete快,但是也不能撤销,delete之后可以使用rollback恢复,但是truncate不能 |
30.verchar2()可以存储null值,nverchar2(20)中20表示字符数,即中英文都存20 |
31.日期型date类型存储精度为年月日时分秒,而timestamp可以显示年月日时分秒到纳秒 |
32.关于基本数据类型的讲解 https://www.cnblogs.com/HDK2016/p/7071708.html |
33.使用pl/sql 进行数据库DML时,要显式的写commit,否则不会执行到表上 |
34.显式游标,需要声明,打开和关闭,隐式不需要,隐式只能接受一行 |
35.游标是pl/sql中在执行crud时分配的缓存区中的指针,关闭游标即关闭了该指针和缓存区 |
oracle的基本 操作 |
– |
1.例程是逻辑内存结构和一系列的oracle后台进程 |
2.oracle启动的三个步骤,启动例程,此时并没有与特定数据库连接,读取参数文件,startup nomount;装载数据库,此时,将打开数据库控制文件,在控制文件中找数据文件和重做日志文件的位置 startup mount;打开数据库(此时用户才能链接会话),start open如果某个数据文件或者重做日志文件没有找到,则需要数据恢复 |
3.启动时调用的文件顺序:参数文件 ----》控制文件-----》数据文件和日志文件 |
4.三种启动过程,一般并不是直接完成的,dba根据管理的需要,可能会在某个过程停留做操作 |
5.快速登录到数据库,在sqlplus.exe 文件快捷方式放到桌面后,点击其属性,在目标栏后面添加 sofa/sofa这样的用户名密码 |
6.运行sql命令 三种方式,命令行,sql缓冲区方式、命令文件方式 |
7.sql缓冲区,记录了sqlplus中最近一次执行的命令,ed可以直接打开查看,类似于Linux中的shell脚本,run直接运行一次缓冲区命令并输出结果 |
8.show命令,可以查看SGA(dba),show error,也可以查看当前用户show user |
9.autocommit命令,默认关闭,set ~ on 打开的情况下 在sqlplus中执行dml自动提交 |
10.跟oracle启动相关的服务有 oracle ora db11g_homeListener ,应该先启动监听;OracleServiceSID(ORACL),数据库例程服务,oraceldbconsoleSID(orcl)OEM服务 |
11.关闭数据库也有三种模式,shutdown 该模式关闭时,数据库会等待所有用户主动退出之后再关闭,shutdown transactional 阻止所有新事务和新会话,等当前的事务提交后,马上关闭数据库;shutdown immediate,立刻关闭(一般断电等才会用) |
12.表名必须以字母开头,<30,字下美英数等字符 |
13.不同方案中的数据对象名称可以相同 |
14.列约束中的unique设置之后,不允许重复的值,但是如果列未设置not null,则可以多个null重复 |
15.ROWID是一个伪列,当数据存储到物理磁盘上时,伪列会唯一的记录一行数据的物理地址,当表的物理位置发生变化时,每一行的ROWid也会因为物理位置变化而变化 https://www.cnblogs.com/xqzt/p/4449184.html |
16.OEM中也可以进行表的DML,并且可以生成sql,同时对数据库性能进行监督 |
17.如果要删除一个大表中的一列,数据库会执行的非常慢,高峰时期占据过多资源,且删除会锁表,可以使用UNUSED alter table demovo set unused(columnName),这样使得整个列不可见,甚至可以重新添加名字相同的列,等到空闲期再删除;物理上并没有删除列 |
18.索引的原理:oracle中的索引将创建jie列的键值和对应的物理记录号rowID排序存储,,将索引直接加载到内存,对物理位置进行检索,提高检索效率,表中记录越多,索引效果越明显,索引对象存储在索引段上,独立于表的物理位置 |
19.一般而言,DML/DDL等操作都可以通过两种方式,第一,sql语句,第二OEM来完成 |
20.索引的分类,逻辑分类:unique and nonunique,物理分类:bitmap和b-tree(包括normal和反转索引 );b-tree跟节点和子节点记录数据位置,叶子结点记录索引入口即rowid等信息; https://www.jb51.net/article/50703.htm |
21.视图是一种虚表,不占用物理空间,只用将其定义的信息保存到数据字典中即可,视图作用可以简化查询,将复杂的查询语句创建成视图之后,再次查询视图就只是简单查询了 |
22.视图的更改,即重新创建并代替之前的视图 用create or replace view |
23.oracle中的插入 只能用values而不能使用value |
24.对视图做DML操作时,第一,基表必须是单表查询,第二,执行的列,必须是视图中子查询所包括的,不能对视图中没有的列进行操作 |
25.pl/sql中的事务只能在其语句中commit,而不能在外部执行commit,后者不起作用 |