1.交换两条记录的属性值
update tx_ry ry1 set px=(select px from tx_ry where id in (pk1,pk2) and id<>ry1.id) where id in (pk1,pk2);
2.自关联查询
select mk.*,level from xt_xtmk mk where 1=1 start with mc='附加信息管理' connect by prior id=fid --向下查
union
select mk.*,level from xt_xtmk mk where 1=1 start with mc='附加信息管理' connect by prior fid=id --向上查
level是伪列,表示所在层级。
3.pk、uk、fk、idx、unique index创建及区别
alter table Yj_Yjcllc add constraint PK_Yj_Yjcllc primary key (ID);
alter table Yj_Yjcllc add constraint UK_Yj_Yjcllc unique (sjid,sjspbz);
alter table Yj_Yjcllc add constraint FK_Yj_Yjcllc foreign key (sjid) references YJ_YJJB (ID);
create index idx_Yj_Yjcllc_sjid on Yj_Yjcllc (sjid); //外键建索引能够提高查询速度
create unique index idx_yj_yjcllc_idbz on yj_yjcllc (sjid,sjspbz);//唯一索引是索引的特例
注意:oracle 会默认给pk、uk建索引,但不默认给fk建索引,所以需要用户自己给fk建索引。
pk、uk、fk是约束,可以在user_constraints表中查到;pk索引、uk索引、idx 是索引,可以在user_indexes中查,user_ind_columns 索引列。
uk与唯一索引的区别:创建pk、uk是系统默认在user_constraints表中创建约束,并在user_indexes表中创建唯一索引;
唯一索引(unique index)只会在user_indexes表中创建唯一索引,而不会在user_constraints表中创建约束。
4.查看表空间使用情况的SQL语句:
select a.tablespace_name "表空间名",total 表空间大小,free 表空间剩余大小,
(total-free) 表空间使用大小, round((total-free)/total,4)*100 "使用率 %",
(select file_name from dba_data_files where tablespace_name=a.tablespace_name and rownum<2) "文件名"
from
(select tablespace_name,sum(bytes) free from dba_free_space group by tablespace_name) a,
(select tablespace_name,sum(bytes) total from dba_data_files group by tablespace_name) b
where a.tablespace_name=b.tablespace_name
--创建表空间及数据文件
create tablespace iests datafile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\IES_1.DBF' size 200m reuse autoextend on next 50m;
--给表空间添加数据文件
alter tablespace iests add datafile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\IES_2.DBF' size 200m reuse autoextend on next 50m;
--扩展已有数据文件的大小
alter database datafile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\SYSTEM01.DBF' resize 600M;
5.查询创建的用户下的表的记录数
select user_id,username,table_name,ies.getfieldvalue('count(1)',table_name,'1=1') cnt
from (select u.user_id,u.username,t.owner||'.'||t.table_name table_name from all_users u,all_tables t where t.owner=u.username and user_id>60 order by user_id,table_name)