oraclePLSQL语法详细手册
更新时间:2023-04-11 17:48:01 阅读量: 实用文档 文档下载
oraclePLSQL语法详细手册
一、CREATE TABLE 语句 (3)
二、CREATE SEQUENCE 语句 (5)
三、CREATE VIEW 语句 (6)
四、INSERT语句: (7)
五、UPDATE语句: (9)
六、DELETE语句: (10)
七、TRUNCATE语句: ............................................................................. II
八、各类FUNCTIONS: (12)
1.转换函数: (12)
2.日期函数. (16)
3.字符函数. (20)
4.数值函数. (28)
5.单行函数: (33)
6.多行?函数. (35)
第二部分PL/SQL语法部分 (41)
一、PL/SQL语言简介 (41)
二、变量讲明 (48)
三、PL/SQL操纵程序流 (52)
四、储备过程 (54)
五、储备函数 (54)
六、PACKAGE (54)
七、触发器 (56)
八、应用实例 (58)
Create table 语句
语句:CREATE TABLE [schema. Jtable_name
({ column datatype 'DEFAULT expr^ [co1umn_constraint J I
table_constraint}
[,{ column datatype [DEFAULT expr^ [co1umn_constra i nt J
I table_constraint} ]...)
[[PCTFREE integer] [PCTUSED integer]
[INITRANS integer] [MAXTRANS integer]
[TABLESPACE tablespace]
[STORAGE storage_clause]
[RECOVERABLE I UNRECOVERABLE ]
[PARALLEL ( [ DEGREE { integer I DEFAULT }]
[INSTANCES { integer I DEFAULT }]
)
I NOPARALLEL ]
[CACHE I NOCACHE ]
I [CLUSTER cluster (column [, columrf...)]]
[ENABLE enable_clause
I DISABLE disable_clause ]...
[AS subquery
表是Oracle中最重要的数据库对象,表储备一些相似的数据集合,这些数据描述成若干列或字段.create table语句的差不多形式用来在数据库中创建容纳数据行的表.create table语句的简单形式接收表名,列名,列数据类型和大小.除了列名和描述外,还能够指定约束条件,储备参数和该表是否是个cluster的一部分.
Schema用来指定所建表的owner,如不指定则为当前登录的用户.
Table_name用来指定所创建的表名,最长为30个字符,但不能够数字开头(可为下划线),但不可同其它对象或Oracle的保留字冲突.
Column用来指定表中的列名,最多254个.
Datatype用来指定列中储备什么类型的数据,并保证只有有效的数据才能够输入. co 1 umn_constraint用来指定列约束,如某一列不可为空,则可指定为not null.
table_constraint用来指定表约束,如表的主键,外键等.
Pct free用来指定表中数据增长而在Oracle块中预留的空间.DEFAULT为10%,也确实是讲该表的每个块只能使用90%, 10%给数据行的增大时使用.
Pctused用来指定一个水平线,当块中使用的空间低于该水平线时才能够向该中加入新数据行.
Parallel用来指定为加速该表的全表扫描能够使用的并行查询进程个数.
Cache用来指定该表为最应该缓存在SGA数据库缓冲池中的候选项.
Cluster用来指定该表所储备的cluster.
Tablespace用来指定用数据库的那个分区来储备该表的数据.
Recoverable|Unrecoverable用来决定是否把对本表数据所作的变动写入Redo文件.以复原对
数据的操作.
As当不指定表的各列时,可利用As子句的查询结果来产生数据库结构和数据.
例:
1) create table mytable(mydec decimal,
myint inteter)
tablespace user_data pctfree 5
pctused 30;
2) create table mytable2
as ( select * from mytablel);
create sequence 语句
语句: CREATE SEQUENCE [schema. ]sequence_naine
[INCREMENT BY integer]
[START WITH integer]
[MAXVALUE integer I NOMAXVALUE]
[MINVALUE integer I NOMINVALUE]
[CYCLE I NOCYCLE]
[CACHE integer I NOCACHE]
[ORDER I NOORDER] 序列用来为表的主键生成唯独的序列值.
Increment by指定序列值每次增长的值Maxvalue指定产生的序列的最大值Minvalue指定产生的序列的最小值Cycle指定当序列值逵到最大或最小值时,该序列是否循环. Cache指定序列生成器一次缓存的值的个数
Order指定序列中的数值是否按访咨询顺序排序.
例:
1)create sequence niyseq
increment by 4 start with 50 maxvalue 60 minvalue 50
cycle cache 3;
2)
sql> create sequence new_s;
sql>insert into new (new_id, last_name, first_name) values(new_s.
nextval, 'daur*', 'peimit');
create view 语句
语句:CREATE [OR REPLACE] [FORCE I NOFORCE] VIEW [schema. ]view_name
[(alias [,alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
视图实际上是储备在数据库上旳select语句.每次在sql语句中使用视图时, 表示该视图的select语句就用来得到需要的数据.
Or replace创建视图时假如视图已存在,有此选项,新视图会覆盖旧的视图.
Force如有此选项,当视图基于的表不存在或在该模式中没有创建视图的权限时,也能够建立视图.
As subquery产生视图的select査询语句
With check option假如视图是基于单表的且表中所有的非空列都包含在视图中时,该视图可用于insert和update语句中,本选项保证在每次插入或更新数据后,该数据能够在视图中查到
例:
1) create or place view new_v
as
select substr(d. d_last_nanie, 1, 3),
d. d_lastname, d. d_firstname, b. b_start_date, b. b_location from
newl d,
new2 b
where d. d_lastname=b. b_lastname;
四、INSERT语句:
1.语法
INSERT INTO [schema. ]{table I view | subquery }[gdblinkj
[(column [, column] ...)]
{VALUES (expr [, exprj ...) I subquery}
[WHERE condition]
2.插入单行
使用VALUES关键词为新行的每一列指定一个值.假如不明口某列的值,能够使用NULL关键词将其值设为空值(两个连续的逗号也能够表示空值,也可使用NULL关键词)
插入一行时试图为那些NOT NULL的列提供一个NULL值,会返回错误信息.
举例:
插入一条记录到DEPARTMENT表中
INSERT INTO DEPARTMENT
(DEPARTMENT.ID, NAME, LOCATION_ID)
VALUES (01,'COMPUTER', 167)
3.插入多行
将SELECT语句检索出来的所有数据行都插入到表中.这条语句通常在从一个表向另一个表快速复制数据行.
举例:
INSERT INTO OR1)ER_TEMP
SELECT A. OR1)ER_I1), B. ITEM,ID, C. NAME, E. FIRST_NAME| I* / 11E. LAST_NAME,
A.ORDER_DATE, A. SHIP_DATE, I). DESCRIPTION,
B. ACTUAL_PRICE,
B.QUANTITY, B. TOTAL
FROM SALES_ORI)ER A, ITEM B, CUSTOMER C,
PRODUCT 1), EMPLOYEE E
WHERE MONTHS_BETWEEN(TO_DATE(A. ORI)ER_DATE), TO_DATE(J 01-7 月-91’ ))>0
AND A. CUSTOMER.11)=C. CUSTOMER」】)
AND C. SALESPERSON. I D=E. EMPLOYEE_I1)
AND A. OR1)ER_ I I)=B. OR1)ER_ 11)
AND B. PRODUCT 11)=D. PRODUCT ID
4.从其它表复制数据:
要快速地从一个表向另一个尚不存在的表复制数据,能够使用CREATE TABLE语句定义该表并同时将SELECT语句检索的结果复制到新表中.
CREATE TABLE EMPLOYEE_COPY
AS
SELECT *
FROM EMPLOYEE
五、UPDATE语句:
1.语法
UPDATE [schema. ](table I view | subquery}[@dblink: [alias]
SET { (column [, column] ... ) = (subquery)
I column = { expr I (subquery) } }
[, { (column [, column] ... ) = (subquery)
I column = { expr I (subquery) } }]...
[WHERE condition]
UPDATE语句更新所有满足WHERE子句条件的数据行.同样,该语句能够用SELECT 语句检索得到.但SELECT必须只检索到一行数据值.否则报错.而且每更新一行数据,均要执行一次SELECT语句.
举例:
UPDATE EMPLOYEE_COP
SET SALARY=
SALARY-400
WHERE TO_NUMBER(TO_CHAR(HIRE_DATE,J YYMMDI)' )X850101
UPDATE ITEM_COP A
SET A.ACTUAL_PRICE=
(
SELECT B.LIST_PRICE
FROM PRICE B, SALES_ORDER C
WHERE A. PRODUCT. II)=B. PRODUCT. 11) AND
A. ORDER_ID=C. ORDER.ID AND
TO_NUMBER(TO_CHAR(C. OR1)ER_DATE,' YYYYMMDD' )) BETWEEN
TO_NUMBER(TO_CHAR(B. START_DATE,' YYYYMMDD' )) AND
NVL(TO_NUMBER(TO_CHAR(END_DATE,' YYYYMMDD' )), 29991231)
六、DELETE语句:
1.语法
DELETE [FROM] [schema. ]{tab1e I view}[gdblink] [alias] [WHERE condition] DELETE语句删除所有满足WHERE子句条件的数据行.
举例:
DELETE FROM item
WHERE ORDER ID=510
七、TRUNCATE 语句:
1.语法
TRUNCATE [schema. J table
八、各类Functions:
1-转换函数:
1.1.
函數:TO_CHAR
语法:
TO_CHAR(number[, format])
用途:
将一个数值转换成与之等价的字符串.假如不指定格式,将转换成最简单的字符串形式. 假如为负数就在前面加一个减号.
Oracle为数值提供了专门多格式,下表列出了部分可同意的格式:
1.2.函數:TO_CHAR
语法:
TO_CHAR(date[, format])
用途:
将按format参数指定的格式将日期值转换成相应的字符串形式.同样,Oracle提供许多的格式模型,用户能够用它们的组合来表示最终的输出格式.唯独限制确实是最终的掩码不能超过22个字符?下表列出了部分日期格式化元素.
Oracle
1.3.函數:TO_DATE
语法:
TO_DATE(string, format)
用途:
依照给定的格式将一个字符审转换成Oracle的日期值.
该函数的要紧用途是用来验证输入的日期值.在应用程序中,用户必须验证输入日期是否有效,如月份是否在卜12之间和日期中的天数是否在指定月份的天数内.
1.4.函數:TO_NUMBER
语法:
TO_NUMBER(string[, format])
用途:
该函数将一个字符串转换成相应的数值.关于简单的字符串转换数值(例如儿位数字加上小数点)?格式是可选的.
2.日期函数
2.1.函數:ADD_MONTHS
语法:
ADI)_MONTHS(date, number)
用途:
在日期date上加指定的月数,返回一个新日期.假如给定为负数,返回值为日期date之前儿个月的日期.number应当是个整数,假如是小数,正数被截为小于该数的最大整数,负数被截为大于该数的最小整数.
例如:
SELECT TO_CHAR(ADD_MONTHS(sysdate, 1),
'DD-MON-YYYY' ) " Next month"
FROM dual
Next month
19-FEB-2000
2.2.函數:LAST_DAY
语法:
LAST_DAY(date)
用途:
返回日期date所在月份的最后一天的日期.
例如:
SELECT SYSDATE, LASTJ)AY(SYSDATE) ”Last”, LAST_DAY(SYSI)ATE) - SYSDATE M Days Left"
FROM DUAL
SYSDATE Last Days Left
19-JAN-00 31-JAN-00 12
2.3.函M:MONTHS_BETWEEN
语法:
MONTHS_BETWEEN(datel, date2)
用途:
例如:
SELECT MONTHS_BETWEEN(TO_DATE(J 02-02-1992', * MM-DI)-YYYY,),
TO_DATE(' 01-01-1992',,MM-DD-YYYY'))
” Months"
FROM DUAL
Months
1.03225806
SELECT MONTHS_BETWEEN(TO_DATE(, 02-29-1992', J MM-D1)-YYYY,), TO_DATE(' 01 -31 -1992',
‘ MM-I)1)-YYYY'))
H Months"
FROM DUAL
Months
2.4.函數:NEXT_DAY 语法:
NEXT_DAY(date, day) 用途:
该函数返回日期date指定若天后的日期.注意:参数day必须为星期,能够星期儿的英文完整拼
写,或前三个字母缩写,或数字1,2, 3,4, 5, 6, 7分不表示星期日到星期六.例如,查询返回本月最后一个星期五的日期.
例如:
SELECT NEXT_DAY((last_day(sysdate)-7),'FRIDAY')
FROM dual
NEXT_DAY(
28-JAN-00
2.5.函數:ROUND
语法:
NEXT_DAY(date[, format])
用途:
该函数把一个日期四舍五入到最接近格式元素指定的形式.假如省略format,只返回date的日期部分.例如,假如想把时刻(24/01/00 14:58:41)四舍五入到最近的小时.下表显示了所有可用格式元素对日期的阻碍.
例如:
SELECT to_char(ROUND(sysdate,'HH' ),'DD-MON-YY HH24:MI:SS,)
FROM dual
TO_CHAR(ROUND(SYSDATE,' HH' ),' DD-M0N-YYHH24:MI:SS')
24-JAN-00 15:00:00
2.6.函數:TRUNC
语法:
TRUNC(date[, format])
用途:
TRUNC函数与ROUND专门相似,它依照指定的格式掩码元素,只返回输入日期用户所关怀的那部分,与ROUND有所不同,它删除更精确的时刻部分,而不是将其四舍五入.
例如:
SELECT TRUNC(sysdate)
FROM dual
TRUNCCSYS
24-JAN-00
FLOOR函数:求两个日期之间的天数用;
select f loor(sysdate - to_date(* 20180805*, * yyyymindd' )) from dual;
3.字符函数
3.1.函數:ASCII
语法:
ASCI I(character)
用途:
例如:
SELECT ASCIICZ,)
FROM dual
ASCI I ('Z')
90
3.2.函數:CHR
语法:
CHR(number)
用途:
该函数执行ASCII函数的反操作,返回其ASCII码值等于数值number的字符.该函数通常用于向字符串中添加不可打印字符.
例如:
SELECT CHR(65)||'BCDEF'
FROM dual
CHR(65
ABCDEF
3.3.函數:CONCAT
语法:
CONCAT(stringl, string2)
用途:
该函数用于连接两个字符串,将string2跟在stringl后面返回,它等价于连接操作符(II).
例如:
SELECT CONCATCThis is a',' computer*')
FROM dual
CONCAT('THISISA','
This is a computer 它也能够写成如此:
SELECT 'This is a'11' computer' FROM dual
'THISISA'丨I'COMPUT
This is a computer
这两个语句的结果是完全相同的,但应尽可能地使用丨I操作符.
3.4.函數:INITCAP
语法:
INITCAP(string)
用途:
该函数将字符串string中每个单词的第1个字母变成大写字母,其它字符为小写字母.
正在阅读:
oraclePLSQL语法详细手册04-11
所有的雨都会停的11-03
第五课:企业和劳动者 公司的经营教学设计08-11
热工学-传热习题04-07
浅谈企业管理中有效沟通的作用01-13
(十三五)2017-2022年中国数码冲印市场监测分析与发展趋势研究预测报告(目录)08-24
2022年智慧树知道网课《社会心理学(山东联盟—济宁医学院)》课后04-17
问题孩子还是问题家长 - 图文05-11
基本型金属缠绕垫片05-19
小学生赏樱花作文06-15
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- oraclePLSQL
- 语法
- 手册
- 详细
- 部编版小学五年级语文上册期末分类复习:句子专项含答案【新】
- 幼儿心理健康与行为习惯的培养新
- 确定全天每餐能量摄取量
- 大地电磁野外工作流程edi
- 【完整版】2022-2025年中国串串香行业发展趋势预测研究报告
- 2022年山东农业大学生命科学学院801生物化学(自命题)考研冲刺五
- 【完整版】2022-2025年中国CTP设备行业快速做大市场规模策略制定
- 50.内部人士万字长文解密:招商引资苏州模式,到底怎么干?
- 大树移植工程检验批质量验收记录
- 中石化招聘考试历年真题(2013-2015)及经验分享-无私奉献
- 【完整版】2022-2025年中国包子铺行业基于产业周期研究与战略决
- 山西省吕梁学院附中2022年高一上学期第一次月考化学试题 Word版
- 新学期黑板报内容资料及图片
- 邮政信息化专业人才需求报告国家示范校建设Word版
- 高分子材料成型加工综合实验指导书
- 结构化面试“沟通协调类”答题思路及试题解析
- 临床三基考试试题(附答案)
- 四川省遂宁市射洪县射洪中学校最新高一物理下学期期中试题
- 世界先进城市如何国际化
- 大连理工大学专升本高等数学题库道