------------------------2013-5-9------------------------
索引的建立情况:经常用于查询,排序和分组的列(即经常在where,order或group by子句中出现的列)

主键索引和复合索引。

desc student;
create index i_stu_name on student(STU_NAME);

--删除索引,当表结构被删除时,与其所有的索引都会随之删除。
drop index i_stu_name;

--查询索引的语句,表名必须大写,否则查询不到值。
select table_name, index_name,status from all_indexes where table_name = 'STUDENT';

select index_name,column_name,column_position from all_ind_columns where table_name='STUDENT';

索引的特点:
1.不同值较多上建立索引,不同值少的列上不要建。如性别列只有男与女两个值,因此就没有必要建立索引。(bitmap)
2.索引上面加表达式,索引不能正常使用。 (函数索引)
3.where子句中如果使用in,or,like,!=,均会导致索引不能正常使用。
4.使用复合索引进行查询时必须使用前置列。

写where条件时,有索引的判断在前,其他字段的判断在后。如果where条件中用到复合索引,按照索引列在复合索引中出现的顺序来依次写where条件。
使用多表连接时,在from子句中,将记录数少的表放在后面,可提高执行效率。

首先从大表中查询需要的记录,此时记录数已经被大量缩小,然后再和其他两个表连接,速度会得到很大改善!

查询数量较大时,使用表连接代替in,exists,not in,not exists等。

然后不断的积累经验,并且注意不能一概而论。

全局索引,本地索引,全局分区索引。

--创建临时表
--create global temporary table myemp as select * from student;

select * from myemp;
desc myemp;

--删除临时表
drop table myemp;

--增加一个列
--alter table student add(deptno varchar2(6));
--修改一个列
--alter table student modify(deptno varchar2(10));
--删除表中的一个列,oracle8.0.5版本以上方可。
alter table student drop column deptno;

desc student;

-->3.2.4使用CHECK做限制条件

------------------------2013-5-10------------------------

--创建员工宿舍表
create table lodging(
  lodging char(18) primary key,
  name varchar2(10)
);

--创建工人表
create table worker(
  empno number(4) primary key,
  name varchar2(10),
  age number(2) check(age between 18 and 60),   --check检查约束
  lodging char(18) references lodging(lodging)  --外键关联
);

--员工基本信息表
create table emp3(
  empno number(4) constraint abc primary key,
  ename varchar2(10),
  job varchar2(10),
  sex char(2) check(sex='男' or sex='女'),
  mgr number(4),
  hiredate date,
  sal number(7,2),
  comm number(7,2),
  deptno number(2),
  check (sal+comm > 0 and sal+comm < 5000)
);

--使用unrecoverable创建表,nolodging lodging
create table table_copy as select * from emp3 unrecoverable;
--使用nolodging关键字创建
create table table_copy2 as select * from emp3 nolodging;
--使用lodging关键字创建
create table table_copy3 as select * from emp3 lodging;

--查询表空间
select tablespace_name,table_name,initial_extent from user_tables;

create table table3(
  xm varchar2(12),
  sal number(4,2)
);

//修改表结构
alter table table3 modify sal number(6,2);

insert into table3 values('gao',1111.11);
insert into table3 values('gao',1111.11);
insert into table3 values('zhu',5555.55);

insert into table3 values('zhu',55551.55);
ORA-01438: 值大于此列指定的允许精确度

##定点数的精度(p)和刻度(s)遵循以下规则##
1.当一个数的整数部分的长度 > p-s时,Oracle会报错。
alter table table3 add sal2 number(6,2);     -->1111.11
2.当一个数的小数部分的长度 > s时,Oracle就会舍入。  
insert into table3 values('zhu',5555.5589);         -->5555.56
3.当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。
alter table table3 add sal2 number(2,-2);

insert into table3 values('zhu',1111.11,5609.12);   -->5600
insert into table3 values('zhu',1111.11,5678.78);   -->5700
insert into table3 values('zhu',1111.11,609.12);    -->600
insert into table3 values('zhu',1111.11,63.12);     -->100
insert into table3 values('zhu',1111.11,43.12);     -->0

