Oracle全Word文件下载.docx
- 文档编号:22713828
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:29
- 大小:22.90KB
Oracle全Word文件下载.docx
《Oracle全Word文件下载.docx》由会员分享,可在线阅读,更多相关《Oracle全Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
manager'
执行步骤:
先执行selectsalfromscott.empwhereename='
可能返回多个值:
如:
1250,1130,2500
再执行:
1250orsal>
1130orsal>
2500;
带some的嵌套查询:
wheresal=some(selectsalfromscott.empwhereename='
wheresal=1250orsal=1130orsal=2500;
带all的嵌套查询:
all(selectsalfromscott.empwhereename='
1250andsal>
1130andsal>
带exists的嵌套查询:
whereexists
(select*fromscott.empwherescott.emp.deptno=scott.dept.deptno);
集合并操作:
(selectdeptnofromscott.emp)
union
(selectdeptnofromscott.dept);
交集合操作:
intersect
差集合操作:
即属于集合A且不属于集合B的元素总和就是差集。
(selectdeptnofromscott.dept)
minus
(selectdeptnofromscott.emp);
5、使用函数查询:
ceil函数:
selectsal,sal/100,ceil(sal/100)fromscott.emp;
ceil(n)取大于等于数值n的最小整数。
如sal/100=78.39,则ceil(sal/100)=79
注意它并不是四舍五入的。
同时注意oracle中sal/100指的不是整除。
floor函数:
floor(n)取小于等于数值n的最大整数。
如:
sal/100=17.12,则floor(sal/100)=17
mod(m,n)函数:
mod(m,n)取m整除n后的余数:
如mod(17,3)=2,mod(17/2)=1
power(m,n)取m的n次方
power(3,2)=9
round(m,n)
四舍五入,保留n位。
round(1.333,2)=1.33
sign(n)
n>
0取1,n=0取0,n<
0取-1;
avg(字段名)
求平均值,字段为数值型。
count(*)
统计总数;
min(字段名),max(字段名)
计算数值型字段最小数最大数。
sum(字段名)计算数值型字段总和。
6、表间复制
注意没有mssql中语句:
select*into..from...
用法如下:
createtablesystem.username1
as
(
select*fromsystem.username
);
即创建表username1,并将username表中的数据复制到username1表。
7、删除语句:
deletefrom
truncatefromtablename
这两个语句的区别:
delete删除的数据内容会存储在系统回滚段中,需要的时候,数据仍可回滚恢复,但truncate命令删除的数据是不可恢复的。
8、系统默认账户名:
密码:
systemmanager
syschange_on_install
scotttiger
9、创建表格时使用主键、外键约束
CREATETABLE"
SCOTT"
."
STUDENT"
("
STUDENT_ID"
NUMBER(8)NOTNULL,
"
NAME"
VARCHAR2(10byte)NOTNULL,"
BIRTHDAY"
DATENOTNULL,
DIRECTOR_ID"
NUMBER(6)NOTNULL,
CONSTRAINT"
导师编码外键"
FOREIGNKEY("
)
REFERENCES"
DIRECTOR"
("
),
学生编码主键"
PRIMARYKEY("
USINGINDEX
TABLESPACE"
USERS"
STORAGE(INITIAL64KNEXT0KMINEXTENTS1MAXEXTENTS
2147483645PCTINCREASE0)PCTFREE10INITRANS2MAXTRANS255)
PCTFREE10PCTUSED0INITRANS1MAXTRANS
255
2147483645PCTINCREASE0)
LOGGING
10、使用truncatetable时,如果不事先将导师表和学生表的外键关系去掉而直接删除导师表将会出错。
先执行:
altertablescott.student
disableconstraint"
再truncatetablescott.Direactordropstorage;
11、插入日期数据时注意的地方
INSERTINTO"
"
)
VALUES(90002,'
zhangji'
TO_DATE('
03-11月-1983'
'
dd-Mon-yyyyHH:
MI:
SSAM'
),200202)
注意BIRTHDAY为DATE类型数据,插入时应使用:
TO_DATE('
12、创建索引
CREATEUNIQUEINDEX"
ON"
13、创建约束条件
约束"
CHECK(STUDENT_ID>
9000ANDSTUDENT_ID<
90005)
14、ORACLE用户管理
用户名口令登录身份说明
syschang_on_installsysdba或sysoper,但不能以normal身份登录,可做默认系统管理员。
systemmanagersysdba或normal,但不能以sysoper身份登录,可做默认系统管理员。
scotttigernormal普通用户
aqadmaqadmsysdba或normal,高级队列管理员
Dbsnmpdbsnmpsysdba或normal,复制管理员
15、创建用户
CREATEUSER"
TEMPUSER"
PROFILE"
DEFAULT"
IDENTIFIEDBY"
sys833199"
DEFAULTTABLESPACE"
ACCOUNTUNLOCK;
GRANT"
CONNECT"
TO"
16、PL/SQLprocedurelanguage过程化SQL
如创建表:
TESTTABLE"
RECORDNUMBER"
NUMBER(4)NOT
NULL,"
CURRENTDATE"
DATENOTNULL)
在sqlplusworksheet中执行以下语句:
setserveroutputon
declare
maxrecordsconstantint:
=100;
iint:
=1;
begin
foriin1..maxrecordsloop
insertintotempuser.testtable(recordnumber,currentdate)
values(i,sysdate);
endloop;
dbms_output.put_line('
成功录入数据!
commit;
end;
在表testtable中插入了一百条数据,recordnumber从1到100,currentdate为当前系统日期值。
1、完整的PLSQL结构为:
定义语句段
执行语句段
exception
异常处理语句段
end
2、基本语法
常量:
常量名constant类型标识符[notnull]:
=值;
piconstantnumber(9):
=3.1415926;
变量:
变量名类型标识符[notnull]:
agenumber(6):
=26;
3、PLSQL中的常用的基本类型
类型标识符说明
Number数字型
Int整数型
Pls_integer整数型,产生溢出时出现错误
Char定长字符型,最大255个字符
Varchar2变长字符型,最大2000个字符
Long变长字符型,最大2GB
Date日期型
Boolean布尔型(true,false,null三都取一)
4、PLSQL中的复合类型变量
4.1、plsql中的类型与ORACLE中的类型有的含义一样,有的则不同。
这样ORACLE引入了%TYPE方法来定义变量
testtable表中字段currentdate为date类型,
在PLSQL中引入此变量类型,这样当表中字段改变时,在对应的PLSQL中的变量类型也相应改变了。
变量名数据表名。
列名%type;
使变量获得与表中某一列相同的类型。
mydatetempuser.testtable.currentdate%type;
4.2、定义记录类型的变量即多个基本数据类型捆绑在一起。
如
typemyrecordisrecord(
myrecordnumberint,
mycurrentdatedate);
srecordmyrecord;
select*intosrecordfromtempuser.testtablewhererecordnumber=21;
dbms_output.put_line(srecord.mycurrentdate);
以上定义了名为myrecord的记录类型,srecord为记录类型变量。
4.3、使用%rowtype定义变量
变量名数据表%rowtype
获得整个记录的数据类型。
mytabletempuser.testtable%rowtype;
select*intomytablefromtempuser.testtablewhererecordnum=32;
dbms_output.put_line(mytable.currentdate);
4.4、定义一维表类型变量
type表类型istableof类型indexbybinary_integer;
表变量名表类型;
其中类型可以是基本类型也可以是上面1,2,3中定义的类型
typetabletype1istableofvarchar2(4)indexbybinary_integer;
typetabletype2istableoftempuser.testtable.recordnumber%typeindexbybinary_integer;
table1tabletype1;
table2tabletype2;
table1
(1):
大学'
table1
(2):
大专'
table2
(1):
=88;
table2
(2):
=99;
dbms_output.put_line(table1
(1)||table2
(1));
dbms_output.put_line(table1
(2)||table2
(2));
以上定义了两个一维表类型tabletype1,tabletype2,相当两个一维数组,然后定义了两个一维表类型变量table1,table2.
在执行部分提供了对他们的赋值,最后通过||字符串连接符输出,输出如:
大学88大专99
在表类型变量中可以使用count,delete,first,last,next,exists,prior等属性操作,使用方法为变量名。
属性名
typetabletype1istableofvarchar2(9)indexbybinary_integer;
北京市'
青岛市'
table1(3):
上海市'
table1(4):
长沙市'
table1(5):
南昌市'
总记录数为:
||to_char(table1.count));
第一条记录:
||table1.first);
最后一条记录:
||table1.last);
第二条的前一条记录:
||table1.prior
(2));
第二条的后一条记录:
||table1.next
(2));
输出结果为:
总记录数为:
5
第一条记录:
1
最后一条记录:
第二条的前一条记录:
第二条的后一条记录:
3
4.5、定义多维表类型变量
typetabletype1istableoftesttable%rowtypeindexbybinary_integer;
select*intotable1(60)
fromtempuser.testtable
whererecordnumber=60;
dbms_output.put_line(table1(60).recordnumber||table1(60).currentdate);
输出:
6021-7月-08
5、表达式
字符表达式:
||
当变量为数值型时,需使用to_char(变更名)转换为字符名再通过dbms_output.put_line输出。
关系表达式:
in在。
。
之中
常见类型转换函数
to_char():
将其它类型转换成字符型
to_date():
将其它类型转换成日期型
to_number():
将其它类型转换成数值型
6、流程控制
条件控制1:
if条件then
语句段;
endif;
条件控制2:
语句段1;
else
语句段2;
条件控制3:
if嵌套
语句段;
示例:
num1Integer:
=12;
num2Integer:
=23;
ifnum1>
num2then
num1>
num2'
num1<
=num2'
循环控制1:
loop...exit..endloop
loop
循环语句段;
if条件语句then
exit;
退出循环的处理语句段;
=20;
=30;
iInteger:
=0;
num1:
=num1+1;
ifnum1=num2then
i:
=i+1;
共循环次数'
||to_char(i));
输出结果:
9
循环控制2:
loop...exitwhen..endloop
exitwhennum1=num2
|
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle
![提示](https://static.bdocx.com/images/bang_tan.gif)