Presentation is loading. Please wait.

Presentation is loading. Please wait.

ACCP V4.0 第二章 SQL 查询和 SQL 函数. ACCP V4.0  Oracle 服务器由 Oracle 数据库和 Oracle 实例组 成  Oracle 实例由系统全局区内存结构和用于管理数 据库的后台进程组成  Oracle 中用于访问数据库的主要查询工具有 SQL*Plus.

Similar presentations


Presentation on theme: "ACCP V4.0 第二章 SQL 查询和 SQL 函数. ACCP V4.0  Oracle 服务器由 Oracle 数据库和 Oracle 实例组 成  Oracle 实例由系统全局区内存结构和用于管理数 据库的后台进程组成  Oracle 中用于访问数据库的主要查询工具有 SQL*Plus."— Presentation transcript:

1 ACCP V4.0 第二章 SQL 查询和 SQL 函数

2 ACCP V4.0  Oracle 服务器由 Oracle 数据库和 Oracle 实例组 成  Oracle 实例由系统全局区内存结构和用于管理数 据库的后台进程组成  Oracle 中用于访问数据库的主要查询工具有 SQL*Plus 、 iSQL*Plus 和 PL/SQL  Oracle 企业管理器是用于管理、诊断和调整多个 数据库的工具  Oracle 中的 SYSTEM 用户和 SYS 用户具有管理 权限,而 SCOTT 用户只有基本的权限 回顾

3 ACCP V4.0 3 目标  了解 Oracle 数据类型  了解数据定义语言和数据操纵语言  了解事务控制语言和数据控制语言  掌握 SQL 操作符和 SQL 函数

4 ACCP V4.0 4 SQL 简介 2-1  SQL 是 Structured Query Language (结构化查 询语言)的首字母缩写词  SQL 是数据库语言, Oracle 使用该语言存储和 检索信息  表是主要的数据库对象,用于存储数据  通过 SQL 可以实现与 Oracle 服务器的通信 SELECT ename FROM Emp ; 发送 SQL 查询 Oracle 服务器 ename BLAKE SMITH ALLEN DAVID MARTIN 发送命令输出到用户端 用户

5 ACCP V4.0 5 SQL 简介 2-2  SQL 支持下列类别的命令:  数据定义语言( DDL )  数据操纵语言( DML )  事务控制语言( TCL )  数据控制语言( DCL ) 数据定义语言 CREATEALTERDROP 数据操纵语言 INSERTSELECTDELETE UPDATE 事务控制语言 COMMIT SAVEPOINT ROLLBACK 数据控制语言 GRANT REVOKE

6 ACCP V4.0 6 Oracle 数据类型 5-1  创建表时,必须为各个列指定数据类型  以下是 Oracle 数据类型的类别: 数据类型 字符数值日期时间 RAW/LONG RAW LOB

7 ACCP V4.0 7 Oracle 数据类型 5-2 字符数据类型 CHAR VARCHAR2 LONG  当需要固定长度的字符串时,使用 CHAR 数据类型。  CHAR 数据类型存储字母数字值。  CHAR 数据类型的列长度可以是 1 到 2000 个字节。  VARCHAR2 数据类型支持可变长度字符串  VARCHAR2 数据类型存储字母数字值  VARCHAR2 数据类型的大小在 1 至 4000 个字节范围内  LONG 数据类型存储可变长度字符数据  LONG 数据类型最多能存储 2GB

8 ACCP V4.0 8 Oracle 数据类型 5-3  数值数据类型  可以存储整数、浮点数和实数  最高精度为 38 位  数值数据类型的声明语法:  NUMBER [( p[, s])]  P 表示精度, S 表示小数点的位数  日期时间数据类型存储日期和时间值,包括年、 月、日,小时、分钟、秒  主要的日期时间类型有:  DATE - 存储日期和时间部分,精确到整个的秒  TIMESTAMP - 存储日期、时间和时区信息,秒值精 确到小数点后 6 位

9 ACCP V4.0 9 Oracle 数据类型 5-4  RAW 数据类型用于存储二进制数据  RAW 数据类型最多能存储 2000 字节  LONG RAW 数据类型用于存储可变长度的二进 制数据  LONG RAW 数据类型最多能存储 2 GB LOB  LOB 称为 “ 大对象 ” 数据类型,可以存储多达 4GB 的非结构化信息,例如声音剪辑和视频文 件等  LOB 数据类型允许对数据进行高效、随机、分 段的访问 BLOB CLOB BFILE CLOB 即 Character LOB (字符 LOB ),它能够存储大量字符数据 BLOB 即 Binary LOB (二进制 LOB ),可以存储较大的二进制对 象,如图形、视频剪辑和声音文件 BFILE 即 Binary File (二进制文 件),它用于将二进制数据存储在 数据库外部的操作系统文件中

