Oracle10g学习笔记1

Oracle体系结构概述

物理结构:

1.控制文件.CTL

2.数据文件.DBF

3.日志文件.LOG

由控制文件来管理数据文件和日志文件。参数文件来寻找控制文件。                                   

 

可以用SQL语句查看系统视图,如DESC v$controlfile

查看控制文件的名称和状态:SELECT status,name FROM v$controlfile;

显示如下:

E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL

E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL

E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL

 

内存结构

系统全局区SGA:

1、数据库高速缓存区:内存区中用来频繁访问的区域

保持缓存池:在内存中频繁访问的,如代码表放在该缓存池

再生缓存池:想晶块在内存中排除的对象。

默认缓存池

2、共享池:其规模对数据库的性能有重要的影响。

库缓存区:包括共享SQL区(保留SQL的解释版本,以便再次使用时不必重新解释)和PL/SQL区(保留了SQL的过程、函数、触发器等)

字典缓存区:用来缓存字典信息。将最频繁使用的数据字典信息保存在内存中。

3、  redo日志缓存池:用来放置需要写入磁盘的redo记录。在Oracle中以循环的方式进行先进先出的缓存方式。

4、  大共享区:可选的特征。提供了分配大的内存块的隔离的区域。

5、  固定SGA:由Oracle独立控制。

 

逻辑结构:

表空间:1:n数据文件。包含多个段(segment)

1:n盘区 1:n(最基本单位)

只能指定表存储在哪个表空间中。

 

 

 

SQL PLUS基础

1、连接方式:sqlplus “sys/oracle as sysdba”   conn sys/oracle as sysdba

如果没有启动实例,则用sqlplus/nolog启动,再connect,然后startup

关闭:shutdown immediate

 

2help in 查询SQL plus 所有命令;SET命令:设置。

  

   List 查看在oracle缓冲区里的命令。用/执行缓冲区里的命令。DEL删除缓冲区里的某行,如DEL1 3,一至3行;ADD,简称A,添加命令;对于语句中的信息的保存,可以用save命令,如save c:\oracle\test.txt;执行保存的文件:@c:\oracle\test.txt

也可以用get c:\oracle\test.txt查看刚才保存的信息,调到缓冲区,但并不执行。

   col  :表示col命令的帮助。

Column命令:col deptno heading ”编号

DESCRIBEDESC,描述。

Comp:计算  computer

Break on pub 重复的显示一条

保存结果集(数据)spool c:\oracle\spool.txt  

                  Spool off

           

 

SQL语言基础

语言分类:

1 DLL,数据定义语言

    CREATECREATE TABLE abc(a varchar(10),b char(10));

    ALTERALTER TABLE abc ADD c NUMBER; 加一个c的字段,数据符为NUMBERALTER TABLE abc DROP COLUMN c;

    DROPDROP TABLE abc

2、        DCL,数据控制语言

GRANT,授权  GRANT SELECT ON dept TO sde;让sde用户可以选择dept

     REVOKE,授权收回  REVOKE SELECT ON dept FROM sde;

3、        DML,数据操作语言

SELECTSELECT * FROM ABC;

     INSERT INSERT INTO ABC(A,B) VALUES(‘XF’,’SDE’);

     DELETE DELETE FROM ABC 删除表中所有数据。

               DELETE FROM ABC WHERE A =’ORCL’

     UPDATEUPDATE ABC SET B=’AAA’; 将表中B的数值全部改成AAA

               UPDATE ABC SET B=’AAA’ WHERE A =’XF’;A=XFB值修改。

 

常用的系统函数

1、  字符

Length SELECT LENGTH(‘DSAHJKL’) FROM table; 查字符的长度

   SUBSTRSELECT SUBSTR(‘ABCDEFG’,2,3) FROM DUAL;

             结果:BCD                从第二个字符开始取3个字符串。

   TRIM   去掉空格

2、  日期

Sysdate 当前系统时间  select sysdate from dual;

Current_date  ALTER SESSION SET NLS_DATE_FORMATE=’DD-MON-YYYY HH24:MI:SS’;

 

3、  转换

TO_CHAR, 转为字符型 TO_DATE, 日期型 TO_NUMBER,整型,数值型

   SELECT TO_CHAR(SYSDATE, ‘yyyy-mm-dd hh24:mi:ss’) from dual;

4、  聚集函数, WHERE不能跟着聚集函数查询,而改用HAVING

SUM  SELECT SUM(PRICE) FROM BOOKS;  SUM(PRICE*QTY)价格*数量

   AVG   SELECT AVG(PRICE) FROM BOOKS; 平均值

   MAX  SELECT MAX(PRICE) FROM BOOKS; 最大值

   MIN

   COUNT  SELECT COUNT(PRICE) FROM BOOKS; 查询行数,COUNT(*)表的行数

 

5、  其他

USER  查询当前登陆的用户

DECODE  条件查询,布尔型的判断

SELECT SUM(DECODE(SEX,’’,1,0)) 男人数,ODE(SEX,’’,1,0)) 女人数, FROM E;

                 SELECT * FROM AA WHERE A2 IS NULL(NOT NULL);查询空值。

       ASC(DESC) SELECT * FROM AA ORDER BY A1 ASC(DESC);升降序排列。

       DISTINCT SELECT DISTINCT A1 FROM AA; 将重复的语句屏蔽查询。

       ALL      SELECT ALL A1 FROM AA; 将所有的语句进行查询。

 

分组语句 GROUP BY

SELECT PUB, SUM(PRICE*QTY) FROM BOOKS GROUP BY PUB;

SELECT选择的真正的字段,必须显示在GROUP BY后面,否则报错。

 

模糊查询  LIKE

SELECT * FROM AA WHERE A1 LIKE ‘A%’;

SELECT * FROM AA WHERE A1 LIKE ‘%A%’;只要包含A,都查询出来。

 

表的连接  JOIN ON

内连接:进行连接的两个表对应的相匹配的字段完全相同。

外连接:左(右)连接,都是不完全匹配的,称为外连接

 

子查询 

SELECT * FROM E WHERE ID IN (SELECT ID FROM D);  无关子查询,没有涉及父查询。

相关子查询:

SELECT * FROM E WHERE ID IN (SELECT ID FROM D WHERE ID= E.ID AND ID=’03’);

在子查询中不可以用*进行查询,除非在EXISTS中查询:

WHERE EXISTS (SELECT ID FROM D);  NOT EXISTS  ; 

 

INTERSECT 返回查询中都匹配的数据行

 

INSERT INTO e(eid,ename) SELECT id, name, FROM d;d表的结果集插入到e表中。

posted @ 2008-07-08 11:44  常ヤ訁笑囧  阅读(443)  评论(0编辑  收藏  举报