Oracle较之MySQL的高级特性持续汇总
-
1 merge 合并查询
merge into tabl1 a using (select 1717 product_id, "002" req_no from table2 b on (a.product_id = b.product_id and a.req_no = b.req_no) when matched then update set product_name = "更新", category = "新的" when not matched then insert (product_id, req_no) values(1701, "002"); 命令解释: 合并查询 表a 关联查询为 b表的product_id字段为1717和req_no字段为"002" 的值 判断条件为 a表的的product_id等于1717和req_no字段为"002"也为002的 当有符合搜索结果的内容时 更新 a表对应的内容的product_name为“更新”,req_no为"002" 当没有符合条件的内容时 执行a表的插入操作
-
2 start with connect by 递归查询
应用在树形结构中,比如领导和下属的递归关系
start with 从某个节点ID开始 connnect by prior 子节点与父节点的关系
比如:
select * from emp start with empnumber=3306 connect by prior meg=empnumber;
- 父节点=子节点,向上查询;子节点=父节点,向下查询
- 可以添加 WHERE 条件判断; 写在 start 的前面;
- 可以指定多个起始节点,使用 OR 关键字;
- 可以进行排序
-
3 同义词 sysnonym
可以为表起别名,是一种映射关系,别名的意思,和视图的功能类似;不同数据库实例间也可以访问同义词;
私有同义词,普通用户获取对应权限后自己建立的同义词;
create sysnonym name from table_name;
共有同义词,DBA创建,所有的用户可以使用
create public sysnonym name from 用户名.table_name;
使用:
select * from 同义词;
远程访问同义词
首先设置同义词的远程连接
create public database link mylink
connect to 用户 identified by 密码 using
'(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP) (HOST=127.0.0.1)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=数据库名))
)
)';
使用
select * from 表名@mylink;
注意:
远程连接时,二进制数据无法展示
-
4 闪回和清空
Oracle 提供类似于回收站的功能,删除了并不是真的删除,而是放到了回收站,在没有执行清空回收站的指令前,可以通过闪回来恢复数据。
闪回: falshback table table_name to before drop;
清空: purge recyclebin;