oraclePLSQL语法详细手册.docx

上传人:b****2 文档编号:3159176 上传时间:2023-05-05 格式:DOCX 页数:96 大小:59.03KB
下载 相关 举报
oraclePLSQL语法详细手册.docx_第1页
第1页 / 共96页
oraclePLSQL语法详细手册.docx_第2页
第2页 / 共96页
oraclePLSQL语法详细手册.docx_第3页
第3页 / 共96页
oraclePLSQL语法详细手册.docx_第4页
第4页 / 共96页
oraclePLSQL语法详细手册.docx_第5页
第5页 / 共96页
oraclePLSQL语法详细手册.docx_第6页
第6页 / 共96页
oraclePLSQL语法详细手册.docx_第7页
第7页 / 共96页
oraclePLSQL语法详细手册.docx_第8页
第8页 / 共96页
oraclePLSQL语法详细手册.docx_第9页
第9页 / 共96页
oraclePLSQL语法详细手册.docx_第10页
第10页 / 共96页
oraclePLSQL语法详细手册.docx_第11页
第11页 / 共96页
oraclePLSQL语法详细手册.docx_第12页
第12页 / 共96页
oraclePLSQL语法详细手册.docx_第13页
第13页 / 共96页
oraclePLSQL语法详细手册.docx_第14页
第14页 / 共96页
oraclePLSQL语法详细手册.docx_第15页
第15页 / 共96页
oraclePLSQL语法详细手册.docx_第16页
第16页 / 共96页
oraclePLSQL语法详细手册.docx_第17页
第17页 / 共96页
oraclePLSQL语法详细手册.docx_第18页
第18页 / 共96页
oraclePLSQL语法详细手册.docx_第19页
第19页 / 共96页
oraclePLSQL语法详细手册.docx_第20页
第20页 / 共96页
亲,该文档总共96页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

oraclePLSQL语法详细手册.docx

《oraclePLSQL语法详细手册.docx》由会员分享,可在线阅读,更多相关《oraclePLSQL语法详细手册.docx(96页珍藏版)》请在冰点文库上搜索。

oraclePLSQL语法详细手册.docx

oraclePLSQL语法详细手册

oraclePLSQL语法详细手册

 

 

一、CREATETABLE语句3

二、CREATESEQUENCE语句5

三、CREATEVIEW语句6

四、INSERT语句:

7

五、UPDATE语句:

9

六、DELETE语句:

10

七、TRUNCATE语句:

11

八、各类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

六、PACKAGE54

七、触发器56

八、应用实例58

 

1、Createtable语句

语句:

CREATETABLE[schema.]table_name

({columndatatype[DEFAULTexpr][column_constraint]...

|table_constraint}

[,{columndatatype[DEFAULTexpr][column_constraint]...

|table_constraint}]...)

