04 2012 档案

摘要:记录 RECORD只能在PL/SQL 中运行处理单行数据,它可以用来表示一行数据,数据的类型可以自己定义,也可以基于表来定义,相对于包、对象、嵌套表来说,他也能创建多个属性来保存数据,但是他只能一行,不像嵌套表那样可以无限行,也不能声明内部函数。其实就是几个数据排成一行的统一操作而已。创建PL/SQL RECORD不像对象 、嵌套表,可以 用CREATE TYPE ,然后可以多次使用,RECORD 只能在pl块中定义DECLARE TYPE record_type IS RECORD( var_name1 type [,var_name2 type…] ); record_n... 阅读全文
posted @ 2012-04-19 23:47 A_zhu 阅读(5494) 评论(0) 推荐(0)
摘要:以下数据出于《Oracle.10g.Pl.SQL编程》CUBE ROLLUP 是用于统计数据的通常只用 GRUOP BY得到的数据如下SELECT deptno,job, avg(sal)FROM table_nameGROUP BY (deptno, job);加上 ROLLUP如果用 CUBE注意不同,第二个表多了每行的平均数,还有全部数据的平均数第3个表在第二个表上多了每列的平均数下面介绍这两个函数:ROLLUP为每个分组返回一条小计记录,并为全部分组返回总计SELECT deptno,job, avg(sal)FROM table_nameGROUP BY ROLLUP(deptno, 阅读全文
posted @ 2012-04-18 15:33 A_zhu 阅读(1655) 评论(0) 推荐(0)
摘要:查询时将行较少的表连接到后面连接是使用完全限定的列引用多表连接的时候,为表创建别名,或者不创建,select语句指定属性在哪个列比不指定要好,不指定的话数据库需要搜索全部的表来获得列,即SELECT p1.col_name , p2.col_nameFROM table_name p1, table_name p2WHERE expr1;两个 列都有指定在哪个表。添加表索引数据库索引用于查找表的特定行。索引的确定是当向表添加一行时,需要附加时间来更新新行的索引。oracle 数据库自动为表的主键和包含在唯一约束中(UNIQUE)的列创建索引。而在执行分级查询(包含 CONNECT BY 的查询 阅读全文
posted @ 2012-04-17 19:56 A_zhu 阅读(724) 评论(0) 推荐(1)
摘要:创建变长数组类型CREATE TYPE varray_type AS VARRAY(2) OF VARCHAR2(50);这个变长数组最多可以容纳两个数据,数据的类型为 varchar2(50)更改元素类型的大小或精度可以更改变长数组类型和嵌套表类型 元素的大小。ALTER TYPE varray_type MODIFY ELEMENT TYPE varchar2(100) CASCADE;CASCADE选项吧更改传播到数据库中的以来对象。也可以用 INVALIDATE 选项使依赖对象无效增加变长数组的元素数目ALTER TYPE vrray_nameMODIFY LIMIT 5 CASCAD 阅读全文
posted @ 2012-04-16 22:15 A_zhu 阅读(7245) 评论(0) 推荐(1)
摘要:创建对象类型CREATE TYPE object_type AS OBJECT(column_name type,[column_name type,][MEMBER FUNCTION fun_name RETURN type][MEMBER PROCEDURE proc_name ]);其中MEMBER FUNCTION 声明了对象内部函数,MEMBER PROCEDURE 声明了内部过程,添加对象体(body)CREATE TYPE BODY object_type AS MEMBER FUNCTION fun_name RETURN type IS var_name type; ... 阅读全文
posted @ 2012-04-16 01:24 A_zhu 阅读(8784) 评论(0) 推荐(0)
摘要:视图实际上是一个或多个表的预定义查询,这些表成为基表。视图中并不存储数据,他是会访问基表中的行.创建视图CREATE [ OR REPLACE ] VIEW [{FORCE |NOFORCE}] view_name[(alias_name [,alias_name…])] AS subsquery[WITH {CHECK OPTION |READ ONLY} CONSTRAINT constraint_name];NOFORCE 如果基表不存在则不创建视图,默认为NOFORCEalias_name 为子查询中的表达式指定别名。subquery 子查询WITH CHECK OPTION 说明只有 阅读全文
posted @ 2012-04-15 17:00 A_zhu 阅读(3276) 评论(0) 推荐(0)
摘要:创建索引CREATE [UNIQUE] INDEX index_name ONtable_name (column_name [,column_name…])TABLESPACE tab_space;UNIQUE 指定索引列中的值必须唯一的最好为表和索引创建不同的表空间。创建基于函数的索引如果 select 语句的是 shere column_name= UPPER('xxx') ;这样不会调用索引,可以创建函数索引CREATE INDEX index_name ON table_name(UPPER(column_name));利用基于函数的索引,DBA 必须初始化参数 QU 阅读全文
posted @ 2012-04-15 16:10 A_zhu 阅读(458) 评论(1) 推荐(0)
摘要:序列(sequence)是一种数据项,生成一个整数序列。生成的整数通常可以用来填充数字类型的主键列。创建序列CREATE SEQUENCE sequence_name[START WITH start_num][INCREMENT BY increment_num][{MAXVALUE maximum_num |NOMAXVALUE}][{MINVLAUE minimum_num |NOMINVALUE}][{CYCLE |NOCYCLE}][{CACHE cache_num |NOCACHE}][{ORDER | NOORDER}];START WITH start_num :指定冲哪个整. 阅读全文
posted @ 2012-04-15 14:56 A_zhu 阅读(3350) 评论(0) 推荐(0)
摘要:创建表的语法CREATE [GLOBAL TEMPORARY] TABLE table_name( column_name type [CONSTRAINT constraint_def DEFAULT default_exp] [,column_name type [CONSTRAINT constraint_def DEFAULT default_exp]…])[ON COMMIT {DELETE| PRESERVE }ROWS]TABLESPACE table_space;GLOBAL TEMPORARY 说明该表为临时表。行的有效期有 ON COMMIT 子句决定。临时表对于说有会话. 阅读全文
posted @ 2012-04-15 14:30 A_zhu 阅读(8130) 评论(0) 推荐(0)
摘要:创建用户,角色,管理等。CREATE USER username IDENTIFIED BY passwordOR IDENTIFIED EXETERNALLYOR IDENTIFIED GLOBALLY AS ‘CN=user’[DEFAULT TABLESPACE tablespace][TEMPORARY TABLESPACE temptablespace][QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace[,QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace[PROFILES profil 阅读全文
posted @ 2012-04-14 03:52 A_zhu 阅读(612) 评论(0) 推荐(0)
摘要:如果错误的提交了修改操作,在这情况下,如果想查看修改前的的原来值,可以通过使用查询闪回(query flashback)。通过这种方法可以改回来,例如word 的 ctrl+z 等等。闪回操作使用PL/SQL中的DBM_FLASHBACK包。EXECUTE DBMS_FLASHBACK.ENABLE_AT_TIME(SYSDATE -10 / 1440);上述ENABLE_AT_TIME() 过程可以将数据库状态闪回到一个特定的时间值。 上面是返回10分钟前,24 *60然后直接 SELECT 就会查找出原来的数据。想禁止闪回操作, DBMS_FLASHBACK.DISABLE();如下:EX 阅读全文
posted @ 2012-04-13 01:43 A_zhu 阅读(416) 评论(0) 推荐(0)
摘要:将源表添加到目标表,如果目标表中行已经存在,可以更新数据,如果不存在,可以插入数据。之所以说可以,因为更新、插入操作都是要自己写的。 - -!9i 时必须update insert 都有,10g以后至少有一个MERGE INTO target_table_name tar_tUSING source_table_name sou_t ON(expr1)WHEN MATCHED THENexpr2WHEN NOT MATCHED THENexpr3;(这只是一条sql 语句 - -!)expr1 为判断语句,例如 tar_t.id = sou_t.idexpr2 为目标行存在的操作, 例如 UP 阅读全文
posted @ 2012-04-10 02:51 A_zhu 阅读(411) 评论(0) 推荐(0)
摘要:RETURNING 自己通常结合DML 语句使用。(INSERT UPDATE DELETE)使用方法:UPDATE table_name SET expr1RETURNING column_nameINTO xxxINSERT: 返回的是添加后的值UPDATE:返回时更新后的值DELETE:返回删除前的值RETURNING 可以再sqlplus 和plsql中使用如果是plsql就如上面的代码,xxx为声明的变量名如果是sqlplus,xxx 可以为变量,即VARIABLE var_name varchar2(10)UPDATE table_name SET expr1RETURNING c 阅读全文
posted @ 2012-04-10 01:11 A_zhu 阅读(12760) 评论(1) 推荐(2)
摘要:使用MODEL 子句MODEL 子句像数组那样访问记录中的某列eg:查询员工(e_id)#21完成的产品类型(id)为#1和#2的销量,并根据2003年销售预测2004年123月的值SELECT id,year,month,sales_amountFROM table_nameWHERE id BETWEEN 1 and 2AND e_id=21MODELPARTITION BY(id)DIMENSION BY(month , year) MEASURES (amount sales_amount) ( sales_amount[1,2004] = sales_amount[1,2003],. 阅读全文
posted @ 2012-04-09 04:06 A_zhu 阅读(3883) 评论(0) 推荐(2)
摘要:1.评级函数:用于等级、百分点、n分片等。函数说明RANK()返回数据项在分组中的排名,排名相等会在名次中留下空位DENSE_RANK()返回数据项在分组中的排名,排名相等会在名次中不会留下空位CUME_DIST()返回特定值对于一组值的位置“cumulative distribution”(累积分布)PERCENT_RANK()(返回某个值相对于一组值的百分比排名NTILE()返回n分片后的值ROW_NUMBER()为每条记录返回一个数字RANK()、DENSE_RANK()RANK()在出现等级相同的元素时预留为空,DENSE_RANK()不会。Eg:某产品类型有两个并列第一RANK(): 阅读全文
posted @ 2012-04-09 03:13 A_zhu 阅读(17747) 评论(0) 推荐(0)
摘要:1. BINARY_FLOAT 和 BINARY_DOUBLE 的优点:1. 前者32位后者64位,存储时候前者5byte 后者9byte,number 可能需要多大22byte。2. 表示的范围更广(相对number)3. 执行速度更快,因为两者运算通常在硬件中执行,而number 需要先经过软件转换。4. 运算封闭,对于两者的运算结果要么是数字,要么是一个特殊值。如BINARY_FLOAT 除以一个BINARY_FLOAT结果是BINARY_FLOAT.5. 取整透明,两者是以二进制来表示数字的,而number 是以十进制表示。例如,一个十进制的浮点数要以最近的十进制位置进行取整,而一个二 阅读全文
posted @ 2012-04-03 17:38 A_zhu 阅读(1421) 评论(0) 推荐(0)
摘要:1. 显示表结构DESC[RIBE] table12. 编辑SQL语句SQLPLUS 是通过缓冲区保存前面的sql 语句,可以通过命令查询命令说明A[PPEND] text将text 附加到当前行之后C[HANGE]/old /new将当前行中的old 替换为newCL[EAR] BUFF[ER]清除缓冲区DEL删除当前行DELxL[IST]列出所有行L[IST] x列出第x 行R[UN] 或者 /运行缓冲区中的语句x将第x 行作为当前行3. 保存、检索、运行文件SAV[E] filename [{REPLACE |APPEND}]GET filenameSTA[RT] filename@ f 阅读全文
posted @ 2012-04-03 17:36 A_zhu 阅读(911) 评论(0) 推荐(0)
摘要:从oracle database 10gsql 开发指南中copy的。正则表达式:本节介绍正则表达式及相关的Oracle数据库函数。使用这些函数可以在字符串中搜索字符模式。例如,假设有下列年份:1965196819711970如果希望获得1965年和1968年之间的年份(包括1965年和1968年),就可以使用下面的正则表达式实现这种功能:^196[5-8]$正则表达式中包含许多元字符(metacharacter)。在上面这个例子中,^、[5-8]以及$都是元字符。^可以匹配一个字符串的开头;[5-8]可以匹配介于5~8之间的数字;$可以匹配一个字符串的结尾。因此,^196可以匹配以196开头 阅读全文
posted @ 2012-04-03 17:35 A_zhu 阅读(6581) 评论(1) 推荐(1)
摘要:作者:A_zhusqlplus 、cmd连数据库,还是客户端经过服务器连数据库。都有编码的问题。1。客户端的编码2.会话(session )的编码3.例子(instance)的编码4.数据库的编码查看方法:1客户端:看regedit 中 的nls_lang2.session :连接数据库(cmd 方式,同下) select *from nls_session_parameters;3。instance :连接数据库select *from nls_instance_parameters;4.database: 连接数据库 select*from nls_database_parameters; 阅读全文
posted @ 2012-04-03 17:24 A_zhu 阅读(4078) 评论(0) 推荐(0)