首页 > 代码库 > oracle

oracle

--创建索引 关键词 index
create[unique] index index_name

      on table_name(column_name [,column_name…])

      [tablespace tablespace_name]


--创建唯一索引 unique index
create unique index suoyinname on student(sname)

--创建同义词 可以理解为其他对象的一个别名,由它映射到另一个对象 关键词 synonym
--有两种 一种是public 一种是私有的
create [public] synonym table_name for user.table_name;

drop [public] synonym table_name;

--创建序列 关键词 sequence
create sequence name start with 1 increment by 1

--返回序列的下一个值 关键字 nextval
select name.nextval as 下一个值 from dual

-- 返回序列的当前值 关键字 currval
select name.currval as 当前值 from dual

--创建视图 关键字 view
create or replace view student_v
as select* from student
--查询视图
select * from student_v
--删除视图
drop view student_v

--存储过程 语法
CREATE[OR REPLACE] PROCEDURE<过程名> (

<参数1>,[方式l] <数据类型1>,

<参数2>,[方式2] <数据类型2>,

……)

IS|AS (is或as完全等价 )

[局部变量声明]

BEGIN

PL/SQL过程体

END<过程名>

--存储过程 关键字 procedure
create or replace procedure name(
--定义参数
)
is|as
begin
pl/sql过程体
end

--用EXECUTE命令调用存储过程的格式如下:
execute proc_name(par1,par2…);

--存储过程也可以被另外的PL/SQL块调用,调用的语句是:

declare par1,par2;

BEGIN

proc_name(par1,par2…);

END;

--在调用前要声明变量par1,par2

--删除存储过程:
drop procedure proc_name;


--函数:语法:

CREATE[OR REPLACE] FUNCTION<函数名> [(参数列表)]

RETURN数据类型

IS|AS (is或as完全等价 )

[局部变量声明]

BEGIN

PL/SQL函数体

END[<函数名>]

--函数的结束一定要使用return语句返回一个与声明匹配的值
--如;
create or replacefunction f_getinfo(str varchar2)
return varchar2
is
begin
dbms_output.put_line(‘test function ‘);
return ‘Hello ‘ || str;
end;

--函数的功能是返回一个值,因此可以用在SQL查询语句中,也可以用在PL-SQL语句块中。

--用SQL调用函数的格式如下

select fun_name(par1,par2…) from tablename;

--如:
select f_getinfo(‘Jack‘)from dual;

--删除函数可使用如下命令:

drop function funname;


--触发器 关键字 trigger

--功能:

--允许/限制对表的修改

--自动生成派生列,比如自增字段

--强制数据一致性

--提供审计和日志记录

--防止无效的事务处理

--启用复杂的业务逻辑

--类型:

--DML语句(DELETE,INSERT,UPDATE)

--DDL语句(CREATE,ALTER, DROP)

--数据库操作(SERVER ERROR,LOGON,LOGOFF,STARTUP,SHUTDOWN)

--语法:

CREATE[ OR REPLACE ] TRIGGER name

{BEFORE | AFTER } { event [ OR ... ] }

ON table [FOR [ EACH ] { ROW | STATEMENT } ]

[WHEN(condition) ]

plsql block| call procedure s_statement

--注意事项:

--触发器可以声明为在对记录进行操作之前(检查约束之前和 INSERT,UPDATE 或 DELETE 执行前)或之后(在检查约束之后和完成 INSERT, UPDATE 或 DELETE 操作)触发

--一个 FOR EACH ROW 执行指定操作的触发器为操作修改的每一行都调用一次

--SELECT 并不更改任何行,因此不能创建 SELECT 触发器。这种场合下视图更适合

--触发器和某一指定的表格有关,当该表格被删除时,任何与该表有关的触发器同样会被删除

--在一个表上的每一个动作只能有一个触发器与之关联

--在一个单独的表上,最多只能创建三个触发器与之关联,一个INSERT触发器,一个DELETE触发器和一个UPDATE触发器

--删除触发器语法:
drop trigger name ON table

oracle