首页 > 代码库 > 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