《oacle数据库培训文档五.doc》由会员分享,可在线阅读,更多相关《oacle数据库培训文档五.doc(24页珍藏版)》请在金锄头文库上搜索。
1、PLSql培训教程课程一、 PL/SQL 基本查询与排序本课重点: 1、写SELECT语句进行数据库查询 2、进行数学运算 3、处理空值 4、使用别名ALIASES 5、连接列 6、在SQL PLUS中编辑缓冲,修改SQL s criptS 7、ORDER BY进行排序输出。 8、使用WHERE 字段。1写SQL 命令要求:1)不区分大小写。2)SQL 语句用数字分行,在SQL PLUS中被称为缓冲区。3)最后以;或 / 结束语句。4)也可以用RUN来执行语句2、例1:SQL SELECT dept_id, last_name, manager_id 2 FROM s_emp; 2:SQL S
2、ELECT last_name, salary * 12, commission_pct 2 FROM s_emp; 对于数值或日期型的字段,可以进行相应的四则运算,优先级与标准的高级语言相同。 SQL SELECT last_name, salary, 12 * (salary + 100) 2 FROM s_emp;3、列的别名ALIASES: 计算的时候特别有用; 紧跟着列名,或在列名与别名之间加“AS”; 如果别名中含有SPACE,特殊字符,或大小写,要用双引号引起。 例(因字体原因,读者请记住:引号为英文双引号Double Quotation): SQL SELECT last_na
3、me, salary, 2 12 * (salary + 100) ”Annual Salary” 3 FROM s_emp;4、连接符号:| 连接不同的列或连接字符串 使结果成为一个有意义的短语: SQL SELECT first_name | | last_name 2 | , | title ”Employees” 3 FROM s_emp;5、管理NULL值: SQL SELECT last_name, title, 2 salary * NVL(commission_pct,0)/100 COMM 3 FROM s_emp; 此函数使NULL转化为有意义的一个值,相当于替换NULL。
4、6、ORDER BY 操作: 与其他SQL92标准数据库相似,排序如: SELECT expr FROM table ORDER BY ASC|DESC; 从Oracle7 release 7.0.16开始,ORDER BY 可以用别名。 另:通过位置判断排序: SQL SELECT last_name, salary*12 2 FROM s_emp 3 ORDER BY 2; 这样就避免了再写一次很长的表达式。 另:多列排序: SQL SELECT last name, dept_id, salary 2 FROM s_emp 3 ORDER BY dept_id, salary DESC;
5、7、限制选取行: SELECT expr FROM table WHERE condition(s) ORDER BY expr; 例1: SQL SELECT first_name, last_name, start_date 2 FROM s_emp 3 WHERE start_date BETWEEN 09-may-91 4 AND 17-jun-91; 例2: SQL SELECT last_name 2 FROM s_emp 3 WHERE last_name LIKE _a%; /显示所有第二个字母为 a的last_name 例3: 如果有列为NULL SQL SELECT id,
6、 name, credit_rating 2 FROM s_customer 3 WHERE sales_rep_id IS NULL; 优先级: Order Evaluated Operator 1 All comparison operators (=, , , =, , SELECT first_name, last_name 2 FROM s_emp 3 WHERE UPPER(last_name) = PATEL; FIRST_NAME LAST_NAME - - Vikram Patel Radha Patel3、数学运算函数 1、ROUND 四舍五入:ROUND(45.923,2
7、) = 45.92 ROUND(45.923,0) = 46 ROUND(45.923,-1) = 50 2、TRUNC 截取函数 TRUNC(45.923,2)= 45.92 TRUNC(45.923)= 45 TRUNC(45.923,-1)= 40 3、MOD 余除 MOD(1600,300) 实例: SQL SELECT ROUND(45.923,2), ROUND(45.923,0), 2 ROUND(45.923,-1) 3 FROM SYS.DUAL;4、ORACLE 日期格式和日期型函数: 1、默认格式为DD-MON-YY. 2、SYSDATE是一个求系统时间的函数 3、DUA
8、Ldju:el 是一个伪表,有人称之为空表,但不确切。 SQL SELECT SYSDATE 2 FROM SYS.DUAL; 4、日期中应用的算术运算符 例:SQL SELECT last_name, (SYSDATE-start_date)/7 WEEKS 2 FROM s_emp 3 WHERE dept_id = 43; DATE+ NUMBER = DATE DATE-DATE= NUMBER OF DAYS DATE + (NUMBER/24) = 加1小时5、函数: MONTHS_BETWEEN(date1, date2) 月份间隔,可正,可负,也可是小数 ADD_MONTHS(
9、date,n) 加上N个月,这是一个整数,但可以为负 NEXT_DAY(date,char) 如:NEXT_DAY (restock_date,FRIDAY),从此日起下个周五。 ROUND(date,fmt) TRUNC(date,fmt) 解释下面的例子: SQL SELECT id, start_date, 2 MONTHS_BETWEEN (SYSDATE,start_date) TENURE, 3 ADD_MONTHS(start_date,6) REVIEW 4 FROM s_emp 5 WHERE MONTHS_BETWEEN (SYSDATE,start_date)48; 我们看到: MONTHS_BETWEEN (SYSDATE,start_date) select round(sysdate,MONTH) from dual ROUND(SYSD - 01-11月-01 round(sysdate,YEAR) = 01-1月 -02 ROUND 之后的值比基值大的最小符合值,大家可以用更改系统时间的方法测试,以15天为分界线,也是非常形象的四舍五入,而TRUNC恰好相反,是对现有的日期的截取。6、转换函数: 1)、TO_CHAR 使一个数字或日期转换为CHAR 2)、TO_N