收藏 分享(赏)

Oracle使用手册.doc

上传人:精品资料 文档编号:11062745 上传时间:2020-02-05 格式:DOC 页数:10 大小:37.43KB
下载 相关 举报
Oracle使用手册.doc_第1页
第1页 / 共10页
Oracle使用手册.doc_第2页
第2页 / 共10页
Oracle使用手册.doc_第3页
第3页 / 共10页
Oracle使用手册.doc_第4页
第4页 / 共10页
Oracle使用手册.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、 基本介绍1. 列左对齐,字符右对齐。2. 包含空值的数学表达式的值都为空值3. DESCRIBE +表明用在 MANAGE 中用来描述表结构。SELECT 语句详解ORACLE 中一个语句里面包含多个操作,这些操作并不是顺序执行的,因此,我们可以将Oracle 语句拆分,逐步分析它的执行构成。下面以 SELECT 语句为例。表 1表 2GROUP BY 列名HAVINGORDER BY 列名SELECT 语句由于执行顺序不同,因此对数据的处理方式不同。我们可以把他们分为单行操作符,多行操作符,表操作符。 (不知道怎么称呼,姑且这么叫。 )表一中除了 SELECT 外的所有函数都是 单行操作符

2、,因此后面必须和单行数据使用。表二中的函数+select 是多行操作符 ,因此可以和单行数据,多行数据和分组函数一块儿使用。ORDER BY 是对整个表进行操作,因此可以称为表操作符。因此 WHERE 后面不能加分组函数,多行数值。由于 SELECT 语句在执行过中有先后顺序,而且每一个函数都有相应的格式,因此SELECT 语句在写法上有一些要求。如上表,在 SELECT 语句中,子查询的优先级别最高因此,先调用子查询,子查询的执行顺序与一般查询一样,但是子查询的返回值被不同函数调用时,应根据函数要求返回不同的值。如在 WHERE 语句中返回单行值,如果有多行,用 ANY, ALL 函数一一拆

3、分。1 SELECT 与句中先执行子查询,2 在 SELECT 语句顺序执行 2.1 GROUP BY ,2.2HAVING 和 2.3 分组函数将原表内容进行分区,浓缩。由于使用的是原表,因此可以调用新表中没有出现的列。GROUP BY DEPTNO HAVING AVG(SAL)1000,是先按 DEPTNO 分组,再选择条件,条件中执行分组函数,因此 HAVING 中可以有分组函数3执行 SELECT 语句,先执行 3.1 join on WHERE 逐条连接,进行条件删选,因此 ON 与SELECT 列名FROM 表名INTO 变量JOIN 表名ON 条件WHERE 条件WHERE 的

4、条件可以互换位置。这样将两个表连接成一个表。同样是调用原表,因此可以调用新表中没有出现的列。然后执行 SELECT然后执行表函数 ORDER BY 将表排序。(最后将单行数据赋值:into。 )ORACLE 单词及出处调试权限:GRANT DEBUG CONNECT SESSION TO SCOTT;DDL 数据定义语句用来定义数据库对象(SESSION 会话, TABLE,VIEW,SEQUENCE,INDEX,PROCEDUE, SYNONYMUSER)的语句。包含 CREATE, ALTER, DROP, COMMENT,TRUNCATE.直接提交,不可回滚,在 pl/sql 块中要用动

5、态 SQL :EXECUTE IMMEDIATE 表示。如 EXECUTE IMMEDIATE CREATE TABLE bonus1 (id NUMBER, amt NUMBER);, CREATE 创建对数据库的对象创建表和视图 TABLE, VIEWCREATE TABEL CREATE OR REPLACE VIEW 表名(列名 数据类型 DEFAULT 值 constraint 名字 约束类型,CONSTRAINT 名字 约束类型(类名) ) ;用户 USERCREATE USER IDENTIFIED BY PASSWORDS;序列 SEQUENCECREATE SEQUENCE