[[PCTFREEinteger][PCTUSEDinteger]

[INITRANSinteger][MAXTRANSinteger]

[TABLESPACEtablespace]

[STORAGEstorage_clause]

[RECOVERABLE|UNRECOVERABLE]

[PARALLEL([DEGREE{integer|DEFAULT}]

[INSTANCES{integer|DEFAULT}]

|NOPARALLEL]

[CACHE|NOCACHE]

|[CLUSTERcluster(column[,column]...)]]

[ENABLEenable_clause

|DISABLEdisable_clause]...

[ASsubquery]

表是Oracle中最重要的数据库对象,表储备一些相似的数据集合,这些数据描述成若干列或字段.createtable语句的差不多形式用来在数据库中创建容纳数据行的表.createtable语句的简单形式接收表名,列名,列数据类型和大小.除了列名和描述外,还能够指定约束条件,储备参数和该表是否是个cluster的一部分.

Schema用来指定所建表的owner,如不指定则为当前登录的用户.

Table_name用来指定所创建的表名,最长为30个字符,但不能够数字开头(可为下划线),但不可同其它对象或Oracle的保留字冲突.

Column用来指定表中的列名,最多254个.

Datatype用来指定列中储备什么类型的数据,并保证只有有效的数据才能够输入.

column_constraint用来指定列约束,如某一列不可为空,则可指定为notnull.

table_constraint用来指定表约束,如表的主键,外键等.

Pctfree用来指定表中数据增长而在Oracle块中预留的空间.DEFAULT为10%,也确实是讲该表的每个块只能使用90%,10%给数据行的增大时使用.

Pctused用来指定一个水平线,当块中使用的空间低于该水平线时才能够向该中加入新数据行.

Parallel用来指定为加速该表的全表扫描能够使用的并行查询进程个数.

Cache用来指定该表为最应该缓存在SGA数据库缓冲池中的候选项.

Cluster用来指定该表所储备的cluster.

Tablespace用来指定用数据库的那个分区来储备该表的数据.

Recoverable|Unrecoverable用来决定是否把对本表数据所作的变动写入Redo文件.以复原对数据的操作.

As当不指定表的各列时,可利用As子句的查询结果来产生数据库结构和数据.

例:

1)createtablemytab1e(mydecdecimal,

myintinteter)

tablespaceuser_data

pctfree5

pctused30;

2)createtablemytable2

as(select*frommytable1);

2、

createsequence语句

语句:

CREATESEQUENCE[schema.]sequence_name

[INCREMENTBYinteger]

[STARTWITHinteger]

[MAXVALUEinteger|NOMAXVALUE]

[MINVALUEinteger|NOMINVALUE]

[CYCLE|NOCYCLE]

[CACHEinteger|NOCACHE]

[ORDER|NOORDER]

序列用来为表的主键生成唯独的序列值.

Incrementby指定序列值每次增长的值

Maxvalue指定产生的序列的最大值

Minvalue指定产生的序列的最小值

Cycle指定当序列值逵到最大或最小值时,该序列是否循环.

Cache指定序列生成器一次缓存的值的个数

Order指定序列中的数值是否按访咨询顺序排序.

例:

1)createsequencemyseq

incrementby4

startwith50

maxvalue60

minvalue50

cycle

cache3;

2)

sql>createsequencenew_s;

sql>insertintonew(new_id,last_name,first_name)

values(new_s.nextval,’daur’,’permit’);

 

3、

createview语句

语句:

CREATE[ORREPLACE][FORCE|NOFORCE]VIEW[schema.]view_name

[(alias[,alias]...)]

ASsubquery

[WITHCHECKOPTION[CONSTRAINTconstraint]]

视图实际上是储备在数据库上旳select语句.每次在sql语句中使用视图时,表示该视图的select语句就用来得到需要的数据.

Orreplace创建视图时假如视图已存在,有此选项,新视图会覆盖旧的

视图.

Force如有此选项,当视图基于的表不存在或在该模式中没有创建视图的权限时,也能够建立视图.

Assubquery产生视图的select查询语句

Withcheckoption假如视图是基于单表的且表中所有的非空列都包含在视图中时,该视图可用于insert和update语句中,本选项保证在每次插入或更新数据后,该数据能够在视图中查到

例:

1)createorplaceviewnew_v

as

selectsubstr(d.d_last_name,1,3),

d.d_lastname,d.d_firstname,b.b_start_date,b.b_location

fromnew1d,

new2b

whered.d_lastname=b.b_lastname;

4、

INSERT语句:

1.语法

INSERTINTO[schema.]{table|view|subquery}[@dblink]

[(column[,column]...)]

{VALUES(expr[,expr]...)|subquery}

[WHEREcondition]

2.插入单行

使用VALUES关键词为新行的每一列指定一个值.假如不明白某列的值,能够使用NULL关键词将其值设为空值(两个连续的逗号也能够表示空值,也可使用NULL关键词)

插入一行时试图为那些NOTNULL的列提供一个NULL值,会返回错误信息.