4.当s > p时,p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入。
--更加明白的说法--
--当p小于s时候,表示数字是绝对值小于1的数字,且从小数点右边开始的前s-p 位必须是0,保留s位小数。
insert into table3 values('zhu',1111.11,43.12,0.00126);  -->0.0013

insert into table3 values('zhu',1111.11,43.12,0.00996);  -->报错,这样会进位,绝对值大于1。
#http://ilinux.iteye.com/blog/289550#

--对表中的列表示为不使用
--alter table table3 set unused(sal3);

--创建主键
create table dept1(
  deptno number(2),
  dname varchar2(10),
  loc varchar2(20),
  constraint pk_dept primary key(deptno)
);

--增加表的主键
--alter table table3 add ( pk_key primary key (sal) );

--ORA-00907: 缺少右括号 ??
alter table table3 add(pk_key primary key (xm));  --可能跟表有关系

alter table dept1 add primary key(deptno);        --系统默认的名称
alter table dept1 add constraint pk_dept primary key(deptno); --constraint必须要写--
#http://miracle.blog.51cto.com/255044/55315#

--主键不可用
create table dept2(
  deptno number(2) primary key,
  dname varchar2(10)
)
disable primary key;

--启用取消的主键,才可以建立外键关系,否则报错。
alter table dept2 enable primary key;

--ORA-02270: 此列列表的唯一或主键不匹配
create table table4(
  id varchar2(8),
  deptno number(2) references dept2(deptno)   --外键
);

唯一索引和复合主键
e_name varchar2(8) constraint un_dname unique,
name varchar2(10) constraint pt_1 primary key,
表结构最后一行写
constraint pri_3 primary key(deptno)
--外键
deptno constraint pri_4 references dept5(deptno);

--创建复合主键
--alter table dept1 add constraint pk_dept primary key(deptno,dname);

alter table dept1 add primary key(deptno,dname);

--创建复合主键 禁用状态。
alter table dept1 add primary key(deptno,dname) disable;

--禁用主键,如果有一外键依赖于该主键,则系统会报错。
alter table dept1 disable constraint SYS_C002136;  (语法适用于外键)
--恢复主键
alter table dept1 enable constraint SYS_C002136;
--删除主键
alter table dept1 drop constraint SYS_C002136;    (语法适用于外键)
--删除主键,将外键一起删除。
alter table dept1 drop constraint pk_2 cascade;

create table dept5(
  deptno varchar(8),
  name varchar(8),
  loc varchar(4),
  constraint pri_3 primary key(deptno)  --建立主键
);

create table emp5(
  emptno number(4),
  ename varchar2(10),
  job varchar2(10),
  mgr number(4),
  deptno constraint pri_4 references dept5(deptno)  --外键
);

create table emp6(
  emptno number(4),
  ename varchar2(10),
  job varchar2(10),
  mgr number(4),
  deptno, constraint pri_5 foreign key(deptno) references dept5(deptno)  --外键,逗号不能少。
);

create table emp7(
  emptno number(4),
  ename varchar2(10),
  job varchar2(10),
  mgr number(4),
  deptno varchar(8) , constraint pri_6 foreign references dept5(deptno) on delete cascade  --外键,使用delete cascade管理引用完整性
);

#索引组织表# 基于主键进行搜索
create table命令与organization index子句一起用于创建索引组织表。
--表及索引.txt--

--抽象数据类型的使用
create type add_type as object(
  street varchar2(10),  --街道名
  city varchar2(10),    --城市名
  state char(2),        --州代码
  zip   number          --邮编
);
create table customer(
  name varchar2(10),
  address add_type
);
insert into customer values('1',add_type('mystatree','some city','st',10001));

大数据类型使用,clob,blob,bfile。  -->ORACLE埃里森1.txt

3.9.1.表和索引数据字典
 .DBA_TABLES,ALL_TABLES,USER_TABLES  存放表的基本信息
 .DBA_INDEXS,ALL_INDEXS,USER_INDEXS  存放索引的基本信息
 .DBA_IND_COLUMN                     存放有索引的列的信息
 .ALL_CONSTRAINTS                    存放表的限制信息
 .ALL_COLS_COLUMNS                   存放表的列的限制信息