6、序名INCREMENT BY 跳跃值START WITH 初始值MAXVALUE 最大值NOCACHE/CACHE 存入内存数NOCYCLE/CYCLE 是否循环索引 INDEXCREATE INDEX ON 表名(列名,可以多列)过程 PROCEDUECREATE PROCEDUE 过程名(参数)*参数在定义时不能指定长度。IS AS 定义内容;BEGIN执行块;END;同义词 SYNONYMCREATE SYNONYM FOR 对象名。 ALTER 修改对数据库的对象进行修改,包括增加列,删除列,改名列,修改类中的数据类型。ALTER TABLE 表名 ADDDROPRENAMEMODIF

7、Y COLUMN;ALTER 也可以对用户进行修改ALTER USER IDENTIFIED BY NEW PASSWORD;FUNCTION 函数。单行函数 只对表的一行数据进行数据操纵,返回一个值的语句字符函数 UPPER/ LOWER/ INT(ION)CAP(字符串)CONCAT(字符 A,字符 B)等价于 字符 A|字符 B :连接SUBSTR (CHAR A,NUM M,NUM N) : 截取 B 如果不写默认为返回从 A 中截取索引从 M 到 N 的字符串* 在 ORACLE 中索引从 1 开始,且前后都是闭区间。LENGTH (字符串 A)返回字符串 A 的长度INSTR(CH

8、AR A,CHAR B ,NUM M,NUM N)后面两个默认为 1。返回从 A 中从左边第 M 个字符开始索引 B 字符在 A 中出现的第 N 次的索引。LPAD | RPAD 左 |右填充 (CHAR A,NUM M,CHAR B)返回:填充了 M 长度字符,长度不足则用 B 补充,长度长了截取。TRIM ( CHAR A FROM CHAR B)| (字符:表示修剪空格):修剪TRIM 从两端开始 连续修剪 B 直到下个不是 A。RTRIM(CHAR A,CHAR B) 从右边连续修剪 A 直到下个不是 B,不写默认是空格。单个字符有效LTRIM(CHAR A,CHAR B)从左边连续修

9、剪 A 直到下个不是 B,不写默认是空格。单个字符有效REPLACE(CHAR A,CHAR B,CHRA C):在 A 中将 B 替换成 C *全部替换TRANSLATE (CHAR A,CHAR B,CHRA C) :变换将 A 的 B 每一个字符换成 相应 的 C 的索引相同的字符,C 如果没有相应的,用 NULL 代替。数字函数ROUND (数字 M,整数 N) :将 M 在小数点后 N 位处四舍五入TRUNC (数字 M,整数 N) :将 M 在小数点后 N 位处截短N=小数点后第几位,如果 N 是复数,代表小数点左边相应的位数。Mod 取模(除数,被除数)与 java 中的 %一样

10、,返回值的符号与除数保持一至。CEIL (数字 M) :取比 M 大的最小整数FLOOR(数字 M):取比 M 小的最大整数ABS(数字 M) :取 M 的绝对值SIN(数字 M) :取 M 的余弦;COS(数字 M) :取 M 的余弦;POWER(数字 M,数字 N): 返回 M 的 N 次方。SQRT(数字 M) 返回 M 的开方。SIGN(数字 M) 返回 M 的符号,正数返回 1,复数返回-1,0 返回 0。CASE WHEN A THEN B ELSE CEND CASE;选择。DECODE(A,B,CD,EF)选择。*DUAL 伪表。在验证函数时可以使用伪表。SELECT ROUN