举例:

插入一条记录到DEPARTMENT表中

 

INSERTINTODEPARTMENT

(DEPARTMENT_ID,NAME,LOCATION_ID)

VALUES(01,’COMPUTER’,167)

3.插入多行

将SELECT语句检索出来的所有数据行都插入到表中.这条语句通常在从一个表向另一个表快速复制数据行.

举例:

INSERTINTOORDER_TEMP

SELECTA.ORDER_ID,B.ITEM_ID,C.NAME,E.FIRST_NAME||'.'||E.LAST_NAME,

A.ORDER_DATE,A.SHIP_DATE,D.DESCRIPTION,B.ACTUAL_PRICE,

B.QUANTITY,B.TOTAL

FROMSALES_ORDERA,ITEMB,CUSTOMERC,

PRODUCTD,EMPLOYEEE

WHEREMONTHS_BETWEEN(TO_DATE(A.ORDER_DATE),TO_DATE('01-7月-91'))>0

ANDA.CUSTOMER_ID=C.CUSTOMER_ID

ANDC.SALESPERSON_ID=E.EMPLOYEE_ID

ANDA.ORDER_ID=B.ORDER_ID

ANDB.PRODUCT_ID=D.PRODUCT_ID

4.从其它表复制数据:

要快速地从一个表向另一个尚不存在的表复制数据,能够使用CREATETABLE语句定义该表并同时将SELECT语句检索的结果复制到新表中.

CREATETABLEEMPLOYEE_COPY

AS

SELECT*

FROMEMPLOYEE

5、

UPDATE语句:

1.语法

UPDATE[schema.]{table|view|subquery}[@dblink][alias]

SET{(column[,column]...)=(subquery)

|column={expr|(subquery)}}

[,{(column[,column]...)=(subquery)

|column={expr|(subquery)}}]...

[WHEREcondition]

UPDATE语句更新所有满足WHERE子句条件的数据行.同样,该语句能够用SELECT语句检索得到.但SELECT必须只检索到一行数据值.否则报错.而且每更新一行数据,均要执行一次SELECT语句.

举例:

UPDATEEMPLOYEE_COP

SETSALARY=

SALARY-400

WHERETO_NUMBER(TO_CHAR(HIRE_DATE,'YYMMDD'))<850101

UPDATEITEM_COPA

SETA.ACTUAL_PRICE=

SELECTB.LIST_PRICE

FROMPRICEB,SALES_ORDERC

WHEREA.PRODUCT_ID=B.PRODUCT_IDAND

A.ORDER_ID=C.ORDER_IDAND

TO_NUMBER(TO_CHAR(C.ORDER_DATE,'YYYYMMDD'))BETWEEN

TO_NUMBER(TO_CHAR(B.START_DATE,'YYYYMMDD'))AND

NVL(TO_NUMBER(TO_CHAR(END_DATE,'YYYYMMDD')),29991231)

6、

DELETE语句:

1.语法

DELETE[FROM][schema.]{table|view}[@dblink][alias]

[WHEREcondition]

DELETE语句删除所有满足WHERE子句条件的数据行.

举例:

DELETEFROMitem

WHEREORDER_ID=510

7、

TRUNCATE语句:

1.语法

TRUNCATE[schema.]table

 

8、

各类Functions:

1.转换函数:

1.1.函數:

TO_CHAR

语法:

TO_CHAR(number[,format])

用途:

将一个数值转换成与之等价的字符串.假如不指定格式,将转换成最简单的字符串形式.假如为负数就在前面加一个减号.

Oracle为数值提供了专门多格式,下表列出了部分可同意的格式:

元素

描述

示例

结果

9

返回指定位数的数值,前面为0,显示为空格

99999

784

-578

1234567

45.895

‘784’

‘-578’

‘######’

‘46’

插入小数点

9999.99

784

45.3482

‘784.00’

