- 浏览: 145961 次
- 性别:
- 来自: 青岛
文章分类
- 全部博客 (98)
- css (17)
- Java (7)
- PHP (16)
- javascript (6)
- Ajax (0)
- jQuery (1)
- 网络 (3)
- windows (1)
- 服务器 (2)
- 开发流程 (0)
- SEO (1)
- 网页设计制作 (5)
- 数据库 (7)
- 工具 (6)
- 移动通信 (1)
- 数据库 oracle (5)
- PHP phpcms (2)
- thinksns (1)
- jsp (1)
- dedecms (7)
- EmEditor (1)
- 数据库,mysql (5)
- 数据库,mssql (11)
- svn (1)
- PHP,ecshop (1)
- Ofbiz (0)
- linux (2)
- destoon笔记 (1)
- discuz (1)
最新评论
-
sibyl_pisces:
guangqiang 写道嗯 有点意思 敬同行 你也是在青岛吗 ...
CSS+DIV固定底部的漂浮导航条 -
guangqiang:
嗯 有点意思 敬同行 你也是在青岛吗 ?
CSS+DIV固定底部的漂浮导航条 -
sibyl_pisces:
anqiuejack 写道解决了我的问题,但还是搞不懂对IE固 ...
CSS+DIV固定底部的漂浮导航条 -
anqiuejack:
解决了我的问题,但还是搞不懂对IE固定设定的代码的意思,这是J ...
CSS+DIV固定底部的漂浮导航条 -
yuxiatongzhi:
绑定事件里 return false; 如果设置 ...
ie6 javascript:void(0);
oracle基本语句
- 博客分类:
- 数据库 oracle
区别是和sqlserver比较
--
示例一:Create Table 命令,区别较小
Create
Table
vendor_master
(
vencode
varchar2
(
5
),
venname
varchar2
(
20
),
venadd1
varchar2
(
20
),
venadd2
varchar2
(
20
),
venadd3
varchar2
(
20
)
)
--
示例二:Alter Table Modify 命令,区别较大
Alter
Table
vendor_master Modify (venname
varchar2
(
25
))
--
示例三:Alter Table Add 命令,区别较小,主要是数据类型
Alter
Table
vendor_master
add
(tel_no
number
(
12
),
tngst_no
number
(
12
))
--
示例四:Drop Column 命令:完全一样
Alter
Table
vendor_master
Drop
Column
tngst_no
--
示例五:Oracle 独有
alter
Table
vendor_master
set
unused(tel_no)
--
示例六:Truncate Table命令 :完全一样
truncate
table
vendor_master
--
示例八:Desc命令:完全不一样
Desc
vendor_master
--
示例九:Drop Table 命令:完全一样
drop
table
vendor_master
--
示例10:Insert命令
Insert
into
vendor_master
values
(
'
v001
'
,
'
John smith
'
,
'
11 E main st
'
,
'
West Avenue
'
,
'
alabama
'
,
1234567
)
--
以下这种方法只在Orace中有效,l但不推荐使用此方法
Insert
into
vendor_master
values
(
'
&vencode
'
,
'
&venname
'
,
'
&venadd1
'
,
'
&venadd2
'
,
'
&venadd3
'
,
&
telno)
--
示例15:Select命令
select
*
from
vendor_master
--
示例20:Update命令 :注意大小写
update
vendor_master
set
tel_no
=
987654
where
vencode
=
'
V001
'
--
'v001'
--
示例24:Grant 和 Revoke命令
grant
all
on
vendor_master
to
sys
revoke
all
on
vendor_master
from
sys
**********************************************************************************************
//
用户
connect system
/
manager
@ydgl
;
--
删除已有的用户和表空间
--
drop tablespace freemandatabase;
--
drop tablespace tempfreemandatabase;
--
创建表空间
create
tablespace FreeManDataBase
datafile
'
c:\FreeManDataBase.ora
'
size 25M;
--查看当前用户的缺省表空间
select
username,default_tablespace from
user_users;
--
创建临时表空间
create
temporary
tablespace tempFreeManDataBase
tempfile
'
c:\tempFreeManDataBase.ora
'
size 25M;
--
创建用户
create
user
zong identified
by
"
123456
"
default
tablespace FreeManDataBase
temporary
tablespace tempFreeManDataBase;
--
赋权限
grant
connect
to
zong;
grant
resource
to
zong;
grant
dba
to
aaa;
--
登录
connect zong
/
123456
@ydgl
;
create
table
zong.ccc(bh
varchar2
(
10
), xm
varchar2
(
10
), age
number
, salary
number
, birthday date)
--
事务处理
insert
into
zong.ccc(bh,xm,age,salary,birthday)
values
(
'
000
'
,
'
aaa
'
,
56
,
12345
,to_date(
'
1978-1-1
'
,
'
yyyy-mm-dd
'
));
insert
into
zong.ccc(bh,xm,age,salary,birthday)
values
(
'
004
'
,
'
peng
'
,
24
,
3456.3
,to_date(
'
1976-1-1
'
,
'
yyyy-mm-dd
'
));
savepoint ppp;
insert
into
zong.ccc(bh,xm,age,salary,birthday)
values
(
'
005
'
,
'
cao
'
,
21
,
345.3
,to_date(
'
1996-1-1
'
,
'
yyyy-mm-dd
'
));
rollback
to
ppp;
insert
into
zong.ccc(bh,xm,age,salary,birthday)
values
(
'
006
'
,
'
li
'
,
28
,
31456.3
,to_date(
'
1966-1-1
'
,
'
yyyy-mm-dd
'
));
update
zong.ccc
set
bh
=
'
008
'
,salary
=
5000
,age
=
33
where
bh
=
'
004
'
;
commit
;
--
清除数据
truncate
table
zong.cc
delete
from
zong.ccc
where
bh
=
'
006
'
create
table
zong.firsttable (xm
varchar2
(
10
),age
number
(
4
),salary
number
(
7
,
2
))
--
添加列
alter
table
zong.firsttable
add
(kk
number
(
10
), birthday date)
--
更新列类型
alter
table
zong.firsttable modify (xm
number
(
2
), birthday
varchar2
(
10
))
--
收回权限
revoke
dba
from
zong
--
授予管理员角色
grant
dba
to
zong
--
授予对象权限
grant
select
,
update
on
firsttable
to
system
--
删除表
drop
table
zong.ccc
--
集合操作
Create
Table
zong.YYY(xm
Varchar2
(
10
),age
Number
(
8
));
Insert
Into
zong.yyy
Values
(
'
aaa
'
,
10
)
Insert
Into
zong.yyy
Values
(
'
bbb
'
,
20
)
Create
Table
zong.xxx(xm
Varchar2
(
10
),age
Number
(
8
));
Insert
Into
zong.xxx
Values
(
'
aaa
'
,
10
)
Insert
Into
zong.xxx
Values
(
'
ccc
'
,
30
)
Select
*
From
zong.yyy
Union
Select
*
From
fei.xxx
Select
*
From
zong.yyy
Union
All
Select
*
From
fei.xxx
Select
*
From
zong.yyy
Intersect
Select
*
From
fei.xxx
Select
*
From
zong.yyy Minus
Select
*
From
fei.xxx
*********************************************
**********************************************
--
字符串函数
select
ascii
(
'
A
'
) A,
ascii
(
'
a
'
) a,
ascii
(
'
0
'
) zero,
ascii
(
'
'
)
space
from
dual
select
chr(
54740
) zhao,chr(
65
) chr65
from
dual
select
concat(
'
010-
'
,
'
88888888
'
)
||
'
连接
'
实例
from
dual
select
initcap(
'
smith
'
) upp
from
dual;
select
instr(
'
oracle traning
'
,
'
ra
'
,
1
,
2
) instring
from
dual
select
lpad(rpad(
'
gao
'
,
10
,
'
*
'
),
17
,
'
*
'
)
from
dual;
select
ltrim
(
rtrim
(
'
gao qian jing
'
,
'
'
),
'
'
)
from
dual;
select
substr(
'
13088888888
'
,
3
,
8
)
from
dual;
select
replace
(
'
he love you
'
,
'
he
'
,
'
i
'
)
from
dual;
--
数学函数
select
floor
(
2345.67
)
from
dual;
select
mod(
10
,
3
),mod(
3
,
3
),mod(
2
,
3
)
from
dual;
select
round
(
55.5
),
round
(
-
55.4
),trunc(
55.5
),trunc(
-
55.5
)
from
dual;
select
sign
(
123
),
sign
(
-
100
),
sign
(
0
)
from
dual;
--
日期函数
select
to_char(add_months(to_date(
'
199912
'
,
'
yyyymm
'
),
2
),
'
yyyymm
'
)
from
dual;
select
to_char(sysdate,
'
yyyy.mm.dd
'
),to_char((sysdate)
+
1
,
'
yyyy.mm.dd
'
)
from
dual;
select
last_day(sysdate)
from
dual;
select
months_between(
'
19-12月-1999
'
,
'
19-3月-1999
'
) mon_between
from
dual;
select
months_between(to_date(
'
2000.05.20
'
,
'
yyyy.mm.dd
'
),to_date(
'
2005.05.20
'
,
'
yyyy.mm.dd
'
)) mon_betw
from
dual;
select
to_char(sysdate,
'
yyyy.mm.dd hh24:mi:ss
'
) 北京时间,to_char(new_time
(sysdate,
'
PDT
'
,
'
GMT
'
),
'
yyyy.mm.dd hh24:mi:ss
'
) 埃及时间
from
dual;
select
next_day(
'
18-5月-2001
'
,
'
星期五
'
) next_day
from
dual;
//
select
round
(sysdate,
'
year
'
)
from
ccc;
select
to_char(sysdate,
'
dd-mm-yyyy day
'
)
from
dual;
select
*
from
ccc
where
birthday
-
to_date(
'
1977-11-11
'
,
'
yyyy-mm-dd
'
)
>
120
;
select
*
from
ccc
where
birthday
-
to_date(
'
1977-11-11
'
,
'
yyyy-mm-dd
'
)
>
30
;
select
*
from
ccc
where
birthday
>
to_date(
'
1977-11-11
'
,
'
yyyy-mm-dd
'
);
select
to_char(t.d,
'
YY-MM-DD
'
)
from
(
select
trunc(sysdate,
'
MM
'
)
+
rownum
-
1
as
d
from
dba_objects
where
rownum
<
32
) t
where
to_char(t.d,
'
MM
'
)
=
to_char(sysdate,
'
MM
'
)
--
找出当前月份的周五的日期
and
trim(to_char(t.d,
'
Day
'
))
=
'
星期五
'
--
类型转换函数
select
to_char(sysdate,
'
yyyy/mm/dd hh24:mi:ss
'
)
from
dual;
select
to_number(
'
1999
'
)
year
from
dual;
--
系统函数
select
username,
user_id
from
dba_users
where
user_id
=
uid;
select
user
from
dual;
--
集合函数
create
table
table3(xm
varchar
(
8
),sal
number
(
7
,
2
));
insert
into
table3
values
(
'
gao
'
,
1111.11
);
insert
into
table3
values
(
'
gao
'
,
1111.11
);
insert
into
table3
values
(
'
zhu
'
,
5555.55
);
--
select avg(distinct sal) from gao.table3;
--
select max(distinct sal) from scott.emp;
--
分组函数和统计函数
select
deptno,
count
(
*
),
sum
(sal)
from
scott.emp
group
by
deptno;
select
deptno,
count
(
*
),
sum
(sal)
from
scott.emp
group
by
deptno
having
count
(
*
)
>=
5
;
select
deptno,
count
(
*
),
sum
(sal)
from
scott.emp
having
count
(
*
)
>=
5
group
by
deptno ;
select
deptno,ename,sal
from
scott.emp
order
by
deptno,sal
desc
;
**********************************************************************************************
CREATE
TABLE
"ZONG"."CCC"("BH"
VARCHAR2
(
10
), "XM"
VARCHAR2
(
10
), "AGE"
NUMBER
, "SALARY"
NUMBER
, "BIRTHDAY" DATE)
insert
into
zong.ccc(bh,xm,age,salary,birthday)
values
(
'
000
'
,
'
aaa
'
,
56
,
12345
,to_date(
'
1978-1-1
'
,
'
yyyy-mm-dd
'
));
insert
into
zong.ccc(bh,xm,age,salary,birthday)
values
(
'
001
'
,
null
,
33
,
4444
,to_date(
'
1979-1-1
'
,
'
yyyy-mm-dd
'
));
insert
into
zong.ccc(bh,xm,age,salary,birthday)
values
(
'
004
'
,
'
peng
'
,
24
,
3456.3
,to_date(
'
1976-1-1
'
,
'
yyyy-mm-dd
'
));
insert
into
zong.ccc(bh,xm,age,salary,birthday)
values
(
'
005
'
,
'
cao
'
,
21
,
345.3
,to_date(
'
1996-1-1
'
,
'
yyyy-mm-dd
'
));
insert
into
zong.ccc(bh,xm,age,salary,birthday)
values
(
'
006
'
,
'
li
'
,
28
,
31456.3
,to_date(
'
1966-1-1
'
,
'
yyyy-mm-dd
'
));
select
bh 编号, nvl(xm,
'
ggg
'
)
as
姓名
from
ccc
where
bh
=
'
001
'
select
bh 编号, nvl2(xm,
'
yes
'
,
'
no
'
)
as
姓名
from
ccc
--
select bh 编号,NULLIF('bbb','aaa') from ccc
--
is null 的用法
select
*
from
ccc
where
xm
is
null
select
*
from
ccc
where
xm
is
NOT
null
--
not in的用法
select
*
from
ccc
where
birthday
between
to_date(
'
1978-1-1
'
,
'
yyyy-mm-dd
'
)
and
to_date(
'
1996-1-1
'
,
'
yyyy-mm-dd
'
)
select
*
from
ccc
where
birthday
not
between
to_date(
'
1978-1-1
'
,
'
yyyy-mm-dd
'
)
and
to_date(
'
1996-1-1
'
,
'
yyyy-mm-dd
'
)
--
in的用法
select
*
from
ccc
where
xm
in
(
'
aaa
'
,
'
peng
'
,
'
cao
'
)
select
*
from
ccc
where
xm
not
in
(
'
aaa
'
,
'
peng
'
,
'
cao
'
)
--
like的用法和=、!=、<、>、<=、>=的用法
select
*
from
ccc
where
age
>
24
and
age
<=
56
and
xm
like
'
%a%
'
--
create
table
sales (xm
varchar2
(
10
), dTime date,
count
number
, totalmoney
number
,city
varchar2
(
10
))
insert
into
sales
values
(
'
张三
'
,to_date(
'
2003-01-01
'
,
'
yyyy-mm-dd
'
),
1200
,
30000
,
'
南昌
'
);
insert
into
sales
values
(
'
张三
'
,to_date(
'
2004-01-01
'
,
'
yyyy-mm-dd
'
),
1200
,
30000
,
'
南昌
'
);
insert
into
sales
values
(
'
张三
'
,to_date(
'
2003-01-01
'
,
'
yyyy-mm-dd
'
),
1000
,
30000
,
'
北京
'
);
insert
into
sales
values
(
'
张三
'
,to_date(
'
2004-01-01
'
,
'
yyyy-mm-dd
'
),
2333
,
40000
,
'
北京
'
);
insert
into
sales
values
(
'
李四
'
,to_date(
'
2003-01-01
'
,
'
yyyy-mm-dd
'
),
800
,
24567
,
'
南昌
'
);
insert
into
sales
values
(
'
李四
'
,to_date(
'
2004-01-01
'
,
'
yyyy-mm-dd
'
),
600
,
15000
,
'
南昌
'
);
insert
into
sales
values
(
'
李四
'
,to_date(
'
2003-01-01
'
,
'
yyyy-mm-dd
'
),
400
,
20000
,
'
北京
'
);
insert
into
sales
values
(
'
李四
'
,to_date(
'
2004-01-01
'
,
'
yyyy-mm-dd
'
),
1000
,
18000
,
'
北京
'
);
select
xm,
sum
(
count
) 数量,
sum
(totalmoney) 金额 ,city
from
sales
group
by
xm ,
count
,totalmoney,rollup(city)
order
by
xm ,
count
,totalmoney,city
--
group分组语句
select
xm,
sum
(
count
) 数量,
sum
(totalmoney) 金额 ,city
from
sales
group
by
xm ,
count
,totalmoney,rollup(city)
having
count
>
2000
order
by
xm ,
count
,totalmoney,city
--
rollup函数
select
xm,
sum
(
count
) 数量,city
from
sales
group
by
xm ,
count
,rollup(city)
order
by
xm ,
count
,city
--
事务级临时表是指临时表中的数据只在事务生命周期中存在。当一个事务结束(commit or rollback),Oracle自动清除临时表中数据
CREATE
GLOBAL
TEMPORARY
TABLE
admin_work_area
(startdate DATE,
enddate DATE,
class
CHAR
(
20
))
ON
COMMIT
DELETE
ROWS;
create
table
permernate( a
number
);
insert
into
admin_work_area
values
(sysdate,sysdate,
'
temperary table
'
);
insert
into
permernate
values
(
1
);
commit
;
select
*
from
admin_work_area;
select
*
from
permernate;
--
会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据
drop
table
admin_work_area;
CREATE
GLOBAL
TEMPORARY
TABLE
admin_work_area
(startdate DATE,
enddate DATE,
class
CHAR
(
20
))
ON
COMMIT
PRESERVE ROWS;
create
table
permernate( a
number
);
insert
into
admin_work_area
values
(sysdate,sysdate,
'
temperary table
'
);
insert
into
permernate
values
(
2
);
commit
;
select
*
from
admin_work_area;
select
*
from
permernate;
**********************************************************************************************
//
锁
create
table
sales (xm
varchar2
(
10
), dTime date,
count
number
, totalmoney
number
,city
varchar2
(
10
))
insert
into
sales
values
(
'
张三
'
,to_date(
'
2003-01-01
'
,
'
yyyy-mm-dd
'
),
1200
,
30000
,
'
南昌
'
);
insert
into
sales
values
(
'
张三
'
,to_date(
'
2004-01-01
'
,
'
yyyy-mm-dd
'
),
1200
,
30000
,
'
南昌
'
);
insert
into
sales
values
(
'
张三
'
,to_date(
'
2003-01-01
'
,
'
yyyy-mm-dd
'
),
1000
,
30000
,
'
北京
'
);
insert
into
sales
values
(
'
张三
'
,to_date(
'
2004-01-01
'
,
'
yyyy-mm-dd
'
),
2333
,
40000
,
'
北京
'
);
insert
into
sales
values
(
'
李四
'
,to_date(
'
2003-01-01
'
,
'
yyyy-mm-dd
'
),
800
,
24567
,
'
南昌
'
);
insert
into
sales
values
(
'
李四
'
,to_date(
'
2004-01-01
'
,
'
yyyy-mm-dd
'
),
600
,
15000
,
'
南昌
'
);
insert
into
sales
values
(
'
李四
'
,to_date(
'
2003-01-01
'
,
'
yyyy-mm-dd
'
),
400
,
20000
,
'
北京
'
);
insert
into
sales
values
(
'
李四
'
,to_date(
'
2004-01-01
'
,
'
yyyy-mm-dd
'
),
1000
,
18000
,
'
北京
'
);
select
*
from
sales
where
xm
=
'
张三
'
for
update
of
count
update
sales
set
count
=
30000
where
xm
=
'
张三
'
--
另一用户登录
update
ydgl.sales
set
count
=
30000
where
xm
=
'
张三
'
--
在多个用户在同一张表中放置锁时,其他用户等待上一用户的时间.
select
*
from
sales
where
xm
=
'
张三
'
for
update
of
count
wait
10
--
只作查询
lock
table
sales
in
share mode
--
能删除,更新,插入除锁定外的其他行
lock
table
sales
in
share
update
mode
--
排他锁 ,在同一时间点上,只有一个用户在表中放置排他锁.
lock
table
sales
in
exclusive mode
--
避免延迟时间,锁在用户之间的传递时间,不等待,立即提示错误信息
lock
table
sales
in
exclusive mode nowait
**********************************************************************************************
--
--创建临时表
/**/
/*
create temporary tablespace mydb
tempfile 'f:\mydb.ora'
size 10m;
*/
--
--创建抽象数据类型
create
or
replace
type address_ty
as
object
(street_no
number
(
3
),
street_name
varchar2
(
20
),
city
varchar2
(
20
),
state
varchar2
(
20
));
--
--查看抽象数据类型实际值
select
attr_name,length,attr_type_name
from
user_type_attrs
where
type_name
=
'
ADDRESS_TY
'
;
--
--创建应用了抽象数据类型的表
create
table
vend_mast
(vencode
varchar2
(
5
),
venname
varchar2
(
15
),
venadd address_ty,
tel_no
number
(
10
));
--
--查看表结构
desc
vend_mast;
select
column_name,data_type
from
user_tab_columns
where
table_name
=
'
VEND_MAST
'
;
--
--插入记录
insert
into
vend_mast
values
(
'
v100
'
,
'
john
'
,address_ty(
110
,
'
Clinton Rd
'
,
'
Rosewood
'
,
'
Columbia
'
,
234465987
);
--
--查看记录
select
a.venadd.city
from
vend mast a;
--
-修改记录,一定要用别名
update
vend_mast a
set
a.venadd.street_no
=
10
where
venname
=
'
john
'
;
--
--删除记录
delete
from
vend_mast a
where
a.venadd.city
=
'
Rosewood
'
;
--
--强行删除抽象数据类型
drop
type address_ty force;
--
--创建应用了抽象数据类型的表的索引
create
index
streetnum
on
vend_mast(venadd.street_no);
--
--查看索引
select
owner,index_name,index_type,table_owner,table_name,table_type
from
all_indexes
where
owner
=
'
SCOTT
'
;
--
--创建不能继承的对象
create
or
replace
type Student_typ
as
object
(Ssn
number
,
Name
varchar2
(
30
),
Address
varchar2
(
100
))
not
final;
--
--修改是否能继承
alter
type Student_typ
not
final;
create
type t
as
object
(x
number
,)
not
instantiable member
function
func1
return
number
)
not
instantiable
not
final;
--
--创建可变数组
create
type itemcode
as
varray(
5
)
of
varchar2
(
5
);
create
type qty_ord
as
varray(
5
)
of
number
(
5
);
create
type qty_deld
as
varray(
5
)
of
number
(
5
);
--
--基于可变数组创建表
create
table
order_detail(
orderno
varchar2
(
5
),
item_va itemcode,
qty_va qty_ord,
qtyd_va qty_deld);
--
--插入记录
insert
into
order_detail
values
(
'
o100
'
,itemcode(
'
i100
'
,
'
i101
'
,
'
i102
'
,
'
i103
'
,
'
i104
'
),
qty_ord(
100
,
98
,
47
,
29
,
20
),
qty_deld(
100
,
900
,
800
,
700
,
600
));
--
--查看整体
select
*
from
order_detail
--
--单个
select
item_va
from
order_detail
--
--查看可变数组内容
select
*
from
table
(
--
--select * from order_detail a where a.orderno='o100')
select
a.item_va
from
order_detail a
where
a.orderno
=
'
o100
'
)
--
--嵌套表
--
--创建抽象数据类型即对象
create
or
replace
type ord_ty
as
object (
itemcode
varchar2
(
5
),
qty_ord
number
(
5
),
qty_deld
number
(
5
));
--
--表中包含嵌套表一定要基于一个对象创建一个新的对象作为嵌套表
create
or
replace
type ord_nt
as
table
of
ord_ty;
--
--创建包含嵌套表的表
create
table
order_master(
orderno
varchar2
(
5
),
odate date,
vencode
varchar2
(
5
),
dets ord_nt)
nested
table
dets store
as
ord_nt_tab;
--
嵌套表放入某个任意任名的存储空间,嵌套表的存储空间与普通表不同,分别存储在不同的空间
insert
into
order_master
values
(
'
o100
'
,to_date(
'
18-07-99
'
,
'
DD-MM-YY
'
),
'
v001
'
,
ord_nt(ord_ty(
'
i100
'
,
10
,
5
),
ord_ty(
'
i101
'
,
50
,
25
),
ord_ty(
'
i102
'
,
5
,
5
)));
--
--把记录插入到嵌套表中
insert
into
table
(
select
p.dets
from
order_master p
where
p.orderno
=
'
o100
'
)
values
(
'
i103
'
,
30
,
25
);
select
t.dets
from
order_master t
where
t.orderno
=
'
o100
'
;
--
--查看嵌套表中的信息
select
*
from
table
(
select
t.dets
from
order_master t
where
t.orderno
=
'
o100
'
);
--
--修改
update
table
(
select
t.dets
from
order_master t
where
t.orderno
=
'
o100
'
) t
set
value(t)
=
ord_ty(
'
i103
'
,
50
,
45
)
where
t.itemcode
=
'
i103
'
;
--
--删除嵌套表的值
delete
from
table
(
select
t.dets
from
order_master t
where
t.orderno
=
'
o100
'
) t
where
t.itemcode
=
'
i102
'
;
--
--把嵌套表中已存在的记录添加到创建的表中
insert
into
order_master
values
(
'
o202
'
,to_date(
'
2003-3-5
'
,
'
YY-MM-DD
'
),
'
v101
'
,
cast
(multiset(
select
*
from
table
(
select
dets
from
order_master
where
orderno
=
'
o201
'
))
as
ord_nt));
--
--创建对象
create
type vend_ty
as
object(
vencode
varchar2
(
5
),
venname
varchar2
(
20
),
venadd1
varchar2
(
20
),
venadd2
varchar2
(
20
),
venadd3
varchar2
(
20
),
tel_no
number
(
6
));
drop
table
vend_master;
--
--创建对象表,对象中不能定义约束,在对象表中可通过关键字constraint定义
create
table
vend_master
of
vend_ty(vencode
constraint
vc_pk
primary
key
);
insert
into
vend_master
values
(
vend_ty(
'
v201
'
,
'
John
'
,
'
10
'
,
'
Fezinnith
'
,
'
Mexico
'
,
948456
));
--
--查看地址(表中所分配的OID)
select
ref(a)
from
vend_master a;
--
--创建一个指向抽象数据类型的表
create
table
ord_master(
orderno
varchar2
(
5
),
vendet ref vend_ty);
--
--数据类型为指向抽象数据类型的类型
--
--类似将查询记录插入一个表的语法插入记录
insert
into
ord_master(
select
'
o301
'
,ref(a)
from
vend_master a
where
vencode
=
'
v201
'
);
--
--查看所有记录
select
*
from
ord_master;
select
deref(a.vendet)
from
ord_master a;
delete
from
vend_master
where
vencode
=
'
v201
'
;
--
--对象视图
create
table
item(
itemcode
varchar2
(
10
),
item_on_hand
number
(
10
),
item_sold
number
(
10
));
create
or
replace
type item_type
as
object
(itemcode
varchar2
(
10
),
item_on_hand
number
(
10
),
item_sold
number
(
10
));
create
view
item_view
of
item_type
with
object oid
--
--表名of类型名with object oid
(itemcode)
as
select
*
from
item
where
item_on_hand
<
20
;
insert
into
item
values
(
'
i201
'
,
10
,
5
);
--
--插入值调用函数
insert
into
item_view
values
(item_type(
'
i102
'
,
15
,
50
));
create
view
nt_view
of
ord_ty
with
object oid(itemcode)
as
select
*
from
table
(
select
d.dets
from
order_master d
where
d.orderno
=
'
o201
'
);
create
table
itemfile(
itemcode
varchar2
(
5
)
primary
key
,
itemdesc
varchar2
(
20
),
p_category
varchar2
(
20
),
qty_hand
number
(
5
),
re_level
number
(
5
),
max_level
number
(
5
),
itemrate
number
(
9
,
2
));
create
table
order_detail (
orderno
varchar2
(
5
),
itemcode
varchar2
(
5
),
qty_ord
number
(
5
),
qty_deld
number
(
5
),
primary
key
(orderno,qty_ord,qty_deld),
foreign
key
(itemcode)
references
itemfile(itemcode));
create
or
replace
type itemfile_ty
as
object
(itemcode
varchar2
(
5
),
itemdesc
varchar2
(
20
),
p_category
varchar2
(
20
),
qty_hand
number
(
5
),
re_level
number
(
5
),max_level
number
(
5
),
itemrate
number
(
9
,
12
));
create
view
itemfile_ov
of
itemfile_ty
with
object oid(itemcode)
as
select
*
from
itemfile;
select
make_ref(itemfile_ov,itemcode)
from
itemfile;
create
view
order_detail_ov
as
select
make_ref(itemfile_ov,itemcode) items,orderno,qty_ord,qty_deld
from
order_detail;
--
--不能正确运行
select
deref(a.items)
from
order_detail_ov a;
**********************************************************************************************
--
--创建抽象数据类型
create
or
replace
type add_ty
as
object(
Street
varchar2
(
25
),
City
varchar2
(
15
),
State
varchar2
(
10
),
Zip
number
);
--
--基于抽象数据类型创建表
create
table
customer(
Customer_id
number
(
4
),
person add_ty);
--
--插入记录
insert
into
customer
values
(
1001
,add_ty(
'
No.2 downhill st.
'
,
'
Los Angles
'
,
'
California
'
,
700023
));
insert
into
customer
values
(
1002
,add_ty(
'
No.120 stepahead rd.
'
,
'
houston
'
,
'
texas
'
,
701024
));
--
--查询记录
select
customer_id,c.person.city
from
customer c
where
c.person.state
=
'
texas
'
;
--
--删除记录
delete
from
customer a
where
a.person.zip
=
701024
;
--
--创建可变数组
create
type Phone
as
varray(
2
)
of
Number
(
8
);
--
--使用可变数组创建表
create
table
Employee(
Eno
number
(
4
),
name
varchar2
(
15
),
phone phone);
--
--插入数据
insert
into
Employee
values
(
1000
,
'
George
'
,Phone(
67343344
,
3432342
));
delete
from
Employee
where
name
=
'
gxj
'
;
select
*
from
employee;
select
phone
from
employee;
--
--创建对象
create
type person_details
as
object(
name
varchar2
(
15
),
age
number
(
2
),
desg
varchar2
(
15
));
create
type person_detail_table_ty
as
table
of
person_details;
create
table
other_info_person(
dept_name
varchar2
(
10
),
dept_no
number
(
3
),
person_info person_detail_table_ty)
nested
table
person_info store
as
person_store_table;
--
--创建抽象数据类型
create
or
replace
type Dept_type
as
object(
Deptno
number
(
2
),
Dname
varchar2
(
14
),
Loc
varchar2
(
13
));
--
--创建表
create
table
Student(
Name
varchar2
(
15
),
Dept_detail Dept_type);
--
--插入数据
insert
into
Student
values
(
'
Jessica
'
,Dept_type(
20
,
'
Computer
'
,
'
Chicago
'
));
insert
into
Student
values
(
'
Peter
'
,Dept_type(
40
,
'
Electronics
'
,
'
California
'
));
--
--查询数据
select
*
from
Student;
select
name, a.dept_detail.Deptno
from
Student a
where
a.Dept_detail.Loc
=
'
Chicago
'
;
insert
into
Employee
values
(
1002
,
'
Dick
'
,Phone(
33444876
,
87876565
));
insert
into
Employee
values
(
1003
,
'
Jones
'
,Phone(
54576545
,
52457779
));
plsql
--
例二:创建具有LOB数据类型的表
CREATE
TABLE
vendor_master
(vencode
varchar2
(
5
),
venname
varchar2
(
15
),
venadd1
varchar2
(
20
),
venadd2
varchar2
(
20
),
venadd3
varchar2
(
20
),
tel_no
number
(
6
),
msg CLOB);
--
例三:初始化LOB值
INSERT
INTO
vendor_master
VALUES
(
'
v201
'
,
'
aryay
'
,
'
10
'
,
'
first st
'
,
'
mds
'
,
475859
,
'
这是我们的初始化LOB值
'
);
select
*
from
vendor_master;
--
例9:条件控制
select
*
from
rs_employees
where
hetongid
=
'
WL-090001
'
;
DECLARE
v_department rs_employees.department
%
type;
BEGIN
SELECT
department
INTO
v_department
FROM
rs_employees
WHERE
HeTongId
=
'
WL-090001
'
;
IF
v_department
=
'
车间工人
'
THEN
UPDATE
rs_employees
SET
department
=
'
不是工人
'
WHERE
HeTongId
=
'
WL-090001
'
;
ELSE
UPDATE
rs_employees
SET
department
=
'
车间工人
'
WHERE
HeTongId
=
'
WL-090001
'
;
END
IF
;
END
;
/
--
CASE语句示例(下面的写法有错)
SET
SERVEROUT
ON
;
DECLARE
I
number
:
=
2
;
BEGIN
CASE
WHEN
(I
=
1
)
THEN
dbms_output.put_line(
'
Result is 1
'
);
WHEN
(I
=
2
)
THEN
dbms_output.put_line(
'
Result is 2
'
);
END
CASE
;
END
;
--
和上面的区别是什么
SET
SERVEROUT
ON
;
DECLARE
I
number
:
=
2
;
BEGIN
CASE
I(用于选择器)
WHEN
1
THEN
dbms_output.put_line(
'
Result is 1
'
);
WHEN
2
THEN
dbms_output.put_line(
'
Result is 2
'
);
END
CASE
;
END
;
/
--
例11:简单循环:在Test Window中执行
--
SET SERVEROUT ON;
DECLARE
a
NUMBER
:
=
100
;
BEGIN
LOOP
a :
=
a
+
25
;
EXIT
WHEN
A
=
250
;
END
LOOP;
dbms_output.put_line(TO_CHAR(a));
END
;
--
例12:While循环,此值书上有错
DECLARE
i
NUMBER
:
=
0
;
J
NUMBER
:
=
0
;
BEGIN
while
i
<=
100
Loop
J :
=
J
+
1
;
i :
=
i
+
2
;
end
loop;
dbms_output.put_line(
'
j的值是
'
||
j);
END
;
--
例13:FOR循环,结果是5050
DECLARE
i
number
:
=
0
;
j
number
:
=
0
;
BEGIN
for
i
in
1
..
100
loop
j :
=
j
+
1
;
end
loop;
dbms_output.put_line(
'
j的值是
'
||
j);
END
;
相关推荐
这个压缩包文件"Oracle基本语句和基本函数.doc"显然包含了关于Oracle数据库操作的基础知识,包括SQL语句和内置函数的使用。 一、Oracle SQL基本语句 1. 数据查询:SQL的SELECT语句用于从数据库中检索数据,例如`...
Oracle 基本语句 Oracle 是一种广泛使用的关系数据库管理系统,它提供了丰富的语句来操作和管理数据库。下面是 Oracle 的一些基本语句。 ### 创建用户 在 Oracle 中,创建用户需要使用 CREATE USER 语句,并且...
1)增删改查:2) 添加列:3)创建表空间4)创建临时表空间5)创建用户6)赋权7)建表/删表8)加约束/主键9)检查10)加默认的不行11)外键 12)复制表13)复制表结构 14)在已有的表结构中插入数据.....
本文将总结一些Oracle基本SQL语句,帮助用户快速复习并掌握其用法。 首先,了解SQL(结构化查询语言)的基础功能是十分必要的。SQL由一系列命令组成,这些命令允许用户与数据库进行交流。其中,SELECT语句是SQL中最...
建表语句(CREATE TABLE)是SQL语言的基本组成部分,用于定义数据库中的表结构,包括字段名、数据类型、约束条件等。 Excel 2003作为一个电子表格软件,提供了丰富的数据组织和分析功能,但并不直接支持SQL操作。...
Oracle 数据库语句大全还包括创建表空间、删除表空间、查询表空间基本信息、创建用户、更改用户、锁定用户、删除用户等语句。 二.数据操纵语言(DML) 数据操纵语言(DML)用于操作数据库中的数据,包括插入、...
Oracle 查询语句大全是 Oracle 数据库管理系统中最基本也是最重要的组成部分,用于管理和维护数据库。本文将详细介绍 Oracle 查询语句的使用方法和实践操作。 一、创建用户和授权 在 Oracle 中,创建用户和授权是...
oracle 的基本语句 初学者使用 插入,删除 ,更新,视图的建立等基本的语句
Oracle基本操作语句 - **创建表**: - `CREATE TABLE 表名 (列名1 类型, 列名2 类型);` - **修改列属性**: - `ALTER TABLE 表名 MODIFY (列名 类型);` - **添加列**: - `ALTER TABLE 表名 ADD (列名 类型);` - **...
Oracle SQL语句是数据库管理与数据查询的重要工具,尤其在Oracle数据库系统中,掌握SQL的高效使用至关重要。这个"oracle sql语句学习"资源包显然旨在帮助初学者逐步提升到高级水平,通过全面的笔记资料,使用户能够...
"Oracle常用语句-总结文档汇总"提供了丰富的资源,涵盖了SQL语句的基础到进阶应用,包括列行转换、SQL性能优化等多个关键知识点。 首先,列行转换是数据处理中常见的需求,Oracle提供了多种方法来实现这一操作。...
本文将详细介绍Oracle的基本建表语句及相关操作。 首先,创建用户是数据库管理的基础。Oracle中创建用户的基本语法如下: ```sql CREATE USER 用户名 IDENTIFIED BY 密码 DEFAULT TABLESPACE 表空间名 TEMPORARY ...
INSERT语句是SQL语言的基本组成部分,用于向数据库表中插入新的数据记录。通过生成这些语句,我们可以方便地在目标环境中重新创建源数据库中的数据状态,而无需进行完整数据库的导入导出操作,这对于测试环境或数据...
本文档总结了 Oracle 中常用的 SQL 语句,包括数据库的创建、删除、备份、表的创建、删除、修改、索引的创建、视图的创建等基本操作,以及一些高级查询运算符的使用。 一、数据库操作 * 创建数据库:CREATE ...
Oracle 常用 SQL 语句汇总 Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义...
本篇将深入探讨Oracle中的基本建表语句及其相关操作。 首先,建表语句的基本格式如下: ```sql CREATE TABLE 表名 ( 列名1 数据类型 [约束条件], 列名2 数据类型 [约束条件], ... ); ``` 1. **表名**:这是你...
本教学资料专注于Oracle查询语句,结合MySQL、JavaSE和Swing的相关知识,旨在帮助学习者深入理解和应用数据库操作。 首先,Oracle SQL是Oracle数据库系统中的数据查询和操纵语言。它允许用户检索、更新、插入和删除...
对于初学者来说,掌握Oracle的基本查询语句是入门的第一步。本教程将重点讲解Oracle中的SQL查询语句,帮助你快速上手。 在Oracle中,SQL(结构化查询语言)用于对数据库进行操作,包括查询、插入、更新和删除数据。...