sql语句拾遗

系统 1804 0

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)

sql语句拾遗


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论