’45.35’

在结果串的指定位置插入逗号

9,999,999

784

1234567

0.44

‘784’

‘1,234,567’

‘0’

$

返回值前面加一个元符号

$99,999

784

-578

‘$784’

‘-$578’

B

结果的整数部分假如是0,就显示成空格

B9999.9

784

0.44

‘784.0’

‘.4’

S

返回有正负号的数值

S9999

784

‘+784’

EEEE

以科计数法表示数值

9.9EEEE

45

0.0666

‘4.5E+01’

‘6.7E-02’

 

1.2.

函數:

TO_CHAR

语法:

TO_CHAR(date[,format])

用途:

将按format参数指定的格式将日期值转换成相应的字符串形式.同样,Oracle提供许多的格式模型,用户能够用它们的组合来表示最终的输出格式.唯独限制确实是最终的掩码不能超过22个字符.下表列出了部分日期格式化元素.

Oracle为数值提供了专门多格式,下表列出了部分可同意的格式:

格式

意义

D

用数字表示星期几(1,2,3,4,5,6,7)

DY

用三个字符表示星期几的缩写形式(MON)

DAY

星期几的完整表示(MONDAY)

DD

用数字表示一月中的几号

DDD

用数字表示年份中的天数

W

一月中的星期数

WW

一年中的星期数

MM

用数字表示月数

MON

用三个字母表示月的缩写(APR)

MONTH

月的完整英文表示(FEBRUARY)

Y

年份中的最后一个数字(9)

YY

年份中的最后二个数字(99)

YYY

年份中的最后三个数字(999)

YYYY

年份用四个数字表示(1999)

YEAR

年份的字母全部拼写(NINETEEN-NINETY-NINE)

AM或PM

午前或午后表示符

HH

用小时表示日期

MI

分钟表示小时

SS

秒钟表示分钟

SSSS

自午夜以来的秒数(那个数字经常在0-86399之间)

 

1.3.

函數:

TO_DATE

语法:

TO_DATE(string,format)

用途:

依照给定的格式将一个字符串转换成Oracle的日期值.

该函数的要紧用途是用来验证输入的日期值.在应用程序中,用户必须验证输入日期是否有效,如月份是否在1~12之间和日期中的天数是否在指定月份的天数内.

1.4.

函數:

TO_NUMBER

语法:

TO_NUMBER(string[,format])

用途:

该函数将一个字符串转换成相应的数值.关于简单的字符串转换数值(例如几位数字加上小数点).格式是可选的.

 

2.

日期函数

2.1.函數:

ADD_MONTHS

语法:

ADD_MONTHS(date,number)

用途:

在日期date上加指定的月数,返回一个新日期.假如给定为负数,返回值为日期date之前几个月的日期.number应当是个整数,假如是小数,正数被截为小于该数的最大整数,负数被截为大于该数的最小整数.

例如:

SELECTTO_CHAR(ADD_MONTHS(sysdate,1),

'DD-MON-YYYY')"Nextmonth"

FROMdual

Nextmonth

-----------

19-FEB-2000

 

2.2.函數:

LAST_DAY

语法:

LAST_DAY(date)

用途:

返回日期date所在月份的最后一天的日期.

例如:

SELECTSYSDATE,LAST_DAY(SYSDATE)"Last",

LAST_DAY(SYSDATE)-SYSDATE"DaysLeft"

FROMDUAL

SYSDATELastDaysLeft

----------------------------

19-JAN-0031-JAN-0012

2.3.函數:

MONTHS_BETWEEN

语法:

MONTHS_BETWEEN(date1,date2)

用途:

例如:

SELECTMONTHS_BETWEEN(TO_DATE('02-02-1992','MM-DD-YYYY'),

TO_DATE('01-01-1992','MM-DD-YYYY'))

"Months"

FROMDUAL

Months

----------

1.03225806

