当前位置:
文档之家› oracle常用数据库对象介绍
oracle常用数据库对象介绍
2015年6月10日8时57 分
2015年6月10日8时57 分
Example:
ALTER TABLE emp MODIFY (sal NUMBER CONSTRAINT nn_sal NOT NULL);
2015年6月10日8时57 分
CREATE TABLE scott.emp (empno NUMBER CONSTRAINT pk_emp PRIMARY KEY, ename VARCHAR2(10) CONSTRAINT nn_ename NOT NULL CONSTRAINT upper_ename CHECK (ename = UPPER(ename)), job VARCHAR2(9), mgr NUMBER CONSTRAINT fk_mgr REFERENCES scott.emp(empno), hiredate DATE DEFAULT SYSDATE, sal NUMBER(10,2) CONSTRAINT ck_sal CHECK (sal > 500), comm NUMBER(9,0) DEFAULT NULL, deptno NUMBER(2) CONSTRAINT nn_deptno NOT NULL CONSTRAINT fk_deptno REFERENCES scott.dept(deptno) ) PCTFREE 5 PCTUSED 75;
• • • • 保证名字要短,且能够说明表的特征 将父表与子表的名字联系起来 引用列与被引用列应该使用同一个名字 与表相关的对象的命名要与表的名字联 系起来 • 避免使用引号,关键字,非字母非数字 的字符(nonalphanumeric) ——除非是$、 _、# 三种符号
2015年6月10日8时57 分
:
2015年6月10日8时57 分
2015年6月10日8时57 分
oracle 存储过程
• 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 输入参数1 IN NUMBER, 输入参数2 IN NUMBER, … 输出参数1 out char, … ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN • END 存储过程名字
SQL> DROP TABLE dept30; Table dropped.
2015年6月10日8时57 分
重命名对象
• To change the name of a table, view, sequence, or synonym, you execute the RENAME statement. • You must be the owner of the object. SQL> RENAME dept TO department; Table renamed.
SQL> CREATE SEQUENCE dept_deptno 2 INCREMENT BY 1 3 START WITH 91 4 MAXVALUE 100 5 NOCACHE 6 NOCYCLE; Sequence created.
2015年6月10日8时57 分
Index
• 模式对象,对于表或簇中每一个被索引 的列的每一个值都保留一个条目。 • 提供了直接快速访问行的方式 • 一个表可以拥有任意多个索引 • 可以索引一个列,也可以索引多个列在 一个索引中最多可以包含16个列 • 索引缺省是升序排列的。
SQL>SELECT TABLE_NAME,COLUMN_NAME, UPDATABLE, INSERTABLE,DELETABLE 2 FROM USER_UPDATABLE_COLUMNS 3 WHERE TABLE_NAME ='EMP_BONUS' SQL>/
2015年6月10日8时57 分
DROP
VIEW view_data;
2015年6月10日8时57 分
Sequence
• • • • • • 自动生成唯一数字 共享对象 经常用于创建主键值 取代应用程序代码 提高访问的速度和有效性 可以被高速缓存(cache)
2015年6月10日8时57 分
查询序列值
序列创建好之后,可以用SQL语句访问它的两个虚列 CURRVAL pseudocolumn (序列当前值) NEXTVAL pseudocolumn (序列产生一个新值).
2015年6月10日8时57 分
修改表
ALTER TABLE table ADD ( column datatype [DEFAULT expr] [, column datatype]...); ALTER TABLE table MODIFY ( column datatype [DEFAULT expr] [, column datatype]...); ALTER TABLE table DROP COLUMN column ; ALTER TABLE table SET UNUSED COLUMN column ;
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY]
2015年6月10日8时57 分
2015年6月10日8时57 分
Index speed up queries
• • • • 通过使用指针来提高取回行的速度 通过快速定位数据方法,减少磁盘I/O 独立于其索引的表 被Oracle Server维护
2015年6月10日8时57 分
创建索引
2015年6月10日8时57 分
删除索引
2015年6月10日8时57 分
2015年6月10日8时57 分
Example:
2015年6月10日8时57 分
2015年6月10日8时57 分
定单编号 10001
定单日期 2006-01-03
发货日期 2006-03-07
定单编号 10001 10001
产品编号 AB001 AC001
定货量 100 500
定货价 9.8 20
2015年6月10日8时57 分
Synonym
对另一个数据对象而言同义词是一个别名。public同 义词是针对所有用户的,相对而言private同义词则只针对 对象拥有者或被授予权限的账户。在本地数据库中同义 词可以表示表、视图、序列、程序、函数或包等数据对 象,也可以通过链接表示另一个数据库的对象。 创建同义词语法如下 CREATE [PUBLIC] SYNONYM synonym_name FOR [schema.] object[@db_link];
WITH CHECK OPTION
2015年6月10日8时57 分
Example:
CREATE VIEW clerk (id_number,person, department, position) AS SELECT empno, ename,deptno, job FROM emp WHERE job = ’CLERK’ WITH CHECK OPTION CONSTRAINT wco;
2015年6月10日8时57 分
Table
• Table 是在关系数据库中保存数据的 一种数据结构,由列和行组成。 • 在逻辑存储层次关系中的段(segment) 得一种
2015年6月10日8时57 分
创建表
• CREATE TABLE table 。。。
2015年6月10日8时57 分
使用表的命名约定
2015年6月10日பைடு நூலகம்时57 分
删除表
• • • • All data and structure in the table is deleted. Any pending transactions are committed. All indexes are dropped. You cannot roll back this statement.
Constraints
2015年6月10日8时57 分
2015年6月10日8时57 分
定义约束
2015年6月10日8时57 分
表和列级约束
2015年6月10日8时57 分
2015年6月10日8时57 分
2015年6月10日8时57 分
2015年6月10日8时57 分
2015年6月10日8时57 分
初步了解Oracle 常用数据库对 象
• • • • • • • • • • 普通表 table 视图 view 序列 sequence 索引 index 约束 constraint 同义词 synoym 存储过程 procedure 函数 function、 包 package、 触发器 trigger
• 简单视图与复杂视图对比
2015年6月10日8时57 分
复杂视图
2015年6月10日8时57 分
在视图上执行DML语句的规则
2015年6月10日8时57 分
Example:
Create view emp_bonus as select a.empno,a.ename,b.bonus from emp a, bonus b where a.ename=b.ename
2015年6月10日8时57 分
View
• 视图是建立在一个或者多个表上导出的 虚表。视图的数据由它的基表获得。基 表可以是普通表,也可以是其他视图。
2015年6月10日8时57 分
创建视图
• 在CREATE VIEW命令中写入子查询, • 子查询中可以包含复杂SELECT语法 • 子查询中不能包含ORDER BY子句。