ORACLE 数据库总结
2024-10-10 11:57:42
1.表和数据恢复
1、从回收站里查询被删除的表
select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin;
2.执行表的恢复语句
flashback table tableName to before drop; tableName需要恢复的表名
2.数据库优化
1.避免使用select *
2、使用表的别名
3、用Exists 替代 in
--糟糕的查询
SELECT column_name FROM table_name1 WHERE column_name IN( SELECT column_name FROM table_name2)
---较好的查询
SELECT column_name FROM table_name1 outer WHERE EXISTS (SELECT 1 FROM table_name2 inner WHERE inner.column_name = outer.column_name) 4、用not exists 替代 not in
---较好的查询
select columnname,columnname1 from Table_Name1 t1,Table_Name2 t2 where t1.id=t2.id and t2.name<>'A'
---更好的查询
select columnname,columnname1 from Table_Name1 t1 where not exists(select 1 from Table_Name2 t2 where t2.id=t1.id and t2.name='A')
5、用exists替换distinct
当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在select字句中使用distinct。一般可以考虑用Exists替换。Exists使查询更为迅速,因为RDBMS核心模块将在子查询的条件一旦满足后,立刻返回结果。
--糟糕的查询
SELECT DISTINCT t1.column_name
FROM table_name1 t1, table_name2 t2
WHERE t1.column_name = t2.column_name;
---较好的查询
SELECT column_name
FROM table_name1 outer
WHERE EXISTS
(SELECT 1
FROM table_name2 inner
WHERE inner.column_name = outer.column_name)
6、用>=替换>
---糟糕的查询
select * from EMP where id>3;
//较好的查询
select * from EMP where id>=4;
两者的区别在于,后者将直接跳转到第一个id等于4的记录而前者将首先定位到id=3的记录并且向前扫描到第一个id大于3的记录。
3.on和where的执行方式解析:
1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
4.oracle认为 null 最大
升序排列,默认情况下,null值排后面。
降序排序,默认情况下,null值排前面。
5.如果查询出comm查询出为空值就用0替代,不为零则使用comm值
select ename,sal*13+nvl(comm,0)*13 "年工资" from emp;
6.Oracle中语句 赋值和循环写法
declare
i int:=1; //初始化 赋值(:=)
begin
loop //开始循环
exit when i>10;
DBMS_OUTPUT.PUT_LINE('编号为'||i);
i:=i+1;//相当于i++
end loop;//结束循环
end;
最新文章
- Git命令参考手册(文本版)
- [NHibernate]关联映射
- QTP学习笔记之—VBS
- java基础题目总结
- slatsatck file模块2种写法及系统初始化
- .net学习笔记---HttpRuntime类
- android监听屏幕打开关闭广播无响应的情况
- SqlSever基础 right函数 从右边开始,截取字符串
- uva 10158
- Android开发手记(12) Menu的使用
- php 如何写入、读取word,excel文档
- hdu 4059 The Boss on Mars 容斥
- 【树状数组】 poj 2352
- Python爬虫入门 Urllib库的基本使用
- Threejs 开发3D地图实践总结
- 201521123033《Java程序设计》第2周学习总结
- Cocos Creator 资源加载流程剖析【二】——Download部分
- Python实现RSA无填充加密,兼容BouncyCastle
- 获取Button脚本挂载的事件名
- ASP.Net Core 2.2 MVC入门到基本使用系列 (四)(转)