4.2.7、连接查询。如一个列是籍贯中存的代码,如何通过一个SQL语句释成中文:表RY(XM,XB,JG),表JG_CODE(CODE,zhongwen)
select a.xm,a.xb,b.zhongwen from ry a,jg_code b where a.jg=b.code(+)
注意此处的(+),既“右连接”,指的是左边的字段值集可以是右边字段值集的子集,不影响左边表的查询结果。(+)也可以用在条件左边,称为“左连接”。
4.2.8、使用minus、union、intersect对结果集进行差、合、交操作。
--从结果集中去掉包含在另外一个结果集中的记录。
Select * from tab1 minus select * from tab2;
--将两个(或两个以上)结果集联合成一个结果集
Select * from tab1 union select * from tab2;
--查询在两个结果集中同时存在的记录
Select * from tab1 intersect select * from tab2;
4.2.9、嵌套查询(带子查询的复合查询)
Select * from tab1 where (tab1.column1, tab1.column2,…)in(select tab2.column1,tab2.column2,… from tab2)
注意此处的in也可以是 not in
4.2.10、查询表中出现重复记录的字段
Select column1 from tab group by column1 having count(column1)>1;
4.2.11、表类似创建
--创建表tab2,它的结构同tab1,创建的同时将tab1中的记录copy到tab2中
Create table tab2 as select * from tab1;
注意此处创建并未同时创建表上的约束、触发器等tab1上对象;
另外如果只想创建表结构而不想拷贝数据可以在后边增加如:where 1=2等不存在的条件;
同时tab1可以是远程表.
4.2.12、表(其它数据库对象也可)重命名
Rename tab1 to tab2;
4.2.13、修改表(其它数据库对象也可)存储空间
Alter table tab remove table space to tabspc_new;
4.2.14、加快表更新速度,不记录更新日志(也可以是索引等)。
Alter table tab nologging;
4.2.15、使用表截断快速删除表记录
Truncate table tab;