查询当前用户的基本信息,包括表名,索引名及表空间,存储参数。
select tablespace_name,table_name,initial_extent,next_extent from all_tables where owner = user;

--查询当前用户的限制信息
select owner,constraint_name,table_name from user_constraints;

select search_condition from user_constraints;
SEARCH_CONDITION
--------------------------------------------------------------------------------
sex='男' or sex='女'
sal+comm > 0 and sal+comm < 5000
"ID" IS NOT NULL
"NAME" IS NOT NULL
age between 18 and 60

#创建视图#
create or replace view viewTitles
as
select title_id,nvl(price,0) price from titles;  --SQL语句--

无法直接指定一个分区数据表的多个分区中的数据时,通过union关键字将多个数据表分区联结。
create or replace view viewStus
as
select * from student partition(east)
union
select * from student partition(west);
--通过视图来实现,可以简化SQL命令。
select * from viewStus;

查看用户创建的视图信息(user_views)
select * from user_views;

删除试图
delete view viewStus;

--查看用户序列
desc user_sequences;
--查询簇信息
desc user_clusters;

##簇##

簇表
簇索引
簇表其实就是一组表,是一组共享相同数据块的多个表组成。将经常一起使用的表组合在一起成为簇可以提高处理效率。
在一个簇中的表就叫做簇表。建立顺序是:簇 ->簇表 ->数据 ->簇索引。

唯一索引
组合索引
反向键索引:在创建索引时使用reverse关键字。
位图索引:为低基数列创建,bitmap index语句用于创建位图索引。
   优点:减少响应时间,降低空间占用。
   --无须频繁的修改造成死锁--

当索引被创建后,由Oracle自动维护。

create table student8(
  stu_no number(2),
  stu_name varchar2(8)
);

--在指定的字段上创建唯一索引
create unique index idx_stu_no
on student8(stu_no);

insert into student8 values(1,'ANiu');
--ORA-00001: 违反唯一约束条件 (NEWLIFEYHJ.IDX_STU_NO)
insert into student8 values(1,'AZhu');

select * from student8;

数据库对象
同义词:数据库对象的替换名称,隐藏了对象的名称和所有者。
序列:生成唯一,连续的整数。
-- 获取序列的下一个值
-- 序列的第一个值必须通过NextValue来获得
select seqTest1.NextVal from dual;
-- 获取序列的当前值
select seqTest1.CurrVal from dual;
视图:经过定制的表示方式,用于显示来自一个或多个表的数据。
索引:加快了SQL语句的执行速度。多个列上的创建的索引称为“组合索引”。
      在索引组织表中,数据访问基于主键值。
簇:一组表,这些表拥有公共列,并且一起使用。

create
alter
drop

------------------------2013-5-14------------------------
普通表与索引表的对比
普通表   索引编排表
rowid唯一的标识行 主键唯一的标识行
隐式的rowid列  没有隐式的rowid列
基于rowid的访问  基于主键的访问
顺序扫描返回所有行 完全索引扫描返回所有行,并按主键顺序排列
普通表可以存储在簇中 索引组织表不能存储在簇中
支持分发,复制和分区 不支持分发,复制和分区

区别:rowid与主键,顺序扫描和索引扫描,簇,分发,复制和分区。

基于函数的索引
基于一个或多个列上的函数或表达式创建的索引
表达式中不能包含聚集函数(sum,count,avg,min,max)
不能在lob,ref或嵌套表列上创建

键压缩索引:compress子句用于创建这种索引。
分区索引
分区索引的类型
本地索引
全局索引