SELECTMONTHS_BETWEEN(TO_DATE('02-29-1992','MM-DD-YYYY'),

TO_DATE('01-31-1992','MM-DD-YYYY'))

"Months"

FROMDUAL

Months

----------

1

 

2.4.函數:

NEXT_DAY

语法:

NEXT_DAY(date,day)

用途:

该函数返回日期date指定若天后的日期.注意:

参数day必须为星期,能够星期几的英文完整拼写,或前三个字母缩写,或数字1,2,3,4,5,6,7分不表示星期日到星期六.例如,查询返回本月最后一个星期五的日期.

例如:

SELECTNEXT_DAY((last_day(sysdate)-7),'FRIDAY')

FROMdual

NEXT_DAY(

---------

28-JAN-00

 

2.5.函數:

ROUND

语法:

NEXT_DAY(date[,format])

用途:

该函数把一个日期四舍五入到最接近格式元素指定的形式.假如省略format,只返回date的日期部分.例如,假如想把时刻(24/01/0014:

58:

41)四舍五入到最近的小时.下表显示了所有可用格式元素对日期的阻碍.

FormatElement

Result

SS

24/01/0014:

58:

41

MI

24/01/0014:

59:

00

HH

24/01/0015:

00:

00

DD

25/01/0000:

00:

00

MM

01/02/0100:

00:

00

YY

01/01/0000:

00:

00

CC

01/01/0000:

00:

00

例如:

SELECTto_char(ROUND(sysdate,'HH'),'DD-MON-YYHH24:

MI:

SS')

FROMdual

TO_CHAR(ROUND(SYSDATE,'HH'),'DD-MON-YYHH24:

MI:

SS')

-----------------------------------------------------------------

24-JAN-0015:

00:

00

2.6.函數:

TRUNC

语法:

TRUNC(date[,format])

用途:

TRUNC函数与ROUND专门相似,它依照指定的格式掩码元素,只返回输入日期用户所关怀的那部分,与ROUND有所不同,它删除更精确的时刻部分,而不是将其四舍五入.

例如:

SELECTTRUNC(sysdate)

FROMdual

TRUNC(SYS

---------

24-JAN-00

FLOOR函数:

求两个日期之间的天数用;

selectfloor(sysdate-to_date('20180805','yyyymmdd'))fromdual;

 

3.

字符函数

3.1.函數:

ASCII

语法:

ASCII(character)

用途:

例如:

SELECTASCII('Z')

FROMdual

ASCII('Z')

----------

90

 

3.2.函數:

CHR

语法:

CHR(number)

用途:

该函数执行ASCII函数的反操作,返回其ASCII码值等于数值number的字符.该函数通常用于向字符串中添加不可打印字符.

例如:

SELECTCHR(65)||'BCDEF'

FROMdual

CHR(65

------

ABCDEF

 

3.3.

函數:

CONCAT

语法:

CONCAT(string1,string2)

用途:

该函数用于连接两个字符串,将string2跟在string1后面返回,它等价于连接操作符(||).

例如:

SELECTCONCAT(‘Thisisa’,’computer’)

FROMdual

CONCAT('THISISA','

------------------

Thisisacomputer

它也能够写成如此:

SELECT‘Thisisa’||’computer’

FROMdual

'THISISA'||'COMPUT

------------------

Thisisacomputer

这两个语句的结果是完全相同的,但应尽可能地使用||操作符.

 

3.4.函數:

INITCAP

语法:

INITCAP(string)

用途:

该函数将字符串string中每个单词的第1个字母变成大写字母,其它字符为小写字母.

 

例如:

SELECTINITCAP(first_name||'.'||last_name)

FROMemployee

WHEREdepartment_id=12

INITCAP(FIRST_NAME||'.'||LAST_N

-------------------------------

Chris.Alberts

Matthew.Fisher

Grace.Roberts

Michael.Douglas

 

3.5.函數:

INSTR

语法:

INST

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2