11、D(4.3,1) FROM DUAL;DATE 日期日期函数DATE A-DATE B =A 与 B 相差的天数。浮点型MONTHS_BETWEEN(DATE A,DATE B) A 与 B 相差的月份。返回浮点型整数。ADD_MONTHS(DATE A,NUM M) 往日期 A 中添加 M 个月份,返回新日期。NEXT_DAY(DATE A,DAY/DY/17)返回下个周几,可用 1234567 代表星期的第几天。中文 ORACLE 中用星期 X来代替 DAY/DD;因此不能用 DAY/DD;LAST_DAY(DATE A) 返回 A 所在月的最后一天的日期;ROUND(DATE A,FIE

12、LD B) 返回 A 在 B 出的四舍五入后的日期。FIELD 默认是 DDTRUNC(DATE A,FIELD B) 返回 A 在 B 出的截断后的日期。FIELD 默认是 DD数据类型转化函数NUMBER 可以自动转化成字符串。TO_NUMBER(CHAR R)将 R 转化成数字,R 必须是纯数字型,不能有空格TO_CHAR(NUMBER,格式)格式中用 0 代表 09(一定会显示) ,9 代表数值(0 在开头或者末尾不显示) ,可用美元符号$,用 L 代表当地货币符号TO_CHAR(DATE,格式,nls_date_language=AMERICAN)可以选择语言。SELECT TO_C

13、HAR( 123.5,L0000.00)FROM DUAL; ¥0123.50TO_DATE(CHAR A,格式)日期格式 默认格式是 DD-MON-RR,一般自定义格式,不用默认的。YYYY 代表四位数年份 ;YY 代表后两个年份数; YEAR 代表年份的英文拼写。1945=1945; 1945=45; 1945= NINETEEN FORTY-FIVEMM 代表月份数; MON 代表英文月份前三个字母;MONTH 代表英文中月份09=09; 09=9 月(中文版)=SEP 09=9 月(中文版)=SEPTEMBERDD 代表天数; DY 代表英文周的前三个字母;DAY 代表英文09=09;

14、 09=MON; 09=MONDAYHH 代表小时后面可以加 24 表示 24 小时制;MI 代表分钟;SS 代表秒.*用 FM 可以去掉日期前面的0 ;* 时间格式对大小写不敏感(MM 和 MI 区分) ,在使用时必须放到 中;*“”可以让 oracle 强制略过不和给定的字符,因此可以用YYYY”ANY ”DD”ANY”MM来表示时间空值转化函数 属于单行函数NVL(A,B)如果 A 为空输出 B,否则输出 ANVL2(A,B,C) 如果 A 为空输出 B,否则输出 CNVLIF(A,BF)连续判断,直到输出非空。全为空还是输出空分组函数 将数行数值浓缩成一行数值输出,忽略空值。如果空值必

15、须作为一列就必须用到去空函数。AVG(列名) 返回该列的平均值。MAX(列名) :返回该列最大值。MIN(列名) ;返回该列最小值COUNT(列名) : 该列的数量SUM(列名): 返回该列的总和GROUP BY(列,列。 。)HAVING 条件;*HAVING 中能使用组函数。因为 GROUP BY 是对整个表的操纵,因此可以用分组函数。*WHERE 中不能使用组函数,SELECT WHERE 操纵单行数据,因此不能使用分组函数。*分组函数将数行数据浓缩成一行,因此如果存在分组函数,选出的类必须都浓缩,因此没有组函数的列必须出现在 group by 语句中。表函数对整个表的数据DISTINC

16、T.连接笛卡尔连接,等值连接,非等值连接,自连接,外连接(左连接,右连接,FULL 连接)等值连接也可以用 表 A JOIN 表 B USING (列),列不能用表点出,如果出现在 SELECT 语句中也不能点出。因为在 SELECT 语句中首先计算表的联合,该等值只有一个列,因此不能被点出,而使用 where 列= 列有两个列,因此可以点出。通用连接 A (LEFT/RIGHT) JOIN B ON +条件*由于分组函数的限制,要完全显示列,必须使用连接。子查询子查询要包含在括号内,将子查询放在比较条件的右侧子查询可以返回一个值,一列值,多列值,多行值,甚至临时表。具体使用根据调用子查询的函

