oracle基础学习

sqlplus登陆oracle:
法1:1.cmd -> 2.输入  sqlplus "sys/123 as sysdba"

法2:打开oracle 运行sql命令:
SQL> connect sys as sysdba
输入口令:[输入密码,我此处为123]
已连接。
-------------------------------------------------
SQL> 
desc v$controlfile [控制文件]
select * from v$controlfile;
[数据文件]
select name from v$datafile;
select file#,status,name from v$datafile;
[日志文件]
 select * from v$logfile;

参数文件
SPFILEXE.ORA
oracle的物理结构:
参数文件->控制文件->(数据文件/日志文件)
->=找到
-------------------------------------------------
内存结构
实例的SGA(系统全局区域):
包括:
DB buffer,共享池,大共享区,Redo buffer,固定SGA;
1.DB高速缓存池(默认缓存池,保持缓存池,再生缓存池)
2.共享池:库缓存池(共享sql区,PL/SQL区),字典缓存区

-------------------------------------------------
oracle数据库逻辑结构:
tablespace>segment>extent>block;
[图]

-------------------------------------------------
sqlplus/nolog
connect sys/test1234 as sysdba
startup
startup mount (启动实例,控制文件,但不启动数据文件,
便于热备份)
startup nomout (只启动实例,在控制文件丢失时)

shutdown immediate 关闭
shutdown
shutdown transactional

浏览器中使用isqlplus
e.g.:
http://machine-name:5560/isqlplus

常用命令:
help index
? @
? set

list查看缓冲的命令
/ 执行缓冲区中的命令
save c:\test.sql --保存缓冲区中的命令到磁盘文件
@ c:\test.sql --执行sql文件

SQL> show sga

Total System Global Area  285212672 bytes
Fixed Size                  1287016 bytes
Variable Size             104860824 bytes
Database Buffers          176160768 bytes
Redo Buffers                2904064 bytes

-------------chapter 3: sql basic-----------------------------
1.DDL(create,alter,drop)
2.DCL(grant,revoke)
3.DML(select,insert,delete,update)

grant select on dept to [user_name]
revoke select on dept from tt;
------------------------------------------------------
常用系统函数
1.字符
length,ltrim,replace,rtrim,substr,trim

SQL>  select length('中国abc') from dual;
SQL>  select lengthb('中国abc') from dual;	--字节数

2.日期
sysdate,current_date,next_day

SQL> alter session set nls_date_format='dd-mon-yyyy hh:mi:ss';

会话已更改。

3.转换
to_char,to_date,to_number

4.聚集函数
sum,avg,max,min,count

5.其它
user,decode,nvl

select user from dual;--当前用户
--decode使用方法:当字段为'x'值时,计数1,否则计数0
select sum(decode(sex,'男',1,0)) 男人数,sum(decode(sex,'女',1,0)) 

女人数 from e;
nvl相当于sqlserver里的isnull(column_name,'')
select a1,nvl(a2,'未输入') from table_name;
select * from aa where a2 is null;

--交集
select id from e
intersect
select id form d;

--从select 语句创建表
create table t as 
select eid,ename from e where eid='001';


-------------chapter 4:pl/sql---------------------------------
PL/SQL,oracle对sql语言的扩展.pl/sql借助于pasal的语法.不区分大小写
pl/sql 块结构
pl/sql块结构如下:

declare
...
begin
...
exception
...
end;
/

e.g.:

set serveroutput on size 10000	-- 开启output

--行注释
/*块注释*/
DECLARE
X VARCHAR2(10);
xxX VARCHAR2(10):='abcde';
BEGIN
X:='THIS IS ..';
DBMS_OUTPUT.PUT_LINE('XX的值:'|| x);
DBMS_OUTPUT.PUT_LINE('XxX的值:'|| xxx);
END;
/

可以使用integer,string(10)

-----------------------
分支
1.
if .. then
...
elsif .. then
...
else
...
end if

2.case语句
case
when a=1 then ...;
when a=2 then ...;
when a=3 then ...;
else
    ...;
end case;

posted @ 2011-07-07 01:31  庚武  Views(293)  Comments(0Edit  收藏  举报