--列出系统中数据文件的各项属性
SELECT FILE_NAME,FILE_ID,RELATIVE_FNO,BYTES,AUTOEXTENSIBLE
FROM SYS.DBA_DATA_FILES
ORDER BY FILE_ID
--列出日志文件
SELECT * FROM V$LOGFILE
SELECT * FROM V$LOG
--创建一个视图
CREATE VIEW EMP_VIEW1 AS
SELECT EMPNO,ENAME,DEPTNO
FROM SCOTT.EMP;
--系统的存储过程
(pname varchar2, uname varchar2, dbname varchar2,
flags varchar2, rc OUT varchar2) is
status diutil.ub4 := 0;
lutype varchar2(10);
begin
rc := '';
diutil.pstub(pname, '', uname, dbname, '', status, flags, lutype);
if (status <> diutil.s_ok and status <> diutil.s_defaultVal) then
if (status = diutil.s_subpNotFound) then
rc := '$$$ s_subpNotFound';
elsif (status = diutil.s_stubTooLong) then
rc := '$$$ s_stubTooLong';
elsif (status = diutil.s_logic) then
rc := '$$$ s_logic';
elsif (status = diutil.s_notInPackage) then
rc := '$$$ s_notInPackage';
elsif (status = diutil.s_notv6Compat) then
rc := '$$$ s_notv6Compat';
else rc := '$$$ s_other';
end if;
else rc := lutype;
end if;
end;
(pname varchar2, uname varchar2,
stubSpec in out varchar2, stubText in out varchar2,
flags varchar2 := '6') is
rc varchar2(40);
ty varchar2(5);
cursor tub (una varchar2, dbna varchar2, luna varchar2, luty varchar2) is
select line from sys.pstubtbl
where (una is null or username = una) and
(dbna is null or dbname = dbna) and
lun = luna and lutype = luty
order by lineno;
begin -- main
sys.pstubt(pname, uname, '', flags, rc);
if rc like '$$$%' then stubText := rc; return; end if;
if not (rc = 'PKG' or rc = 'SUB')
then stubText := '$$$ other'; return;
end if;
stubSpec := '';
stubText := '';
if rc = 'PKG' then
for s in tub(uname, '', pname, 'PKS') loop
stubSpec := stubSpec || s.line;
end loop;
end if;
if rc = 'PKG' then ty := 'PKB'; else ty := 'SUB'; end if;
for s in tub(uname, '', pname, ty) loop
stubText := stubText || s.line;
end loop;
end;
(pname varchar2, uname varchar2, dbname varchar2,
flags varchar2, rc OUT varchar2) is
status diutil.ub4 := 0;
lutype varchar2(10);
begin
rc := '';
diutil.pstub(pname, '', uname, dbname, '', status, flags, lutype);
if (status <> diutil.s_ok and status <> diutil.s_defaultVal) then
if (status = diutil.s_subpNotFound) then
rc := '$$$ s_subpNotFound';
elsif (status = diutil.s_stubTooLong) then
rc := '$$$ s_stubTooLong';
elsif (status = diutil.s_logic) then
rc := '$$$ s_logic';
elsif (status = diutil.s_notInPackage) then
rc := '$$$ s_notInPackage';
elsif (status = diutil.s_notv6Compat) then
rc := '$$$ s_notv6Compat';
else rc := '$$$ s_other';
end if;
else rc := lutype;
end if;
end;
(name varchar2, subname varchar2, usr varchar2,
dbname varchar2, dbowner varchar2,
txt in out varchar2) is
status diutil.ub4;
begin -- main
diutil.subptxt(name, subname, usr, dbname, dbowner, txt, status);
if (status <> diutil.s_ok) then
if (status = diutil.s_subpNotFound) then
txt := '$$$ s_subpNotFound';
elsif (status = diutil.s_stubTooLong) then
txt := '$$$ s_stubTooLong';
elsif (status = diutil.s_logic) then
txt := '$$$ s_logic';
elsif (status = diutil.s_notInPackage) then
txt := '$$$ s_notInPackage';
else txt := '$$$ s_other';
end if;
end if;
end subptxt2;
--存储过程的一般格式
CREATE OR REPLACE PROCEDURE "SYS"."PSTUBT" (pname varchar2, uname varchar2, dbname varchar2,
flags varchar2, rc OUT varchar2) is
status diutil.ub4 := 0;
lutype varchar2(10);
begin
rc := '';
diutil.pstub(pname, '', uname, dbname, '', status, flags, lutype);
if (status <> diutil.s_ok and status <> diutil.s_defaultVal) then
if (status = diutil.s_subpNotFound) then
rc := '$$$ s_subpNotFound';
elsif (status = diutil.s_stubTooLong) then
rc := '$$$ s_stubTooLong';
elsif (status = diutil.s_logic) then
rc := '$$$ s_logic';
elsif (status = diutil.s_notInPackage) then
rc := '$$$ s_notInPackage';
elsif (status = diutil.s_notv6Compat) then
rc := '$$$ s_notv6Compat';
else rc := '$$$ s_other';
end if;
else rc := lutype;
end if;
end;
--创建视图
create view v_temp
as
select * from t_tmp;
--删除视图
drop view v_temp;
--创建表
create table lz_temp
(a varchar2(20),
b varchar2(30),
v varchar2(30));
--为表添加列
alter table lz_temp add
( d char(8));
--查看表结构
desc lz_temp;
--创建一个名为:LZ 的角色
create role lz;
--为角色授权
grant insert on tablename_a to lz;
grant insert,delete on tablename_b to lz;
grant select on tablename_c to lz;
grant select,delete,insert,update on tablename_d to lz ;
--把角色赋予用户
grant lz to ops$abbey;
grant lz to ops$teplownd;
grant lz to ops$lane;
grant lz to public;
--创建非唯一索引
create index index_name on lz_temp(a);
--创建唯一索引
create unique index i_t2 on lz_temp(b);
--创建多索引
create unique index i_t3 on lz_temp(a,b,c);
create index i_t3 on lz_temp(a,b,c);
--定义参数
define a='aa'
select * from lz_temp where a='&a';
--报表演示
ttitle center '信息区' right 第 format 9 sql.pno 页
btitle center 'xxx公司'
repheader page center 'sql.plus报表演示'
repfooter skip 2 left sql.user '编制'
set pagesize 13
--PL*SQL程序的组成
DECLARE --声明部分 常量、变量以及用户定义的数据类型
V_NAME VARCHAR2(10);
BEGIN --执行部分 实现数据操作功能
SELECT ENAME INTO V_NAME
FROM EMP;
EXCEPTION --异常错误处理功能
WHEN TOO_MANY_ROWS THEN
''''''
END;
--ORACLE 的数据类型
数字型 NUMBER、 BINARY_INTEGER、 PLS_INTEGER
字符型 CHAR、 VARCHAR2、 NCHAR、 NVARCHAR2、 LONG、 ROWID、 UROWID
二进制型 LONG RAW、 RAW
日期型 DATE
布尔型 BOOLEAN
--只有一个值满足条件,就返回TRUE(ANY)
SELECT * FROM L_T WHERE A =ANY ('aaa','BBB');
--满足全部条件,就返回TRUE(ALL)
SELECT ENAME,DEPTNO
FROM EMP
WHERE SAL > ALL(SELECT SAL FROM EMP WHERE DEPTNO=10)
AND DEPTNO <> 10
--连接运算符(||)
SET SERVEROUTPUT ON;
DECLARE
VAR1 CHAR(10):='THIS ';
VAR2 CHAR(20):='IS AN EXAMPLE ';
VAR3 CHAR(20):='IS ANOTHER EXAMPL';
VAR4 CHAR(30);
BEGIN
VAR4 :=VAR1||VAR2;
DBMZ_OUTPUT.PUT_LINE( VAR4);
VAR4 :=VAR1||VAR3;
DBMZ_OUTPUT.PUT_LINE( VAR4);
END;
--集合运算符
1 UNION :返回两个集合的并集,删除其中的重复行
2 UNION ALL :返回两个集合的并集,包括其中的重复行
3 INTERSECT :返回两个集合的交集
4 MINUS :返回两个集合的差集
select * from lz_temp
union
select * from t_tmp;
--循环结构
1 LOOP
[<<循环标号>>]
LOOP
语句
END LOOP [循环标号];
2 WHILE - LOOP
[<<循环标号>>]
WHILE 条件表达式 LOOP
语句
END LOOP [循环标号];
3 FOR - LOOP
[<<循环标号>>]
FOR 循环变量 IN [REVERSE] 初值表达式..终值表达式 LOOP
语句
END LOOP [循环标号];
--分组函数
avg
count
glb
lub
max
min
stddev
sum
variance
--其他函数
bfilename
decode
dump
empty_clob/empty_blob
greatest_lb
least
least_ub
nvl
uid
user
userenv
vsize
部分DDL语句列表 //DDL 语句是自动提交的,不能回滚
alter procedure
alter table
analyze 收集数据库对象的性能统计值并送入基于代价的优化器
alter table add constraint 在已有的表上添加约束
create table
drop index
drop table
grant
truncate 删除表中的所有行
revoke 从用户或数据库角色回收权限
--常用的比较符
=
!=
<>
^= !=
<
>
<=
>=
in 包括
not in 不包括
BETWEEN A AND B 大于等于A与小于等于B
NOT BETWEEN A AND B 不大于等于A与小于等于B
LIKE '%TIN%' 包括'TIN'