10 ACCP V4.0 10 Oracle 数据类型 5-5  Oracle 中伪列就像一个表列,但是它并没有存 储在表中  伪列可以从表中查询,但不能插入、更新和删除 它们的值  常用的伪列有 ROWID 和 ROWNUM ROWID 是表中行的存储地址,该地址可以唯一地标识数据库中 的一行,可以使用 ROWID 伪列快速地定位表中的一行 ROWNUM 是查询返回的结果集中行的序号,可以使用它来限 制查询返回的行数

11 ACCP V4.0 11 数据定义语言  数据定义语言用于改变数据库结构,包括创建、 更改和删除数据库对象  用于操纵表结构的数据定义语言命令有:  CREATE TABLE  ALTER TABLE  TRUNCATE TABLE  DROP TABLE

12 ACCP V4.0 12 数据操纵语言  数据操纵语言用于检索、插入和修改数据  数据操纵语言是最常见的 SQL 命令  数据操纵语言命令包括:  SELECT  INSERT  UPDATE  DELETE

13 ACCP V4.0 13 DML – SELECT 命令 2-1  利用现有的表创建表  语法: CREATE TABLE AS SELECT column_names FROM ; SQL> CREATE TABLE newitemfile AS SELECT * FROM itemfile; SQL> CREATE TABLE newitemfile1 AS SELECT itemcode, itemdesc, qty_hand FROM itemfile; SQL> CREATE TABLE newitemfile2 AS SELECT * FROM itemfile WHERE 1 = 2;

14 ACCP V4.0 14 DML – SELECT 命令 2-2 SQL> SELECT DISTINCT vencode FROM vendor_master;  选择无重复的行  在 SELECT 子句,使用 DISTINCT 关键字  使用列别名  为列表达式提供不同的名称  该别名指定了列标题 SQL> SELECT itemcode, itemdesc, max_level, max_level*2 AS NEW_MAXLEVEL FROM itemfile; SQL> SELECT itemcode,itemdesc, max_level, max_level* 2 “New Maximum Level” FROM itemfile;

15 ACCP V4.0 15 DML – INSERT 命令 2-1  插入日期类型的值  日期数据类型的默认格式为 “DD-MON-RR”  使用日期的默认格式  使用 TO_DATE 函数转换 INSERT INTO my_table (date_col) VALUES (TO_DATE('2005-10-18', 'YYYY-MM-DD')); INSERT INTO order_master VALUES('o001', '12-5 月 -05', 'V002', 'c', '25-5 月 -05');

16 ACCP V4.0 16 DML – INSERT 命令 2-2  插入来自其它表中的记录  语法: INSERT INTO [(cloumn_list)] SELECT column_names FROM ; SQL> INSERT INTO newvendor_master SELECT * FROM vendor_master; SQL> INSERT INTO newvendor_master(vencode,venname) SELECT vencode, venname FROM vendor_master;

17 ACCP V4.0 17 事务控制语言  事务是最小的工作单元,作为一个整体进行工作  保证事务的整体成功或失败,称为事务控制  用于事务控制的语句有:  COMMIT - 提交并结束事务处理  ROLLBACK - 撤销事务中已完成的工作  SAVEPOINT – 标记事务中可以回滚的点 SQL> UPDATE order_master SET del_date = ‘30-8 月 -05’ WHERE orderno <= ’o002’; SQL> SAVEPOINT mark1; SQL> DELETE FROM order_master WHERE orderno = ‘o002’; SQL> SAVEPOINT mark2; SQL> ROLLBACK TO SAVEPOINT mark1; SQL> COMMIT;

18 ACCP V4.0 18 数据控制语言  数据控制语言为用户提供权限控制命令  用于权限控制的命令有:  GRANT 授予权限  REVOKE 撤销已授予的权限 SQL> GRANT SELECT, UPDATE ON order_master TO MARTIN; SQL> GRANT UPDATE(qty_hand, re_level) ON itemfile TO MARTIN; SQL> GRANT SELECT ON vendor_master TO accounts WITH GRANT OPTION; SQL> REVOKE SELECT, UPDATE ON order_master FROM MARTIN;

19 ACCP V4.0 19 SQL 操作符 集合操作符 逻辑操作符 比较操作符 算术操作符 连接操作符  Oracle 支持的 SQL 操作符分类如下:

20 ACCP V4.0 20 算术操作符  算术操作符用于执行数值计算  可以在 SQL 语句中使用算术表达式,算术表达式 由数值数据类型的列名、数值常量和连接它们的 算术操作符组成  算术操作符包括加 (+) 、减 (-) 、乘 (*) 、除 (/) SQL> SELECT itemdesc, max_level - qty_hand avble_limit FROM itemfile WHERE p_category='spares'; SQL > SELECT itemdesc, itemrate*(max_level - qty_hand) FROM itemfile WHERE p_category='spares';

21 ACCP V4.0 21 比较操作符  比较操作符用于比较两个表达式的值  比较操作符包括 = 、 != 、 、 = 、 BETWEEN…AND 、 IN 、 LIKE 和 IS NULL 等 SQL> SELECT itemdesc, re_level FROM itemfile WHERE qty_hand < max_level/2; SQL> SELECT orderno FROM order_master WHERE del_date IN (‘06-1 月 -05’,‘05-2 月 -05'); SQL> SELECT vencode,venname,tel_no FROM vendor_master WHERE venname LIKE 'j___s';

22 ACCP V4.0 22 逻辑操作符 SQL> SELECT * FROM order_master WHERE odate > ‘10-5 月 -05' AND del_date < ‘26-5 月 -05’; 显示 2005-5 月 -10 至 2005-5 月 -26 的订单信息  逻辑操作符用于组合多个计较运算的结果以生成 一个或真或假的结果。  逻辑操作符包括与 (AND) 、或 (OR) 和非 (NOT) 。

23 ACCP V4.0 23 集合操作符  集合操作符将两个查询的结果组合成一个结果 集合操作符 UNION UNION ALL INTERSECT MINUS INTERSECT 操作符只返回两个查询的公共行。 SQL> SELECT orderno FROM order_master INTERSECT SELECT orderno FROM order_detail; SQL> SELECT orderno FROM order_master MINUS SELECT orderno FROM order_detail; MINUS 操作符返回从第一个查询结果中排除第二个查 询中出现的行。

24 ACCP V4.0 24 连接操作符  连接操作符用于将多个字符串或数据值合并成一 个字符串 SQL> SELECT (venname|| ' 的地址是 ' ||venadd1||' '||venadd2 ||' '||venadd3) address FROM vendor_master WHERE vencode='V001'; 通过使用连接操作符可以将表中 的多个列合并成逻辑上的一行列

25 ACCP V4.0 25 操作符的优先级 SQL 操作符的优先级从高到低的顺序是:  算术操作符 -------- 最高优先级  连接操作符  比较操作符  NOT 逻辑操作符  AND 逻辑操作符  OR 逻辑操作符 -------- 最低优先级

26 ACCP V4.0 26 SQL 函数  Oracle 提供一系列用于执行特定操作的函数  SQL 函数带有一个或多个参数并返回一个值  以下是 SQL 函数的分类: SQL 函数 单行函数 分析函数 分组函数

27 ACCP V4.0 27 单行函数分类  单行函数对于从表中查询的每一行只返回一个值  可以出现在 SELECT 子句中和 WHERE 子句中  单行函数可以大致划分为:  日期函数  数字函数  字符函数  转换函数  其他函数

28 ACCP V4.0 28 日期函数  日期函数对日期值进行运算,并生成日期数据类 型或数值类型的结果  日期函数包括:  ADD_MONTHS  MONTHS_BETWEEN  LAST_DAY  ROUND  NEXT_DAY  TRUNC  EXTRACT

29 ACCP V4.0 29 字符函数 2-1 函数 输入 输出 Initcap(char)Select initcap(‘hello’) from dual;Hello Lower(char)Select lower(‘FUN’) from dual;fun Upper(char)Select upper(‘sun’) from dual;SUN Ltrim(char,set) Select ltrim( ‘xyzadams’,’xyz’) from dual; adams Rtrim(char,set) Select rtrim(‘xyzadams’,’ams’) from dual; xyzad Translate(char, from, to)Select translate(‘jack’,’j’,’b’) from dual;back Replace(char, searchstring,[rep string]) Select replace(‘jack and jue’,’j’,’bl’) from dual; black and blue Instr (char, m, n)Select instr (‘worldwide’,’d’) from dual;5 Substr (char, m, n)Select substr(‘abcdefg’,3,2) from dual;cd Concat (expr1, expr2) Select concat (‘Hello’,’ world’) from dual; Hello world 字符函数  字符函数接受字符输入并返回字符或数值

30 ACCP V4.0 30 字符函数 2-2 SQL> SELECT CHR(67) FROM dual;  以下是一些其它的字符函数:  CHR 和 ASCII  LPAD 和 RPAD  TRIM  LENGTH  DECODE SQL> SELECT LPAD(‘function’,15,’=’) FROM dual; SQL> SELECT TRIM(9 from 9999876789999) FROM dual; SQL> SELECT LENGTH('frances') FROM dual; SQL> SELECT vencode, DECODE(venname,'frances','Francis') name FROM vendor_master WHERE vencode='v001';

31 ACCP V4.0 31 数字函数  数字函数接受数字输入并返回数值结果 函数 输入 输出 Abs(n)Select abs(-15) from dual;15 Ceil(n)Select ceil(44.778) from dual;45 Cos(n)Select cos(180) from dual;-.5984601 Cosh(n)Select cosh(0) from dual; 1 Floor(n)Select floor(100.2) from dual; 100 Power(m,n)Select power(4,2) from dual;16 Mod(m,n)Select mod(10,3) from dual;1 Round(m,n)Select round(100.256,2) from dual;100.26 Trunc(m,n)Select trunc(100.256,2) from dual;100.25 Sqrt(n)Select sqrt(4) from dual;2 Sign(n)Select sign(-30) from dual; 数字函数

32 ACCP V4.0 32 转换函数  转换函数将值从一种数据类型转换为另一种数据 类型  常用的转换函数有:  TO_CHAR  TO_DATE  TO_NUMBER SELECT TO_CHAR(sysdate,'YYYY" 年 "fmMM" 月 "fmDD" 日 " HH24:MI:SS') FROM dual; SELECT TO_CHAR(itemrate,‘C99999’) FROM itemfile; SELECT TO_DATE(‘2005-12-06’, ‘yyyy-mm-dd’) FROM dual; SELECT TO_NUMBER('100') FROM dual;

33 ACCP V4.0 33 其它函数  以下是几个用来转换空值的函数:  NVL  NVL2  NULLIF SELECT itemdesc, NVL(re_level,0) FROM itemfile; SELECT itemdesc, NVL2(re_level,re_level,max_level) FROM itemfile; SELECT itemdesc, NULLIF(re_level,max_level) FROM itemfile;

34 ACCP V4.0 34 分组函数  分组函数基于一组行来返回结果  为每一组行返回一个值 AVG MIN MAX SUM COUNT SELECT AVG(re_level) FROM itemfile WHERE p_category='accessories'; SELECT MAX(max_level) FROM itemfile; SELECT SUM(itemrate*max_level) FROM itemfile; SELECT COUNT(*) FROM itemfile; SELECT COUNT(itemrate) FROM itemfile; SELECT COUNT(DISTINCT qty_hand) FROM itemfile; 分组函数

35 ACCP V4.0 35 GROUP BY 和 HAVING 子句  GROUP BY 子句  用于将信息划分为更小的组  每一组行返回针对该组的单个结果  HAVING 子句  用于指定 GROUP BY 子句检索行的条件 SELECT p_category, MAX(itemrate) FROM itemfile GROUP BY p_category; SELECT p_category, MAX(itemrate) FROM itemfile GROUP BY p_category HAVING p_category NOT IN ('accessories');

36 ACCP V4.0 36 分析函数 2-1  分析函数根据一组行来计算聚合值  用于计算完成聚集的累计排名、移动平均数等  分析函数为每组记录返回多个行 分析函数 DENSE_RANK RANK ROW_NUMBER

37 ACCP V4.0 37 分析函数 2-2  以下三个分析函数用于计算一个行在一组有序行中的排位, 序号从 1 开始  ROW_NUMBER 返回连续的排位,不论值是否相等  RANK 具有相等值的行排位相同,序数随后跳跃  DENSE_RANK 具有相等值的行排位相同,序号是连 续的 SELECT ename, job, deptno, sal, ROW_NUMBER() OVER (ORDER BY sal DESC) AS SAL_RANK FROM SCOTT.EMP; SELECT deptno, ename, sal, comm, RANK() OVER (PARTITION BY deptno ORDER BY sal DESC, comm) RANK FROM emp; SELECT d.dname, e.ename, e.sal, DENSE_RANK() OVER (PARTITION BY e.deptno ORDER BY e.sal DESC) AS DENRANK FROM emp e, dept d WHERE e.deptno = d.deptno;

38 ACCP V4.0 38 总结  SQL 是通用的数据库语言  SQL 命令可分为数据定义语言、数据操纵语言、 事务控制语言和数据控制语言  Oracle 支持的数据类型包括字符、数值、日期时 间、 RAW 和 LOB 等  SQL 支持的操作符包括算术、比较、逻辑、集合 和连接操作符  SQL 函数可大致分为单行函数、聚合函数和分析 函数


Download ppt "ACCP V4.0 第二章 SQL 查询和 SQL 函数. ACCP V4.0  Oracle 服务器由 Oracle 数据库和 Oracle 实例组 成  Oracle 实例由系统全局区内存结构和用于管理数 据库的后台进程组成  Oracle 中用于访问数据库的主要查询工具有 SQL*Plus."

Similar presentations


Ads by Google