17、数有关。例如 在 WHERE 下调用子查询,由于 WHERE 是单行函数,因此返回值只能有一行。因此 返回值中有多行时必须用其他函数筛选出一行。如 ANY,ALLANY 是所有行的任意一行,ALL 是所有行的每一行。CONSTRAINT 约束(NOT NULL, PRIMARY KEY, FOREIGN KEY,UNIQUE,CHECK)列级约束 在类的后面 CONSTRAINT 名字 约束类型表级约束 在表的后面 CONSTRAINT 名字 约束类型(类名)NOT NULL 非空只能作为列级约束;PRIMARY KEY 主键约束表名该类值唯一且不为空UNIQUE 唯一的用在唯一约束时表示这列

18、的值唯一;FOREIGN KEY 外键FOREIGN KEY (列名 ) REFERENCES 表名(列名) ;外键约束必须连到主键上。REFERENCES 关联用在外键约束中,CONSTRAINT 名字 FOREIGN KEY (列名 ) REFERENCES 表名(列名) ;外键约束必须连到主键上。CHECK 检查用在 where 语句中,WHERE CHECK (条件表达式) 表示满足条件才输出。用在 CONSTRAINT 中列+CONSTRAINT 名字 CHECK(表达式) 表示该列值满足一定条件才能输入。如果是列约束其中表达式中不能出现其他列的值(包括伪列和索引) 。如果是表约束则

19、能现出先列值CASCADE 级联在外键约束中,ON DELETE CASCADE 表示级联删除,ON DELETE SET NULL 表示删除后子列设置为空(级联删除,与触发器同时运行是可能会造成死循环。 。 )权限权限包括系统权限和对象权限。语法:GRANT/REVOKE;系统权限CREATE TABLE/VIEW/SESSION/PROCEDUR/SEQUENCE/INDEX/COMMENT调试权限。对象权限SELECT /UPDATE/EXECUTE/ DEBUG CONNECT SESSION /ON 表名ROLE 角色。建立一个全体,可以为该全体整体赋予权限。GRANT/REVOKE

20、 权限 TO 用户名 WITH ADMIN OPTION 级联给予系统权限GRANT/REVOKE 权限 ON 表名 FROM 用户名 WITH GRANT OPTION;级联收回对象权限。TCP/IP 结构体组成体:Declare 申明Begin: 开始结构体;EXCEPTION:End;1.DECLARE 声明DECLARE 声明变量变量名 数据类型: NUM NUMBER(8,0); 如果没有制定类型的长度,使用默认长度。PL/SQL 块中可以使用使用 %TYPE,%ROWTYPE; 如:EMP. NUMBER%TYPEPL?SQL 还支持布尔类型的数据。DECLARE 中赋值变量名 数

21、据类型:= 值 NUM NUMBER(8,0 )=60 ;变量名 数据类型 DEFAULT 值 NUM NUMBER(8,0 )DEFAULT 60;BEGIN END;执行块赋值:在执行块中可以为变量赋值: 变量名 :=值;SELECT 列,列 INTO 变量名, 变量名WHERE 条件。 。 。*加粗部分不能改变顺序。返回值只能有一行。使用 USING 为绑定变量赋值:salUSING 值BEGIN +执行块执行块中的执行与 java 的执行很相似,但也有很多不同。1. 相似点:顺序执行:PL/SQL 也是顺序执行每一条语句。也从 选择语句,循环语句,跳转语句进行讲解。不同点:不能在执行语

22、句中声明变量(for 除外) ,要使用的变量必须在 declare 中声明。pl/sql 中没有来表示域,因此每个语句都是以关键字开头,以 END;结束形成一个域,for 循环域内声明的局部变量同样不能在域外面使用。2. 选择语句:case 。 。 。 else;IF ELSIF ELSE;IF 条件 case 判断体THEN WHEN THENELSIF WHEN.THENTHEN ELSEELSE END CASE;ENDIF;循环语句,loop,while,for Loop 无条件循环LOOP循环体;END LOOP;为了避免死循环,会与 exit when 或者 goto 等跳转语句联