Oracle Class4. 数据库对象(同义词,序列,视图,索引,簇)相关推荐

  1. Oracle 快速入门 同义词序列视图索引

    目录 一.数据库对象 二.同义词synonym 三.序列 四.视图 五.索引 六.综合代码 1.同义词部分: 2.序列: 3.视图和索引 一.数据库对象 1.数据库对象         2.同义词   ...

  2. Oracle数据库中的序列、索引和同义词,详细笔记。

    文章目录 数据库中的序列.索引和同义词 1. 序列 1.1 什么是序列 1.2 创建序列 1.2.1 通过DDL语句创建序列 1.2.2 使用工具创建序列 1.3 使用序列 1.3.1 查询序列 1. ...

  3. Oracle的数据库对象有哪些

    Oracle的数据库对象有哪些: 数据库的功能就是组织管理和存储各种数据库对象.数据库中的对象是我们进行数据管理的基本.本篇会回顾一下数据库对象的一些基本知识,让我们更加清晰的了解这些Oracle数据 ...

  4. oracle查看表空间的内容,学习笔记:Oracle查看object对象 表空间 表 索引 数据文件的使用空间...

    天萃荷净 运维DBA咨询想要查看Oracle的object对象的使用空间大小,包括表空间 表 索引 数据文件的使用空间 1.查看Oracle表空间大小 Select Tablespace_Name,S ...

  5. 数据库对象 同义词 索引 序列 视图

    1. Oracle数据库对象 数据库对象是数据库的组成部分,常常用CREATE命令进行创建,可以使用ALTER命令修改,用DROP执行删除操作.前面已经接触过的数据库对象有表.用户等. 今天将学习更多 ...

  6. 再过五分钟,你就懂Oracle的数据库对象了

    数据库的功能就是组织管理和存储各种数据库对象.数据库中的对象是我们进行数据管理的基本.本篇会回顾一下数据库对象的一些基本知识,让我们更加清晰的了解这些Oracle数据库对象. 1. 表(Table) ...

  7. Oracle 其他数据库对象

    其他数据库对象: 序列(SEQUENCE) 索引(INDEX) 视图(VIEW) 1.序列(SEQUENCE) 对应的数据库字典:user_sequences 作用:用来产生唯一性值的数据库特殊对象 ...

  8. MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器

    第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...

  9. oracle无创建directory权限,【DIRECTORY】普通用户创建Oracle DIRECTORY数据库对象的权限需求及探索...

    可能遇到的报错信息如若在创建DIRECTORY之前普通用户sec未获得相应权限,将会收到最为常见的"ORA-01031: insufficient privileges"错误.模拟 ...

最新文章

  1. 动态规划解题套路框架
  2. shell 目录下文件名放入循环_批量删除同一目录下的文件名前缀
  3. C++的ORM工具比较
  4. java爬虫获取div内容_Java爬虫-简单解析网页内容
  5. 8天玩转并行开发——第五天 同步机制(下)
  6. python文本编辑器报错_notepad++编辑器中运行python程序时需要注意的编码格式
  7. Springmvc源码分析、底层原理
  8. python中class什么意思_【转载】在python的class中的,self到底是什么?
  9. Android零基础入门第85节:Fragment使用起来非常简单
  10. div显示图片_图片按照百分比显示部分,不变形
  11. 膨胀、腐蚀、开、闭运算——数字图像处理中的形态学
  12. 微信小程序自定义字体及自定义图标问题说明
  13. 【数学问题2】动力学建模
  14. 编程视频资源教程汇总
  15. 万娟 白话大数据和机械学习_《白话大数据与机器学习》.pdf
  16. oracle Net manger配置网络服务
  17. python祝福语_Python | 微信自动回复祝福语
  18. c语言 准确赋值浮点数,C语言浮点数
  19. 论文翻译——Rapid 2D-to-3D conversion——快速2D到3D转换
  20. 【Unity】NGUI/UGUI 小地图制作

热门文章

  1. 《Python Cookbook 3rd》笔记(3.7):无穷大与 NaN
  2. 《深入理解JVM.2nd》笔记(三):垃圾收集器与垃圾回收策略
  3. python判断密码强度并输出_密码强度判断
  4. append在python里是什么意思_“一棵绿萝七个鬼”是什么意思?卧室里到底能不能养绿萝!...
  5. 硬件密码组件的硬件结构、作用及实现应用设计
  6. Java基础——线程及并发机制
  7. 为什么软件测试需要变革?
  8. 银行不告诉的秘密,看完豁然大悟
  9. 。。。。。etc 时域错误隐藏个人理解
  10. quartz各版本MySQL数据库存储建表SQL语句