oracle基础知识7_oracle常见对象

 

0 常见对象有:

 

对象描述
基本存储单位
视图在表基础上抽取出逻辑相关的数据集合
序列提供有规律的数值
索引提供高效的查询
同义词给对象起别名

 

1 表字段类型

 

数据类型描述
char(size)定长字符
varchar2(size)可变长字符
clob字符数据,最大可4G
BLOB二进制数据,最大可4G
number(n)可变长数值类型
long可变长字符数据,最大可2G
rowid行地址
bfile存储外部文件的二进制数据,最大可4G
date日期
  

 

eg: create table testsavepoint (tid number,tname varchar2(20));

 

 

2 DDL语句:

 

1 参考原来表结构的基础上创建新表,同是将原表部分数据赋值到新表中:

create table emp20
    as
   select * from emp where deptno=20; (创建表的同时将部门号为20的记录赋值到新表emp20中)

 

如果仅仅是创建表,写成如下:

create table emp20
    as
   select * from emp where 1=2;

 

2 修改表: (追加新列 修改列 删除列 重名列)

2.0 create table test1(tid number,tname varchar2(20),hiredate date);

2.1 alter table test1 add image blob;

2.2 alter table test1 modify tname varchar2(40);

2.3 alter table test1 drop column image;

2.4 alter table test1 rename column tname to username;

 

3 删除表:

drop table test1;

 

 

 3 约束(表级别的限制,关键词constraint,可以不加此关键词)

 

约束类型:

a) not null

b) unique

c) primary key

d) foreign key

e) check

 

 检查性约束:

create table test2
   (tid number,
    tname varchar2(20),
    gender varchar2(4) check (gender in ('男','女')),
    sal number check (sal > 0)
   );

 

外键约束几个关键字:

a) foreign key: 在子表中定义了一个表级的约束

b) references: 指定表和父表的列

c) on delete cascade: 当删除父表时,级联删除子表记录

d) on delete set null: 当删除父表时,将子表的相关记录外键值为null

 

eg:  见下面创建表的同时创建约束并给约束赋值,最后一行就是设置外键约束写法


 

 create table myperson
    (pid varchar2(18) constraint myperson_PK primary key,
     pname varchar2(40) constraint myperson_Name_notnull not null,
     gender varchar2(4) constraint myperson_Gender check (gender in ('男','女')),
     email varchar2(40) constraint myperson_Email_unique unique
                        constraint myperson_Email_notnull not null,
     deptno number constraint myperson_FK references dept(deptno) ON DELETE CASCADE
   );  创建表myperson字段deptno ,给这个字段增加外键约束myperson_FK,关联父表dept字段deptno,并当

 删除父表时,级联删除子表myperson记录。

 

 

 

4 视图

 

a) 视图是一张续虚表

b) 建立在已有表的基础上的一种封装查询

c) 仅仅是提供数据展示的一种形式而已,对于开发人员而言,就是带有业务功能的select查询的预定义,终极目的是为了简化查询而生(这个简化是相对于开发人员而言,对于oracle而言是一点简化都没有)

d) 只能创建/删除/替换, 如果修改的话,就相当于替换

e) 非常不建议通过视图对表的数据进行 插入/修改/删除

f)  建议创建视图时候就增加上 read only

 

 创建视图和快捷创建表写法类似,如下

create view empview
    as
    select e.empno,e.ename,e.sal,e.sal*12 annlsal,d.dname
    from emp e,dept d
    where e.deptno=d.deptno with read only;

 

创建好了后,直接执行: select * from empview;  实际上就是让oracle根据视图名称 empview去执行

视图名称对应的 那一大堆select查询,仅仅是让操作人员操作起来少些一些代码而已(类似于一个预定义功能,或者理解为面向对象的封装)

 

 

5 序列:(产生唯一数值的数据库对象,多用于生成主键)

 

 序列就是数组,并被装载在内存中。

两个属性:

a) nextval---> 返回序列中下一个有效的数值,任何用户都可以引用

b) currval---> 存放序列的当前值

序列初始化后,当前值是指向第一个数值之前的那个位置(类似于游标),因此第一个数值

 

创建: create sequence myseq;

得到序列的第一个数值:

 

错误写法:

select myseq.currval from dual
       *

第 1 行出现错误:
ORA-08002: 序列 MYSEQ.CURRVAL 尚未在此会话中定义

 

正确写法:

select myseq.nextval from dual;

NEXTVAL
1

 

 

 

 

 

 

 

 

 

 

使用序列作为主键向表中插入数值:

 create table tableA(tid number,tname varchar2(20));

insert into tableA values(myseq.nextval,'aaa' );

 

 

如果你创建的序列作为所有表的主键来共同使用,那么每个表的主键必定会造成不连续结果,

tableA 1

tableA 2

tableB 3

tableA 4

 

因此在开发中,每个表对应一个此表专有的序列对象。

 

序列修改后,只会影响将来的值,已经被使用的数值不会改变。

alter sequence xxx  increment by xx maxvalue  xxx;

 

删除序列:  drop sequence xxx;

 

 

 

6 索引(和表记录的关系类似于 字典目录和字典里面详细内容)

 


 

 如果针对创建索引的列字段经常被更新(eg:sal) 那么不建议创建索引,否则 数据库经常维护这个索引表,效率也不会提高到多少。

 

创建索引:

create index myindex on emp(deptno);

create index myindex on emp(deptno,ename);

 

删除索引:

drop index myindex ;

 

 

 

 

 

 

 

学好Oracle的六条总结 1、如果有一定的数据库基础,知道SQL是怎么回事,即使写不出来简单的SQL, 但可以看懂它们,你就可以跳到2。否则请先学习一下数据库基础和SQL语言, 不需要很深,更不需要去记忆那些复杂的SQL命令,这些可以留在以后边应用 边学习、记忆。2 、要想学好ORACLE,首先要学习ORACLE的体系结构,现在你不需要深入 理解它们,但要分清几个关键的概念: instance (实例)、数据文件、日志文件、参数文件、数据文件与表空间的关系 3、2是有关ORACLE的一些基本概念,下面要学习的是一些简单的的实际操作 ,就是如何去管理ORACLE数据库,当然不是管理全部的ORACLE。在此过程 中你将对SQL和ORACLE体系结构有个更深入的了解。 4、到了这一步你基本上算是初步掌握了ORACLE,下面将要根据你的方向来具 体学习其它的ORACLE知识了。如果你是开发人员,则需要更多地去学习 PL/SQL以及DEVELOPER,而这将是一门新的课程。如果你是一名DBA, 请继续。 5、可以根据自己的实际情况,进行有选择的学习,也就是说下面的内 没有特别顺序要求。可以选择深入学习ORACLE的管理、备份与恢复、性能 调整、网络等。当然在学习这些知识的过程中,如果有实际的工作更好,这样 可以在实际中成长,学会TROUBLE SHOOTING 目录 1.1 数据库基本知识 1.2 关系数据库 1.3 数据库设计基础 1.4 SQL基本命令 1.5 Oracle简介 1.6 启动和关闭Oracle 1.7 Oracle 命令复习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值