23、用。FOR 循环 :有限次数的循环FOR 循环结构体: FOR 变量 IN 赋值范围 LOOP循环体;END LOOP;FOR 后面的条件可以申明一个变量,变量的数据类型与赋值范围一致, 不需要显性给予数据类型 。给变量逐一赋值 in 里面的值,当 in 里面的值用完后结束循环。For 循环在游标遍历中最常见,其他由于条件限制,很少用。注意域对变量的限制。WHILE 循环 :条件判断循环WHILE 循环体 WHILE 条件 LOOP循环体;END LOOP;While 循环中,条件如果为真则执行循环体,与 java 最相似的语句,功能也最强大。3. 跳转语句:EXIT WHEN 满足条件退出循

24、环;GOTO 跳转到跳转点。4. 事务控制语句(TCL)SAVEPOINT ; ROLLBACK ; ROLLBACT TO SAVEPOINT 保存点名。EXCEPTION 块:相当于 java 中的 catch 块EXCEPTION WHEN 要捕获的异常名称 THEN 执行操作。RAISE_APPLICATION_ERROR(-20000 到-20999, 字符串);同样,我们可以在 DECLARE 中申明异常,在执行块中用 RAISE 抛出异常。动态 SQL 语句。执行时才会生成,并生效的 sql 语句。一般用在执行是才能确定的 SQL 语句,或者 pl/sql 块中不能使用的语句,如

25、 DDL 语句。一: CREATE TABLE bonus1 (id NUMBER, amt NUMBER);Pl/SQL 语句中不能使用 DDL 语句,所以用动态 SQL;二: sql_stmt := SELECT * FROM emp WHERE empno = :id;EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id;:变量名,表示绑定变量。需要使用 Using 赋值,只有执行的时候,才能知道赋的值是多少,因此使用动态 sql。游标 CURSOR隐式游标系统在执行 DML 语句是自动生成的游标,我们不能打开或者关闭,也不能查看。SQ

26、L%ROWCOUNT;SQL%FOUND;SQL%NOTFOUND;%显式游标我们声明并使用的游标。游标可以申明 return 值,确定游标中的数据类型。CURSOR 在 DECLARE 中申明并赋值。 CURSOR 游标名 IS 多列数值。在执行块中,用 OPEN 游标名 打开游标,并将游标指向第一个值。用 FETCH 游标名 INTO 变量,来将游标中的当前值取出,并使游标指向下一值。用 CLESE 游标名 关闭游标。游标名%FOUND,游标名%NOTFOUND 显示反映游标上一个指向值是否存在。因此,必须放在 FETCH INTO 语句后面。FOR 循环在游标中的使用FOR 变量 IN

27、游标名FOR 简写了游标,不需要 OPEN 和 CLOSE 游标,也不需要 FETCH 其中变量与游标的数据类型一致,不能给变量确定数据类型必须用变量.列名返回值。如:CURSOR CS IS SELECT DEPTNO FORM DEPT;FOR NUM1 IN CS LOOPDBMS_OUTPUT.PUT_LINE(NUM1.DEPTNO);END LOOP;END;REF 游标由于 ORACLE 支持动态 sql,因此有时候,在程序执行前并不能给游标具体赋值,这个时候我们可以用动态游标 REN CURSOR;DECLARE 中,TYPE 类型名 is REF CURSOR;对象名 类型名;并不需要赋值。BEGIN 赋值并指向第一个值:OPEN 对象名 FOR 多行值代码。 其余用法与游标一直。存储过程,函数。PROCEDURE,FUNCTION.存储在数据库中的代码块。记住格式就可以了触发器 TRIGGER;TRIGGER 也是存储在数据库中的代码块,只能自动调用,不能显性调用。触发器触发器不能有参数,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报