ORACLE学习笔记(一)

来源:互联网 发布:淘宝开店交钱 编辑:程序博客网 时间:2024/06/05 13:30

一、整体操作:
1、关闭数据库(连接sqlplus以后):
 sql>shutdown immediate  :immediate表示每个用户处理完最后一个连接后,数据库关闭
2、打开数据库(连接sqlplus以后):
 sql>startup

3、ORACLE服务在UNIX系统关闭和重启

oracle 启动命令

su - oracle --转到oracle用户
sqlplus /nolog;
conn /as sysdba;
startup;
exit
lsnrctl start

关闭
su - oracle
sqlplus /nolog;
conn /as sysdba;
shutdown;
exit

4、保存缓冲区中的SQL语句到一个文件:
 sql>save c:/test.sql;
5、执行存放sql语句的文件:
 sql>@ c:/test.sql;

二、sqlplus语言:
1、变量替换方式:
 sql>select * from dept where deptno=&xx  :xx为一个变量
2、执行某个文件:
 sql>@c:/test.sql
3、查看一表的字段和类型:
 sql>desc 表名
4、查看当前的登录账号:
 sql>select user from dual;
5、替换表中的空值):
 sql>select a,nvl(b,'空值') b from abc;
6、连接分两种:内连接和外连接
 内连接:公共匹配的数据,不存在空值
 sql>select eid,ename,sex,dname from emp,dep where emp.did=dep.did;
 外连接:与内连接相反,存在数据空值
 sql>select eid,ename,sex,dname from emp,dep where emp.did=dep.did(+);
 sql>select eid,ename,sex,dname from emp,dep where emp.did(+)=dep.did;
7、批量插入数据:
 sql>insert into emp(eid,ename) select did,dname from dep;
8、创建表,并插入数据
 sql>create table ttt as select did,dname from dep;

三、pl/sql基础:
1、循环:
 declare
x number;
begin
--loop循环
 x:=0;
 loop
 x:=x+1;
 if x>=3 then
  exit;
 end if; 
 exit when x>=3;
 dbms_output.put_line('内:'||x);
 end loop;
 dbms_output.put_line('外:'||x);
end;
/

declare
x number;
begin
--while循环
 x:=0; 
 while x<=3 loop
  x:=x+1;
  dbms_output.put_line('内:'||x);
 end loop;
 dbms_output.put_line('外:'||x);
end;
/

declare
x number;
begin
--for循环
 x:=0;
 for i in 1..5 loop
  dbms_output.put_line('i='||i);
 end loop;

for i in reverse 1..5 loop
  dbms_output.put_line('i='||i);
 end loop;

 dbms_output.put_line('外:'||x);
end;
/

2、异常:
 1)系统异常:no_data_found
 2)自定义异常
例子:
--系统异常:
/*
declare
n varchar2(20);
begin
select ename into n from emp where eid='007';
dbms_output.put_line(n);
exception
when no_data_found then
dbms_output.put_line('没有数据');
end;
*/
--自定义异常:
declare
n varchar2(20);
e exception;
begin
 select ename into n from emp where eid='001';
 if n<>'xx' then
  raise e; 
 end if;
 dbms_output.put_line(n);
 exception
 when e then
 dbms_output.put_line('不是需要的部门');
end;
/

3、复合变量:记录
--定义记录
/*
DECLARE
TYPE myrecord IS RECORD
(
 --1)普通定义变量方式
 --eid varchar2(10),
 --ename varchar2(20)
 --2)用数据库中的字段定义变量
 eid emp.eid%TYPE,
 ename emp.ename%TYPE
);
--声明记录变量
my MYRECORD;
BEGIN
 --查询并赋值给变量
 SELECT eid,ename INTO my FROM emp WHERE eid='001';
 DBMS_OUTPUT.PUT_LINE(my.eid||','||my.ename);
END;
*/
--用数据库中的行类型定义记录
DECLARE
my emp%ROWTYPE;  --定义记录
BEGIN
 SELECT * INTO my FROM emp WHERE eid='001';
 DBMS_OUTPUT.PUT_LINE(my.eid||','||my.ename||','||my.sex);
END;
/
 

原创粉丝点击