Oracle 基础笔记(三)

1.dictionary 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。

  • 静态数据字典-->主要是在用户访问数据字典时不会发生改变的, --例如某用户创建的表
  • 动态数据字典-->是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。

数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、 all_*、 dba_*。

  • user_* 该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)
  • all_* 该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)
  • dba_* 该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
--所有的字典都保存在dictionary里面
select * from dictionary;
-- 查当前用户里有哪些表
select table_name from user_tables;
--查询当前用户下面有哪些视图?
select view_name from user_views;
--查询当前用户下面的约束在哪些表上面?
select constraint_name, table_name from user_constraints;
--查询该用户拥有哪些索引
select index_name from user_indexes;
--查询该用户拥有哪些数据库对象,对象包括表、视图、存储过程、触发器、包、索引、序列、JAVA文件等。
select object_name from user_objects;
--主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。
select * from user_users;

2. Index 索引就相当于我们小时候查字典里那个索引

索引的作用:你为某个字段建立索引,别人访问这个字段的时候效率会更高。注意:是读的时候效率会更高。索引的建立是读起来更快,修改起来更慢了(附加修改索引表)。

你访问这个字段,访问量特别大的时候,而且觉得效率比较低的时候,这个时候可以考虑建立索引,但是记住一点:不要轻易的建立索引。

 

--创建索引 注意:当你给表里某个字段加约束的时候,比如主键约束,或者唯一约束,这个时候Oracle会帮你建立
--对应的这个字段的一个索引,如果你的主键是两个字段的组合,它会帮你建立两个字段组合的一个索引
create index idx_stu_email on stu (email);
--删除索引
drop index idx_stu_email;
--忘记索引怎么查
select index_name from user_indexes;

 

3.sequence 这是Oracle里面独特的东西,即特有的东西,一般用来做主键。每次取的时候它会自动增加。sequence与表没有关系。 

 

CREATE SEQUENCE seqTest
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXvalue -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
--得到当前值 CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。
SELECT seqTest.currVal FROM DUAL; 
--得到下个值 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。
select seqtest.NextVal from dual;
--修改 拥有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.
--如果想要改变start值,必须 drop sequence 再 re-create。
alter sequence SEQTEST maxvalue 9999999;
--删除
DROP SEQUENCE SEQTEST;

 

 4.数据库三范式

  三范式所追寻的原则是:不存在冗余数据

  第一范式:确保每列保持原子性 ---->   1.要有主键(设计任何表都要有主键) 2.列不可分

  第二范式:确保表中的每列都和主键相关 ---> 当一张表里面有多个字段作为主键的时候,非主键的这些字段,不能依赖于部分主键(只能依赖整个组合的主键,不能依赖部分)

 

 

  第三范式:确保数据表中的每一列数据都和主键直接相关,而不能间接相关。----->(不能存在传递依赖,除了主键之外的任何其他字段必须直接依赖于主键)

 

 

猜你喜欢

转载自luhantu.iteye.com/blog/2086031