Oracle内建数据类型
一、 字符数据
1、 char(size)
2、 varchar2(size) 最常用,最大长度4000字节
3、 nvhar(size)、nvarchar(size)
4、 varchar(size)
5、 long 建议使用LOB大型数据
6、 raw 存储二进制,建议使用LOB大型数据
二、 数字
1、 number(p,s)
三、 日期
1、 data
2、 timestamp
3、 timestamp with time zone
4、 timestamp with local time zone
5、 interval year to month
6、 interval day to second
四、 大型对象数据类型
BLOB、CLOB、NCLOB、BFILE 最大长度4G
五、 ANSI、DB2、SQL/DS
六、 用户自定义类型
create type
create type body
SQL语句分类
一、 数据查询语句(DQL)
SELECT
二、 数据操纵语句(DML)
INSERT、UPDATE、DELETE
三、 数据定义语句(DDL)
CREATE、ALTER、DROP
四、 数据控制语句(DCL)
GRANT、REVOKE、COMMIT、ROLLBACK、SAVEPOINT
具体SQL语句
一、 create table
创建表
create table
(
col_name,
col_name,
col_name
)
二、 alter table
修改表
alter table
[add]
[modify]
[drop column]
三、 rename
重命名表
rename old_table_name to new_table_name
四、 truncate table
删除表中存在的信息,只保留表结构,删除数据不可恢复
truncate table
五、 drop table
删除表
六、 drop table
七、 select
选择语句
select
from
[where ]
[group by ]
[having ] ——组函数只能写having之后
[order by]
1. dual表
2. sysdate系统时间
3. where条件中用到的运算
+-*/
||连接
=、!=、^=、、>、>=、0
end if;
end loop;
13、 for-loop语句
for counter in [reverse] lower_bound..higher_bound loop
sequence_of_statement
end loop;
如:
for I in 1..v_count loop
list(i) :=i*I;
end loop;
14、 while-loop语句
while condition loop
sequence_of_statements
end loop;
15、 游标定义
a、cursor cursor_name [(parameter[,parameter]…)]
[return return_type] is select_statement
b、open cursor_name
c、fetch cursor_name into variable[,variable,…]
d、close cursor_name
例:
declare
cursor c_emp_ename is select ename form emp;
v_ename emp.ename%type;
v_count binary_integer;
begin
select count(rowed)
into v_count
from emp;
open c_emp_ename;
for I in i..v_count loop
fetch c_emp_ename into v_ename;
dbms_output.put_line(vname);
end loop;
close c_emp_ename;
end
16、 cursor for循环及其替代语句
a、 先定义游标,之后用in(cursor_name)的方式使用该循环
cursor cursor_dept is select deptno ,dname from dept order by deptno;
for var in cursor_dept loop
在这里可以使用var来得到游标所指数据
end loop
b、 采用in(查询语句)的方式使用该循环
for var in(select deptno ,dname from dept order by deptno;) loop
在这里可以使用var来得到游标所指数据
end loop
17、 显示游标属性
%found:if c_emp_ename %fount then … end if;
% notfount:exit when c_emp_ename %notfound;
%isopen:if c_emp_ename % isopen then … end if;
%rowcount:提取次数if c_emp_name %rowcount >10 then … end if
18、 隐式游标(SQL游标)
用来处理insert、update、delete和返回一行的select into语句,对这几个语句进行操作时判断处理结果用的。
不可使用open、fetch和close进行操作。
也包含%fount、%notfount、%isopen(总是false)、%rowcount。
19、 异常处理
a、 异常的抛出方式
pl/sql运行时
raise exception_name
调用raise_application_erroe
b、 exception
when exception_name then
处理代码;
when exception_name then
处理代码;
when others then
处理代码;
c、 自定义异常
declare
exceptin_name exception;
begin
statements;
raise
exception
when then
end;
20、 子程序
1、 存储过程
create [or replace] procedure
()
is|as
[local declaration]
begin
executable statements
[exception handler]
edn [procedure_name]
2、 函数
create [or replace] function
(,……)
return is|as
[local declaration]
begin
executable statements
[exception handler]
end [function_name]
函数和过程都可以通过参数列表接收或返回另个或多个值;函数和过程的主要区别在于他们的调用方式,过程是作为一个独立的执行语句调用的,而调用函数后需将函数的返回值赋值给某一变量。
3、 包
包定义:
create [or replace] package package_name {as|is}
public_variable_declarations|
public_type_declarations|
public_exception_declarations|
public_cursor_declarations|
function_declarations声明|
procedure_specifications声明
end [package_name]
包主体:
create [or replace] package body package_name {as|is}
public_variable_declarations|
public_type_declarations|
public_exception_declarations|
public_cursor_declarations|
function_declarations实现|
procedure_specifications实现
end [package_name]
4、 触发器
create [or replace] trigger trigger_name 触发事件 触发事件
on {table_or_view_name|database}
[referencing [old [as] ][new [as] ]] //更新时用
[for each row [when condition]] //加上则为行级触发,否则为语句级触发
trigger_body
触发时间:
before:数据库动作之前触发器执行。
after:数据库动作之后触发器执行
instead of:触发器被触发,但相应的操作并不被执行,而运行的仅是触发器SQL语句本身。用在 使不可被修改的视图能够支持修改。
触发事件:
insert on:向表或视图插入一行时
update of:更新表或视图某一行时
delete on:删除表或视图某一行时
create:创建一个数据库对象时
alter:修改一个数据库对象时
drop:删除一个数据库对象时
start:打开数据库时触发触发器,在事件后触发
shutdown:关闭数据库时触发触发器,在事件前触发
logon:当一个会话建立时触发,事件前触发
logoff:关闭会话时触发,事件前触发
server:服务器错误发生时触发,事件后触发。
条件谓词:
inserting、updationg、deleting
: