OCP学习笔记.docx

上传人:b****2 文档编号:14427237 上传时间:2023-04-23 格式:DOCX 页数:30 大小:31.79KB
下载 相关 举报
OCP学习笔记.docx_第1页
第1页 / 共30页
OCP学习笔记.docx_第2页
第2页 / 共30页
OCP学习笔记.docx_第3页
第3页 / 共30页
OCP学习笔记.docx_第4页
第4页 / 共30页
OCP学习笔记.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

OCP学习笔记.docx

《OCP学习笔记.docx》由会员分享,可在线阅读,更多相关《OCP学习笔记.docx(30页珍藏版)》请在冰豆网上搜索。

OCP学习笔记.docx

OCP学习笔记

 

OCP

学习笔记

 

Unit1

PreparingforOCPDBAExamI:

SQLandPL/SQL

 

1.CHAPTER1SelectingDatafromOracle

 

1.1Oracle’sRDBMSandORDBMSImplementations(Oracle的RDBMS和ORDBMS的实现)

1.1.1OracleGlobalArea(SGA)内存组成

⏹BufferCache:

用户数据文件读取到内存中让用户进行读取或者处理,在一段时间后写回到磁盘中。

⏹LogBuffer用来存储日志

⏹SharedPool

⏹LargePool

1.1.2OracleDiskComponents.(Oracle的磁盘组成)

⏹Datafile用来存储Oracle的字典文件和应用程序的数据库对象。

Datafile不断增长,BufferCache的内容就来自于此。

⏹RedoLogs用来存储Redo日志文件。

⏹ControlFiles控制文件,记录oracle磁盘组成的位置等资料。

可以有多个控制文件,当数据库启动时读取,当数据文件添加或删除时更新。

⏹PasswordFiles密码文件,用来存储加密的oracle用户密码。

⏹ParameterFiles参数文件,数据库的init.ora

1.1.3Oracle的服务后台进程

⏹进程名:

oracle

1.1.4WhatanORDBMDIs

⏹存储用户定义的数据类型做为对象表存储在数据库中。

⏹关联方法到对象表定义

⏹扩充关系设计到用户定义的数据类型的列中。

1.2PL/SQL的用途和优点

⏹容易学习和使用

⏹存储在数据库中

⏹和Oracle数据库结合得非常好

⏹特别擅长管理大的数据块

⏹带有大量的oracle支持的代码来帮助完成任务

⏹支持匿名和非匿名的程序

⏹支持封装和模块化

⏹支持重载

⏹允许程序员包装他们自己的Oracle代码

⏹支持高级的数据类型

1.3编写基本的执行语句

⏹$sqlplus

⏹SQL>select*fromemp;

⏹Sqlplus–s为静默模式

⏹;为语名的结束

⏹@脚本名运行定义好的脚本

⏹get脚本名将定义好的脚本文件导入到命令行

⏹nvl(列名,如果是null的值)例:

selectempno,nvl(mgr,0)fromemp

⏹ColumnAliases列别名例selectempno,nvl(mgr,0)asmgrfromemp

Ps:

as关键字可以省略,但是为了明朗,建议保留

⏹连接多个列,用concat或者”||”,(两个管道符),concat只能带两个参数。

例:

selectename||concat(’的主管是:

’,nvl(mgr,0))asManagerfromemp

1.4SQL和SQL*Plus命令的不同点

⏹命令修改:

如果输入的命令有错误,可以调回修改。

例:

C/old_value/new_value

⏹修改后用”/”执行命令

⏹调用ed或edit可以调用系统的编辑器来编程命令。

⏹修改编辑器的命令:

define_editor=’vi’

1.5其它SQL*PLUS命令

⏹describetablename返回一个表的的说明,即表结构

⏹list当前工作缓冲区

⏹delnumber从缓冲区中删去命令

⏹appendstring加上命令

⏹clearbuffer清除缓冲区

⏹input进行行编辑sql语名

⏹run运行缓冲区中的脚本

⏹linenumber指定命令行

⏹spool文件名,将输入记录在外部文件中

⏹save文件名,将缓冲区的记录记录在文件中

1.6筛选和排序数据

⏹orderby字段名,数据排序,也可以用字段序号,或者别名

⏹desc反向排序

⏹where条件名,限制返回数据

⏹in(1,2,3,4,5)在一个序列中

⏹between1and100介于2者之间

⏹like%ann%相似

⏹soundex读音相似

1.7使用单行的函数

⏹decode函数decode(column,val1,return1,val2,return2…)根据字段值和val1来选择return1的值

1.7.1文本函数

⏹lpad(x,y[,z])和rpad(x,y[,z])

⏹lower(x)返回小写

⏹upper(x)返回大写

⏹initcap(x)把首字母变为大写

⏹length(x)长度

⏹substr(x,y[,z])返回字符的子字符串

⏹instr(x,y)检查y是否在x中

1.7.2trim()函数

⏹ltrim,rtrim,trim([keyword]from字段名)删除首尾的空格或字符

selectcol_1,trim(both‘-‘fromcol_1)astrimmedfromexample;

1.7.3Mathfunctins数学函数

⏹Abs(x)取得绝对值

⏹Ceil(x)取不小于此数值的整数

⏹Floor(x)取不大于此数值的整数

⏹Mod(x,y)取余数

⏹Round(x,y)将x四舍五入到y位小数,如y为负值,则向左移

⏹Sign(x)取一个数值的符号,-1或1

⏹Sqrt(x)平方根

⏹Trunc(x,y)将数据的小数位减少到y的数值

⏹Vsize(x)取数据x的存储长度,单位字节

1.7.4列表函数

⏹greatest(x,y,z….)取列表的最大值

⏹least(x,y,z…)取列表的最小值

1.7.5日期函数

⏹sysdate系统日期

⏹add_months(x,y)在x加上y个月,返回日期

⏹last_day(x)返回这个月的最后一天

⏹months_between(x,y)两个日期之间的天数

⏹new_time(x,y,z)将时区y的时间x转化为时区z的时间

⏹next_day(x,y)时间x的下一个星期x

⏹设置时间格式:

altersessionsetNLS_DATE_FORMAT=’DD-MON-YYYYHH24:

MI:

SS’;

⏹时间转换的格式问题:

DD:

两个数字的日期

DAY:

日期的全部(星期几)

MON:

三个字母的月份

MONTH:

整个月份词

YY:

两个数字的年份

YYYY:

整个年份

RR:

两个数字的年份(兼容两千年问题)

RRRR:

整个年份(兼容两千年问题)

HH:

两个数字的时间

AM、PM:

上午下午

HH24:

用24小时制表示时间

MI:

两个数字的分钟

SS:

两个数字的秒钟

1.7.6转换函数

⏹to_char(x)转换到字符串

⏹to_number(x)转换到数字

⏹to_date(x[,y])转换到日期

⏹to_multi_byte(x)转换单字节字符到多字节字符

⏹to_single_byte(x)转换到单字节字符

⏹chartorowid(x)将转换转化成为Oracle的ROWID

⏹hextoraw(x)将16进制值x转化成raw(binary)值

⏹rawtohex(x)将raw值x转化成为16进制值

⏹convert(x[,y][,z])将x从z类型转换到y类型

⏹translate(x,y,z)

CHAPTER2AdvancedDataSelectioninOracle

2.1DisplayDatafromMultipleTables(多表查询)

⏹连接多个表

⏹表别名:

表名表别名,如empa,有助于更好的书写查询主语句

⏹selecta.ename,b.dname,b.locfromempa,deptbwherea.deptno=b.deptno

⏹多表字段如果不相同,可以不用写表名,相同的字段名前一定要接表名。

⏹(+)OutJoinoperator,外部连接符,在一对多的情况下,进行外部连接。

2.2GroupFunctionsandTheirUsers(分组函数和用途)

2.2.1现有的分组函数

⏹arg(x)列x的平均数

⏹count(x)列x的非null值的个数,使用count(rowed)可以计算行数

⏹max(x)列x的最大值

⏹min(x)列x的最小值

⏹stddev(x)计算x列标准偏差

⏹sum(x)计算列x的总数

⏹variance(x)计算variance的不一致性,即方差

2.2.2使用groupby子句

⏹groupby字段名

⏹在select字名在加上groupfunction

⏹可以用having限定返回的行,相当于where

⏹group函数可以用orderby排序

⏹例:

SQL>getgroupby

1selectjob,round(avg(sal),2)assal

2fromemp

3groupbyjob

4havinground(avg(sal),2)>=3000

5*orderbysaldesc

2.2.3使用子查询

⏹子查询比父查询先执行

⏹单行子查询,只返回一行的子查询,如:

SQL>list

1selectename,deptno,sal

2fromemp

3wheredeptno=

4(selectdeptnofromdept

5*wheredname='ACCOUNTING')

⏹多行子查询条件语句用in函数

⏹distinct限定返回的结果,去掉重复的记录`

⏹多列子查询,主查询的条件语句必须放在括号中,另外主查询的条件语句的顺序也必须和子查询的select子句中的顺序一至。

例:

1selectdeptno,ename,job,sal

2fromemp

3where(deptno,sal)in

4(selectdeptno,max(sal)

5fromemp

6groupbydeptno)

7*orderbysaldesc

⏹groupby语句忽略null值,如果想在查询中返回NULL值,应使用其它的查询方法。

⏹from子句的子查询,子查询的结果被当成表使用。

2.3ProducingReadableOutputwithSQL*Plus(用SQL*Plus产生可读输出)

2.3.1输入参数

⏹在参数前加上&字符。

⏹setdefine?

来将参数标识符设为?

⏹Define变量名,预先定义好一个变量

⏹Undefined变量名,取消变量定义

⏹用accept来接收变量的值,然后在后面的语句中直接引用。

2.3.2定制SQL*Plus环境

⏹set变量名值

⏹方括号中为缩写,大括号中为允许的值

ØARRAYSIZE[ARRAY]{I5|n}从数据库中一次读取的行数

ØCOLSEP[COLSEP]{|text}两列之间打印的符号

ØFEEDBACK[FEED]{6|n|OFF|ON}显示查询选择至少n个记录时返回的记录数。

ØHEADING[HEA]{ON|OFF}是否打印列标题

ØLINESIZE[LIN]{80|n}设置每行显示的最大字符数

ØPAGESIZE[PAGES]{24|n}设置每页行数

ØPAUSE[PAU]{OFF|ON|text}控制运行报表时的终端滚动。

ØTERM[TERM]{OFF|ON}控制从命令文件执行的命令产生的终端输出提示。

ØSQLPROMPT[SQLP]{SQL>|TEXT}设置SQL*Plus的命令提示

ØECHO[ECHO]{OFF|ON}控制start命令是否在执行命令文件中的每个命令。

⏹COLUMN{col}FORMAT{fmt}HEADING{string}定义列col的显示格式为fmt另外列表头提示为string

⏹UNDERLINE[UND]{-|c|ON|OFF}把表头下划线变为字符c,或者关闭

⏹Breakon某列将某列列值相同的数值只显示第一个

⏹Compute显示列名of表中列名on依据,生成简单的报表

CHAPTER3CreatingOracleDatabaseObjects

3.1建立表

⏹使用describe表名来生成表结构注释,也可以缩写为desc

⏹建立表用createtable表名(字段名数据结构)

⏹建立临时表createglobaltemporarytable表名

⏹以另一个表为基准建立新表createtable表名as语句

⏹表命名规则

Ø名称简明扼要,硬规则:

以字母起头,1-30个字符,但数据库最多8个字符,数据库链接最多128个字符,名称大小写无关软规则:

要易懂

Ø将子表名与父表名相联系,硬规则:

一个用户不能拥有或引用两个同名对象,软规则:

用外键联系的表(即父/子关系)应共享部分相同表名。

Ø两个表的外键列应同名硬规则不要用dual作表名,软规则:

父子关系中多表共享的列应同名

Ø相关对象应与表相联系软规则:

应当给与表相关对象有意义的名字以便与表相联系,如PK_EMP_01(EMP的主键)

Ø避免使用引号、关键字和非字母数字字符硬规则:

不要使用以SYS开头的表名;表名和列名只能使用下列三个特殊字符:

#号、_号和$号;数据库名、全局数据库名和数据库链接名不要使用欧洲字符集中的特殊字符;对象名不能使用oracle保留字,如select等;根据访问数据库对象的产品,名称还受到更多保留字的限制。

3.2数据类型和列定义

3.2.1Datatypesandtheirdecriptions:

⏹Varchar24000字节的文本字符串,可变长度

⏹Nvarchar2(n)可变长度的单字节或多字节变长文本字符串,最长4000字节

⏹Char(n)包含长度为n字节的定长文本字符串,最多2000个

⏹Nchar(n)长度为n字节的单字节或多字节定长文本字符串,在oracle中n可以取最大2000字节

⏹Number(n,m)包含最多n位的数字数据,在oracle中n最大38位。

小数点后有m位。

默认为38位

⏹Date包含日期信息,七位

⏹Raw二进制数据,oracle中最多2000字节,可变长

⏹Long包含文本数据,最多2GB

⏹Longraw包含二进制数据,最多2GB

⏹Rowed包含表中的行的地址

⏹Blob存储最多4gb的大型非结构化二进制对象数据

⏹Clob存储最多4gb的大型数据库字符集数据

⏹Nclob存储最多4GB的大型单字节或多字节基于unicode字符的字符集数据

⏹Bfile在oracle数据库之外存储大型非结构化操作系统文件指针

3.2.2文本类型数据

⏹CHAR和Varchar2,varchar2保存4000个,并且变长,而char为定长

3.2.3Number数据类型

⏹插入的值超过允许数位时,只要超出的位数在小数点后面,oracle总是四舍五入

⏹如果超出的位数在小数点前面,则oracle返回错误.

3.2.4Oracle中的其它数据类型

⏹Date数据类型,从公元前4713年12月31日算起的天数

⏹LONG和RAW和LONGRAW,数据不到4KB时,存储在表内,否则存储指针,数据存放在表外。

可以有多个blob和clob和nclob列,LONG存储在表内,一个表只能有一个LONG类型的字段。

⏹ROWID,为伪列,标识oracle如何定位行。

3.2.5列默认值

⏹使用default子句定义表的使用默认值填充列

如:

SQL>list

1createtabledisplay

2(colvarchar2(10),

3*col2numberdefault0)

3.3改变表定义

3.3.1在表中增加新列

⏹两个列不能同名

⏹只能有一个long或LONGRAW数据类型的列

⏹列数不能大于1000

⏹altertable表名add(列名数据类型);

3.3.2修改列数据类型

⏹altertable表名modify(列名数据类型):

⏹通常可接受的操作:

Ø增加varchar2和CHAR列的长度

Ø增加number列的长度

⏹减少一个列长度的步骤:

Ø将该列的数据转存到另外一个表中

Ø将该列的数据全部设为空

Ø改变该列的长度

Ø将数据转存回来

Ø删去建立的临时表

Ø例:

SQL>createtabledisplay2(col2)asselectcolfromdisplay;

SQL>updatedisplaysetcol=null;

SQL>altertabledisplaymodify(colvarchar2(5));

SQL>updatedisplaysetcol=(selectcolfromdisplay2);

SQL>droptabledisplay2

3.3.3从表中删除列

⏹方法一先设无用,再删除无用列

Ø将该列设为无用的列:

altertable表名setunusedcolumn列名;

Ø删除无用列:

altertable表名dopunsedcolumns;

⏹方法二立即删除

Øaltertable表名dropcolumn列名;

3.4表的删除、更名与截断表

3.4.1删除表

⏹droptable表名;

⏹不能撤销命令

⏹必须有权限

3.4.2截断表

⏹truncate表名

⏹截断为删除表的所有数据

⏹不改变表定义

⏹不能恢复

3.4.3更名表

⏹rename表名to表名2

⏹altertable表名renameto表名2

3.4.4注释对象

⏹commentontable表名is语名

⏹commentoncolumn表名.列名is语句

3.5包括约束

3.5.1描述约束

⏹作用

Ø建立多个表间真实具体的关系,是典型数据库应用程序所共有的

Ø约束防止’不良’数据进入数据库中

Ø在表间存在相关性时防止删除数据

⏹约束类型

Ø主键约束:

规定列或列组中的标识oracle表中行的维一性,notnull

Ø外建约束:

表示基于共享列的两个表之间的父子关系

Ø唯一约束:

对个列的值要求唯一性

Ø检查约束:

保证这个列的值符合指定的静态条件。

Ø非null约束:

不允许列中放入null值

3.5.2生成与维护约束

⏹生成主键约束

Ø表约束constraintpk_emplolyee_01primarykey(empid)

Ø列约束empidvarchar2(5)constraintpk_employee_01primarykey

Ø简化列约束声明:

department_numnumber(5)primarykey

⏹复合主键

Ø如果要生成两个或多个列构成的复合主键,则要把列名放在括号中,在关键字primarykey后面出现

Ø复合主键的惟一性通过组合主键中所有列的值来确定

⏹定义外键约束

Ødepartment_numnumber(5)referencesdepartment(department_num)

Øondeletesetnull

⏹定义唯一键约束

Øgovt_idnumber(18)unique

Ø只是非null列的惟一

⏹定义其它约束

Ø字段名数据类型notnull

Ø字段名数据类型check(条件)

⏹约束生成的索引

Ø声明惟一约束和主键约束时,也生成支持惟一性的惟一索引,约束定义的所有列的所有值都进行索引

Ø索引名与约束同名

⏹在现有表中增加完整性约束

Ø格式为:

altertabletable_nameaddconstraintconstraint_nametype(define)

Ø主键约束:

pk_tablename_01primarykey(empid)

Ø外键约束:

fk_tablename_01foreignkey(department_num)

referencesdepartment(department_num);

Ø检查约束:

ck_tablename_01check(salary<=250000)

Ø惟一约束:

uk_tablename_01unique(govt_id)

Ø非空约束:

直接modify表altertabletable_nameemployeemodify

(lastnamenotnull);

⏹关闭约束

Ø关闭主键约束:

altertableemployeedisableprimarykey;

Øaltertableemployeedisableconstraintuk_employee_01(直接关闭约束名)

Ø当有外键依赖于主键时,在末尾加上cascade

⏹打开关闭的约束

Øaltertableemployeeenableprimarykey;

⏹打开列中现有数据违反关闭的约束

Ø由于数据违反约束,故不能打工关闭的约束

Ø使用exceptions表来找出违反约束的行

Ø打开的语句exceptionsintoexceptions表

Ø修改违反约束行的值

Ø打开约束

⏹删除约束

Øaltertabletable_namedrop约束类型(语句)cascade

Ø非null约束用表修改语句来删除altertabletable_namemodify(字段名null)

⏹删除具有外键约束引用的父表

Ø由于有外键引用,删除表或主键时会出错

Ø使用cascadeconstraints关键字可以删除子表的主键约束

⏹oracle中的约束延迟性

Ødefererrableinitiallydeferred将约束定为可以延迟,用非惟一索引存储主键值。

允许在主键存储数据,直到事务结束之后再报告约束违犯错误。

Ødefererrableinitiallyimmediate用惟一索引存储主键值,在输入数据时执行主键约束。

Ø使用enablenovalidateprimarykey可以起用约束,但是不验证约束列中的所有数据.

CHAPTER4操作Oracle数据

4.1Orac

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1