plsql guide(基础详解)(5)

2019-04-01 23:16

创建表格式 Schema

所有者标识

CREATE TABLE [schema.]table (column datatype [DEFAULT expr] [ column_constraint ], ?? [table_constraint ]); Table Column Datatype

列表名 列名

列的数据类型 列约束 表约束

Column_constraint Table_constraint 例:

CREATE TABLE s_dept (id NUMBER(7) CONSTRAINT s_dept_id_pk PRIMARY KEY, Name VARCHAR2(25) CONSTRAINT s_dept_name_nn NOT NULL, Region_id NUMBER(7) CONSTRAINT s_dept_region_id_fk REFERENCES S_region (id), CONSTRAINT s_dept_name_region_id_uk UNIQUE (name, region_id)); 很多时候,数据库表的设计都可以通过表的示例图来设计,通过先创建数据表的示例图,再来创写数据表的角本,这是一种非常有效的方式,如下: 例:通过如下数据表的示例图,创建数据表t_emp: Column Name Key Type Nulls/Unique FK Table FK Column Datetype Length

ID Last_Name NN Userid Start_date Commission_pct Dept_ID PK NN,U NN,U FK ID Num 7 Char 25 Char 8 Date Num 6 Num 7

18

Company Confidential - For internal use only

创建序列格式

CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUEn|NOMAXVALUE}] [{MINVALUEn|NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}] 说明: 标示 Sequence INCREMENT BY START WITH n MAXVALUE n NOMAXVALUE MINVALUE n NOMINVALUE CYCLE|NOCYCLE 说明 建立的序列名 序列数字间的间隔,缺省为1 第一个序列值,缺生为1 序列的最大值 确定序列的最大值,为10的27次方 序列的最小值 确定序列的最小值,为1 确定序列值达到最大值时,是否重复开始,缺省为NOCYCEL 确定数据库管理器于值和存储的值的个数,缺省为NOCACHE CACHE n|NO CACHE

序列常用来给一个表的PK列赋值 序列有NEXTVAL和CURRVAL方法。 例:

CREATE SEQUENCE t_item_s

Increment by 1 Start wih 1 Maxvalue 999999 Nocache Nocycle;

是运行如下命令,看看结果:

19

Company Confidential - For internal use only

select t_item_s.nextval from dual; select t_item_s.currval from dual; 创建视图

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[,alias]?)] AS subsequery [WITH CHECK OPTION [constraint]] [WITH READ ONLY] 注:

I. Subquery可以是非常复杂的select语句 II. Subquery不能包含ORDER BY语句

实际上,视图是一个基于数据表或其他视图的逻辑数据表,一个视图本身并不包含数据,仅仅是一个可以用来查看数据或更新的窗口,一个视图在数据字典中是以一个select语句存储的。 使用视图有着许多优点:

i.

限制数据表的访问:由于它是一条select语句,通过选择的取舍,使用户只能看到或只需看到所要检索的数据列;

允许用户通过一个视图检索多个表的信息,而不要去写复杂的SQL语句;

ii.

创建索引 I.

自动创建

在创建表时,若包含Primary Key或者其他唯一约束时,一个唯一索引就自动创建立了。 II.

手动创建

用户可以创建非唯一的索引来提高检索速度。

CREATE INDEX index ON table (column[, column]?); III.

何时建立索引:

列经常在where或连接中使用; 列包含了一个大范围的值; 列包含了大量的空值;

两个或多个列常常在where或连接中一起被使用; 表的数据量大,而常常检索其中的2-4%;

20

Company Confidential - For internal use only

太多的索引并不总是能提高检索速度。 表空间的概念:

Oralce把文件作为其组织系统的一部分,但是它的逻辑结构已超出文件的概念。一个表空间就是一片磁盘区域,它有一个或多个磁盘文件组成。一个表空间可以容纳许多表、索引或是试图等等。由于表空间的大小是固定的,所以在向表中间增加行时,可能装满整个表空间。可以由拥有DBA权限的用户或是自动扩展这个表空间,其过程是先创建一个磁盘文件,然后将此文件增加到表空间中,或是直接扩大已存在的数据文件,因此,这些表中的行就会分布于两个文件中。一个或多个表空间一起就构成了数据库。

每一个数据库均包含一个系统表空间,这里保存业者的记录和地址,它包含数据字典、数据库的表空间、表、索引的名称和地址。 下面是一个创建表空间的示例:

create table space usertemp datafile ?HOME.ONE‘ size 1000k default storage (initial 25k next 10k) minextents 1 maxextent 100

pctincrease 0)

permanent;

LESSON 3Oracle数据字典

Oracle数据字典是Oracle数据库管理系统的重要组件之一,它包含一系列数据表和数据视图,提供只读属性的数据库信息。

Oracle数据字典实在数据库建立的时候建立的,又Oracle数据库管理器进行更新和维护,提供Oracle数据库用户、各个用户的权限、数据库对象、数据表约束等等信息。 Oracle数据字典的四大类视图:

- user - all - DBA - v$

用户拥有的对象 用户可访问对象 所有数据对象 服务器性能对象

其他视图:

- DICTIONARY

显示所有数据字典的数据表、视图和同义词

显示数据对象的所有者、授权者和权限

- TABLE_PRIVILEGES - IND

User_indexes的同义词

常用视图

DICTIONARY、TABLE_PRIVILEGES、IND

21

Company Confidential - For internal use only

ALL_TABLES、USER_OBJECTS 数据字典使用示例:

例一:SELECT distinct object_name,

object_type FROM usr_objects

例二:SELECT *

FROM user_constraints WHERE table_name =‘T_ITEM‘

LESSON 4用户访问控制:

在一个多用户数据库环境,必须维护数据访问和使用的权限,Oracle数据库管理器提供以下安全机制控制:

I. II. III. IV.

控制数据库的访问;

提供数据库对象的局部访问; 通过数据字典验证赋予和接收特权; 为数据库对象创建同义词。

数据库安全分为两类,一是系统安全,二是数据安全。系统安全控制数据库的访问和使用这一层次,例如用户和密码,用户能使用的数据空间,用户允许使用的操作系统等等;数据库安全控制数据库对象的访问和使用,以及能在这些数据库对象上能进行的操作。

权限的概念即是执行特定SQL语句的权利。数据库的系统管理员具有最高的权限,普通用户必须有系统管理员赋予权限来访问数据库和数据库对象,当然,用户也可具有赋予其他用户或角色的权利。

系统权限:

DBA具有最高级系统权限,典型的系统权限有: 系统权限 CREATE USER DROP USER DROP ANY TABLE BACKUP ANY TABLE 创建用户格式:

CREATE USER user IDENTIFIED BY password 操作授权 赋予创建其他Oracle用户权限 删除任何用户 删除任何束中的表 备份任何束中的表

GRANT privilege [, privilege ……] TO user [, user ……] Company Confidential - For internal use only 22


plsql guide(基础详解)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小区高清数字监控系统技术方案书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: