10-PLSQL语法及使用技巧
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VALUES(1,seq_service_id.nextval);
10
SQL使用技巧
ROWID物理地址 SELECT rowid,t.* FROM train_service_tab t ; 利用rowid 进行光标定位
返回参数一年中的第几天的写法: SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
返回参数中一年的第几周的写法: SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;
增加月份的写法: SELECT ADD_MONTHS(SYSDATE,2) FROM DUAL;
取当前的序列值 SELECT seq_service_id.currval FROM DUAL;
取下一个序列值 SELECT seq_service_id.nextval FROM DUAL;
具体的使用 INSERT INTO train_service_tab(city_id,service_id)
第十章
PLSQL语法及使用技巧
介绍
• SQL是一种ANSI标准类型的描述语言,使用该语言 可以处理数据库中的数据;而PL/SQL则是Oracle 公司开发的一种对SQL语言进行了扩充的专门语言 。PL/SQL是以SQL语句为基础,所以先介绍SQL, 然后介绍PL/SQL。
• 这里我把在几年使用Oracle过程中积累的经验共 享给大家,和大家做个交流,交流的层面就不从 SQL或PL/SQL的基本语法入手,而是直接跃入使用 技巧。
6
SQL使用技巧
两个结果集之间的操作 --合并、加 SELECT * FROM train_service_tab UNION SELECT * FROM gw_service_tab; SELECT * FROM gw_service_tab UNION all SELECT * FROM gw_service_tab;--建议使用union all --交集 SELECT * FROM train_service_tab intersect SELECT * FROM gw_service_tab; --减 SELECT * FROM train_service_tab minus SELECT * FROM gw_service_tab;8SQ Nhomakorabea使用技巧
日期函数
取时间点的日期的写法 SELECT TRUNC(SYSDATE,'YYYY') FROM DUAL;
将字符串转换成日期或时间形态 SELECT TO_DATE('20040322','YYYYMMDD') FROM DUAL;
返回参数的星期几的写法: SELECT TO_CHAR(SYSDATE,'D') FROM DUAL;
2
• SQL使用技巧 • PL/SQL使用技巧
3
SQL使用技巧
Dual 虚表的使用 Select * from dual;--表结构 Select sysdate from dual; --当前日期 Select 803*77 from dual;--计算 Select to_char(sysdate,’ddd’) from dual;--今年第几天 Select add_months(sysdate,24) from dual; --加2年 Select to_char(to_date(‘20031231’,‘yyyymmdd’),‘ddd’)
SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL; 取时间点的分的写法:
SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL; 取时间点的秒的写法:
SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL; 整个的写法:
SELECT TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS') FROM DUAL;
7
SQL使用技巧
日期函数 取时间点的年份的写法:
SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL; 取时间点的月份的写法:
SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL; 取时间点的日的写法:
SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL; 取时间点的时的写法:
rownum<1001 order by servcie_id;
如何从一张表中创建另一张空表 Create table another_tab as select * from
other_tab where rownum<1;
5
SQL使用技巧
怎样用Sql语句实现查找一列中第N之前值
select * from (select t.*,dense_rank() over (order BY service_id DESC )
rank from train_service_tab t) where rank <= 10; --从大到小
select * from (select t.*,dense_rank() over (order BY service_id ) rank
from train_service_tab t) where rank <= 10; --从小到大
增加天的写法: SELECT SYSDATE+1 FROM DUAL;
返回当前月的最后一天 SELECT LAST_DAY(SYSDATE) FROM DUAL;
9
SQL使用技巧
序列的使用
创建一个序列 CREATE sequence seq_service_id start with 10000 increment by 1;
from dual;--去年整年几天 Select length(‘I am just 12 years old’) from dual;--计算字
符串长度 Select user from dual;--当前用户的ID号
4
SQL使用技巧
如何搜索出前N条记录 Select * from train_service_tab where
10
SQL使用技巧
ROWID物理地址 SELECT rowid,t.* FROM train_service_tab t ; 利用rowid 进行光标定位
返回参数一年中的第几天的写法: SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
返回参数中一年的第几周的写法: SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;
增加月份的写法: SELECT ADD_MONTHS(SYSDATE,2) FROM DUAL;
取当前的序列值 SELECT seq_service_id.currval FROM DUAL;
取下一个序列值 SELECT seq_service_id.nextval FROM DUAL;
具体的使用 INSERT INTO train_service_tab(city_id,service_id)
第十章
PLSQL语法及使用技巧
介绍
• SQL是一种ANSI标准类型的描述语言,使用该语言 可以处理数据库中的数据;而PL/SQL则是Oracle 公司开发的一种对SQL语言进行了扩充的专门语言 。PL/SQL是以SQL语句为基础,所以先介绍SQL, 然后介绍PL/SQL。
• 这里我把在几年使用Oracle过程中积累的经验共 享给大家,和大家做个交流,交流的层面就不从 SQL或PL/SQL的基本语法入手,而是直接跃入使用 技巧。
6
SQL使用技巧
两个结果集之间的操作 --合并、加 SELECT * FROM train_service_tab UNION SELECT * FROM gw_service_tab; SELECT * FROM gw_service_tab UNION all SELECT * FROM gw_service_tab;--建议使用union all --交集 SELECT * FROM train_service_tab intersect SELECT * FROM gw_service_tab; --减 SELECT * FROM train_service_tab minus SELECT * FROM gw_service_tab;8SQ Nhomakorabea使用技巧
日期函数
取时间点的日期的写法 SELECT TRUNC(SYSDATE,'YYYY') FROM DUAL;
将字符串转换成日期或时间形态 SELECT TO_DATE('20040322','YYYYMMDD') FROM DUAL;
返回参数的星期几的写法: SELECT TO_CHAR(SYSDATE,'D') FROM DUAL;
2
• SQL使用技巧 • PL/SQL使用技巧
3
SQL使用技巧
Dual 虚表的使用 Select * from dual;--表结构 Select sysdate from dual; --当前日期 Select 803*77 from dual;--计算 Select to_char(sysdate,’ddd’) from dual;--今年第几天 Select add_months(sysdate,24) from dual; --加2年 Select to_char(to_date(‘20031231’,‘yyyymmdd’),‘ddd’)
SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL; 取时间点的分的写法:
SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL; 取时间点的秒的写法:
SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL; 整个的写法:
SELECT TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS') FROM DUAL;
7
SQL使用技巧
日期函数 取时间点的年份的写法:
SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL; 取时间点的月份的写法:
SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL; 取时间点的日的写法:
SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL; 取时间点的时的写法:
rownum<1001 order by servcie_id;
如何从一张表中创建另一张空表 Create table another_tab as select * from
other_tab where rownum<1;
5
SQL使用技巧
怎样用Sql语句实现查找一列中第N之前值
select * from (select t.*,dense_rank() over (order BY service_id DESC )
rank from train_service_tab t) where rank <= 10; --从大到小
select * from (select t.*,dense_rank() over (order BY service_id ) rank
from train_service_tab t) where rank <= 10; --从小到大
增加天的写法: SELECT SYSDATE+1 FROM DUAL;
返回当前月的最后一天 SELECT LAST_DAY(SYSDATE) FROM DUAL;
9
SQL使用技巧
序列的使用
创建一个序列 CREATE sequence seq_service_id start with 10000 increment by 1;
from dual;--去年整年几天 Select length(‘I am just 12 years old’) from dual;--计算字
符串长度 Select user from dual;--当前用户的ID号
4
SQL使用技巧
如何搜索出前N条记录 Select * from train_service_tab where