重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在数据库中好象SQL create table person(a number);
创新互联主要从事网站设计、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务吉州,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
表已创建。
已用时间: 00: 00: 00.00
SQL select * from person;
未选定行
已用时间: 00: 00: 00.00
SQL insert into person values(1);
已创建 1 行。
已用时间: 00: 00: 00.00
SQL commit;
提交完成。
前提:数据库相关表字段完全正确;实例对象相关映射属性对应字段配置正确;
1、根本原因:未找到父项关键字的原因是因为你在保存对象的时候缺失关联对象。
2、解决思路:先保存关联对象后再保存当前对象就可以解决了。
3、解决方案:先存关联的对象,再建立关系,再保存此对象,就可以解决。
4、当进行以上操作之后依然有错误,请检查数据库对应表的外键是否关联正确,是否有除此以以外的其他关联外键,通常检查至此定会发现错误。如果有关联错误,修改关联。如果其他外键,需要其他的关联对象,也可以暂时去除其他外键。
5、通常至此步,问题一定解决。如有不懂,请再追问。
1.MERGE 判断table1和table2是否满足ON中条件,如果满足则用table2表去更新table1表,如果不满足,则将table2表数据插入table1表但是有很多可选项,表关联更新
MERGE INTO table1 a
USING(
select b.id bid,b.name bname from table2 b left join table1 c on c.id = b.id
)bb on(a.id = bb.bid)
WHEN MATCHED THEN
UPDATE SET
a.name = bb.bname
WHEN NOT MATCHED THEN
INSERT(
a.id,a.name
)VALUES(
bb.bid,bb.bname
);
2.START WITH... CONNECT BY PRIOR...的作用,简单来说,就是将一个树状结构存储在一张表里,比如菜单表
select * from table_menu start with menu_id='210' connect by prior menu_id=menu_parent_id;
查询菜单id为210下所有子菜单包括id为210的菜单。
3.OVER(PARTITION BY)根据表中字段分割后在排序取第一条
select * from (select r.*, row_number() over(PARTITION BY 字段1,字段2 order by 字段3 desc) rn
from table1 r
) where rn = 1;
4.MINUS 表之间比较
select id,name from table1
minus
select id,name from table2;
table1中有table2中无或者table1中id,name与table2中不同
1、根本原因:未找到父项关键字的原因是因为你在保存对象的时候缺失关联对象。
2、解决思路:先保存关联对象后再保存改对象就可以解决了。
3、解决方案:先存关联的对象,再建立关系,再保存此对象,就可以解决。
4、当进行以上操作之后依然有次错误,请检查数据库对应表的外键是否关联正确,是否有除此以以外的其他关联外键,通常检查至此定会发现错误。如果有关联错误,修改关联。如果其他外键,需要其他的关联对象,也可以暂时去除其他外键。
产品业务
甲骨文公司产品主要有以下几类:
1.服务器及工具(主要竞争对手:IBM、微软)
数据库服务器:2013年最新版本Oracle 12C。
应用服务器:Oracle Application Server。
开发工具:OracleJDeveloper,Oracle Designer,Oracle Developer,等等。
2.企业应用软件(主要竞争对手:德国SAP公司)
企业资源计划(ERP)软件。已有10年以上的历史。2005年,并购了开发企业软件的仁科软件公司(PeopleSoft)以增强在这方面的竞争力。
客户关系管理(CRM)软件。自1998年开始研发这种软件。2005年,并购了开发客户关系管理软件的希柏软件公司(Siebel)。
3. Oracle职业发展力计划(Oracle WDP)
Oracle WDP 全称为Oracle Workforce Development Program,是Oracle (甲骨文)公司专门面向学生、个人、在职人员等群体开设的职业发展力课程。Oracle的技术广泛应用于各行各业,其中电信、电力、金融、政府及大量制造业都需要Oracle技术人才,Oracle公司针对职业教育市场在全球推广的项目,其以低廉的成本给这部分人群提供Oracle技术培训,经过系统化的实训,让这部分人群能够迅速掌握Oracle最新的核心技术,并能胜任企业大型数据库管理、维护、开发工作。
默认情况下,oracle的分区表对于分区字段是不允许进行update操作的,如果有对分区字段行进update,就会报错——ORA-14402: 更新分区关键字列将导致分区的更改。但是可以通过打开表的row movement属性来允许对分区字段的update操作。
例:创建分区表test_part进行实验
create table TEST_PART
(
A1 NUMBERnot null,
A2 DATE not null,
A3 VARCHAR2(6) not null,
A4 DATE not null,
A5 NUMBER not null,
)
partition by range (A1)
(
partition P1 values less than (1000),
partition P2 values less than (2000),
partition P3 values less than (3000),
partition P4 values less than (4000),
partition P5 values less than (5000),
partition P6 values less than (MAXVALUE)
);
插入如下的数据
SQL select * from test_part;
A1 A2 A3 A4 A5
---------- ----------- ------ ----------- ----------
123 2006-06-30 123456 2006-06-30 123
456 2006-06-30 asdfgh 2006-06-30 456
1 2006-06-30 234123 2006-06-30 1
2 2006-06-30 234234 2006-06-30 2
1234 2006-06-30 456789 2006-06-30 1234
1111 2006-06-30 ewrqwe 2006-06-30 1111
2222 2006-06-30 fdafda 2006-06-30 2222
3333 2006-06-30 342342 2006-06-30 3333
5678 2006-06-30 qwerty 2006-06-30 5678
9 rows selected
分区P1、P2的数据分别为:
SQL select rowid,t.* from test_part partition(p1) t;
ROWID A1 A2 A3 A4 A5
------------------ ---------- ----------- ------ ----------- ----------
AAAGLoAAGAAAtsEAAB 456 2006-06-30 asdfgh 2006-06-30 456
AAAGLoAAGAAAtsEAAC 1 2006-06-30 234123 2006-06-30 1
AAAGLoAAGAAAtsEAAD 2 2006-06-30 234234 2006-06-30 2
AAAGLoAAGAAAtsEAAE 123 2006-06-30 123456 2006-06-30 123
SQL select rowid,t.* from test_part partition(p2) t;
ROWID A1 A2 A3 A4 A5
------------------ ---------- ----------- ------ ----------- ----------
AAAGLwAAGAAA+8MAAC 1234 2006-06-30 456789 2006-06-30 1234
AAAGLwAAGAAA+8MAAD 1111 2006-06-30 ewrqwe 2006-06-30 1111
直接update提示错误
SQL update test_part set a1=1123 where a1=123;
update test_part set a1=1123 where a1=123
ORA-14402: 更新分区关键字列将导致分区的更改
打开row movement属性
SQL alter table test_part enable row movement;
Table altered
再次执行update操作
SQL update test_part set a1=1123 where a1=123;
1 row updated
执行是成功的并迁移到分区P2上了,且这时候rowid也发生了变化
SQL select rowid,t.* from test_part partition(p2) t;
ROWID A1 A2 A3 A4 A5
------------------ ---------- ----------- ------ ----------- ----------
AAAGLwAAGAAA+8MAAC 1234 2006-06-30 456789 2006-06-30 1234
AAAGLwAAGAAA+8MAAD 1111 2006-06-30 ewrqwe 2006-06-30 1111
AAAGLwAAGAAA+8PAAB 1123 2006-06-30 123456 2006-06-30 123
SQL
enable row movement可以允许数据段的压缩、update分区字段的数据(跨分区的)
一、
伪列就像Oracle中的一个表列,但实际上它并未存储在表中。伪列可以从表中查询,但是不能插入、更新或删除它们的值。常用的伪列:rowid和rownum。
Rowid:数据库中的每一行都有一个行地址,Rowid伪列返回该行地址。可以使用Rowid值来定位表中的一行。通常情况下,Rowid值可以唯一地标识数据库中的一行。
Rowid伪列有以下重要用途:
1)能以最快的方式访问表中的一行;
2)能显示表的行是如何存储的。
3)可以作为表中行的唯一标识。
如:SQL select rowid,ename from emp;
Rownum:对于一个查询返回的每一行,Rownum伪列返回一个数值代表的次序。返回的第一行的Rownum值为1,第二行的Rownum值为2,依此类推。通过使用Rownum伪列,用户可以限制查询返回的行数。
如:SQLselect * from emp where rownum11; 从EMP表中提取10条记录
二、
oracle中不支持select top n from tablename 查询,但是通过 order by 和 rownum 组合可以实现此功能。例如:SELECT 列名1...列名n FROM
(SELECT 列名1...列名n FROM 表名 ORDER BY 列名1...列名n)
WHERE ROWNUM = N(抽出记录数)
ORDER BY ROWNUM ASC