发布网友 发布时间:2022-04-08 08:04
共4个回答
懂视网 时间:2022-04-08 12:25
oralce中面向对象的基本语法一:抽象数据类型
创建地址类型,一定要加as object,还可以在类型中加过程或方法
create or replace type address as object (
province varchar2(10), --省份属性
city varchar2(10) --市属性
) not final; --not final表示该类型可以有子类型
定义一个子类型,under address说明这个类型继承至address类型
create or replace type detailAddress under address (
street varchar2(20) --街道属性 第3个成员
);
创建员工信息表,最后一列是detailAddress类型
drop table empInfo
create table empInfo (
eName varchar2(20) , --员工姓名
eSex char(2), --性别
eAge int, --年龄
eAddress detailAddress --员工地址
);
--增加数据,只能用构造方法
insert into empInfo values(‘aaa‘, ‘男‘, 28, detailAddress(‘湖北‘, ‘襄樊‘, ‘八一路‘));
--查询
select * from empInfo where eSex = ‘男‘;
select * from empInfo e where e.eAddress.city = ‘武汉‘; --如果查询条件包
含属性必须用表的别名
--更新有2种方式:
--第一种方式:整体更新
update empInfo e set e.eAddress = detailAddress(‘湖北‘, ‘武汉‘, ‘武昌‘) where e.eName = ‘ccc‘;
--第二种方式:只更新抽象类型的某一列
update empInfo e set e.eAddress.city = ‘武汉‘ where e.eName = ‘ccc‘;
--删除
delete from empInfo e where e.eAddress.city = ‘武汉‘;
--为抽象数据类型的属性建立索引
create index idxemp on empInfo(eAddress.city);
--删除
drop table empInfo;
drop type address force; --强制删除抽象类型
二:对象表,表中的每一行就是一个对象
--创建抽象数据类型person,并作为基类型
create or replace type person as object (
pName varchar2(20), --姓名
pSex char(2), --性别
pAge int --年龄
) not final;
--创建子类型student,继承person,后面不要加as object
create or replace type student under person (
stuId int
);
--创建对象表stuInfo
create table stuInfo of student;
--为对象表创建主键约束
alter table stuInfo add constraint pk_stuInfo primary key(stuId);
--插入数据,当普通表插入
insert into stuInfo values(‘aaa‘, ‘男‘, 29, 1001);
--插入数据,用构造方法
insert into stuInfo values(student(‘bbb‘, ‘男‘, 26, 1002));
--查询,当普通表用
select * from stuInfo where stuId = 1002;
--更新和删除都用普通的sql语句即可
update stuInfo set pAge = 29 where pName = ‘ccc‘;
delete from stuInfo where stuId = 1001;
--ref(表别名)函数用来返回对象的OID,也就是对象标识符,对象表也有rowid
select rowid,ref(s) from stuInfo s;
--创建学生分数表,注意外键
create table stuScore (
stu ref student, --stu这一列的值必须出现在stuInfo表中,且stu这一列存的对象的OID而不是对象本身
score int --分数
);
insert into stuscore select ref(s), 90 from stuInfo s where stuId = 1001;
insert into stuscore select ref(s), 80 from stuInfo s; --插入3行数据
insert into stuscore select ref(s), 70 from stuInfo s where stuId = 1003;
--查询
select * from stuScore;
--deref(列名)函数可以把OID还原为对象,主键列显示有问题
select deref(s.stu), score from stuScore s where s.stu.stuId = 1001;
--修改,以下2个都可以
update stuScore set score=100 where stu = (select ref(s) from stuInfo s where stuId = 1001);
update stuScore s set score = 99 where s.stu.stuId = 1001;
--删除
delete from stuScore where stu = (select ref(s) from stuInfo s where stuId = 1001);
delete from stuScore s where s.stu.stuId = 1001;
三:可变数组
--就是一个可以存储多个值的有最大长度的数组,数组的成员可以是任意类型
--建立一个可变数组类型,长度是10,存放的数据类型是number(4)
create or replace type arrType as varray(10) of number(4);
create or replace type scoreType as object (
subName varchar2(10),
score int
);
--创建一个长度为10的可变数组,存放数据类型是scorType
create or replace type arrScoreType as varray(10) of scoreType;
--创建学生信息表
--drop table stuInfo;
create table stuInfo (
stuId int primary key,
score arrScoreType --可变数组,最多10个成员
);
--插入数据,用可变数组的构造函数
insert into stuInfo values(1, arrScoreType(
scoreType(‘sql‘, 50), scoreType(‘C#‘, 80), scoreType(‘java‘, 90)));
insert into stuInfo values(2, arrScoreType(
scoreType(‘sql‘, 60), scoreType(‘C#‘, 85), scoreType(‘java‘, 95), scoreType(‘html‘, 60)));
insert into stuInfo values(3, arrScoreType(
scoreType(‘sql‘, 70), scoreType(‘java‘, 93)));
--查询
select * from stuInfo; --查询结果是集合
--如何才能查询出可变数组里的数据呢?思路是:用table函数把集合转化为表,然后再从这个表查询数据
select * from table( var cpro_id = "u6292429";
热心网友 时间:2022-04-08 09:33
可以的 那个是hibernate自己封装的sql 自己回去识别你的配置文件 是用的什么方言的 如果是Oracle它自己会转换成Oracle的 ssh整合 记住 hibernate就是对持久层 也就是对以前的JDBC进行了封装而spring做了一个管理 也就是依赖注入的作用 其他的都没有变热心网友 时间:2022-04-08 10:51
可以使用这样添加,使用Hibernate的一个好处就是你不用考虑你是用什么数据库,你只需要在hibernate.cfg.xml中对session-factory进行简单的配置就可以,其中主要配置如下几个属性:比如我使用MYSQL数据库配置如下:<session-factory>热心网友 时间:2022-04-08 12:26
可以使用这样添加,使用Hibernate的一个好处就是你不用考虑你是用什么数据库,你只需要在hibernate.cfg.xml中对session-factory进行简单的配置就可以,其中主要配置如下几个属性:比如我使用MYSQL数据库配置如下:<session-factory>