(一)删除表中所有数据:
方法一: delete from 表名;
方法二: truncate table 表名; // 速度更快
(二)A表数据复制给B表(表复制):
1、创建表时复制:
create table c as select * from b; // as 是关键字不能省略
create table d(username) as select username from a;
或 create table d(username) as (select username from a);
2、表已经存在,仅记录复制
insert into b(select * from a); // 全复制
insert into b(username) select username from a; // 有选择的复制
或 insert into b(username)(select username from a);
(三) top n 问题(orcale没有该关键字)
SELECT ... FROM ... WHERE ... AND rownum <= 10
// rownum 是隐式游标,rownum <= 10 类似于 top 10
如果有 order by 的处理方法(可以使用临时表):
SELECT * FROM (
SELECT A.*, rownum r FROM
(
SELECT *
FROM Articles
ORDER BY PubTime DESC //蓝色部分可以改为任意的select
) A
WHERE rownum <= PageUpperBound
) B
WHERE r > PageLowerBound; // r 是rownum的别名
(四)oracle同时向多表插入数据
All表示非短路运算,即满足了第一个条件也得向下执行查看是否满足其它条件,而First是短路运算找到合适条件就不向下进行。
INSERT ALL
WHEN prod_category=’B’ THEN
INTO book_sales(prod_id,cust_id,qty_sold,amt_sold)
VALUES(product_id,customer_id,sale_qty,sale_price)
WHEN prod_category=’V’ THEN
INTO video_sales(prod_id,cust_id,qty_sold,amt_sold)
VALUES(product_id,customer_id,sale_qty,sale_price)
WHEN prod_category=’A’ THEN
INTO audio_sales(prod_id,cust_id,qty_sold,amt_sold)
VALUES(product_id,customer_id,sale_qty,sale_price)
SELECT prod_category ,product_id ,customer_id ,sale_qty,sale_price
FROM sales_detail;
(五)Merge into用法:
如果条件匹配就更新,不存在就插入 。
语法为:
MERGE INTO table
USING data_source
ON (condition)
WHEN MATCHED THEN update_clause // 匹配则更新
WHEN NOT MATCHED THEN insert_clause; // 不匹配则插入记录
举例:
MERGE INTO course c
USING ( SELECT course_name, period, course_hours
FROM course_updates) cu
ON (c.course_name = cu.course_name
AND c.period = cu.period)
WHEN MATCHED THEN
UPDATE SET c.course_hours = cu.course_hours
WHEN NOT MATCHED THEN
INSERT (c.course_name, c.period, c.course_hours)
VALUES (cu.course_name, cu.period, cu.course_hours);
备注:on后面的条件语句查询出的结果集必须大于1。
(六)oracle多表关联更新
如果要将test1表与test2表no字段相等的记录的name字段更新为与test2表中的name字段的值.
update test1 a set name=(select name from test2 b where a.no=b.no) where
exists(select name from test2 b where a.no=b.no);
(七)Oracle A表向B表导入数据(存储过程):
存储过程如下:
create or replace procedure TestProc is
begin
for c in (select id, name from test2) loop
insert into test(id,name) values(c.id, c.name);
end loop;
end TestProc;
执行存储过程:
Exec TestProc;
(八)Oracle多表级联删除方法
Oracle可以实现级联删除,不可以级联更新; 级联更新可以通过触发器实现。
方法1:创建约束时设定级联删除
(但一般由于各种原因或出于各种考虑在创建数据库时没有设定级联删除)
方法二:创建约束时没有使用级联删除,在需要使用级联删除时,删除原来的外键约束,重建带级联删除的约束(相当于把已有的表修改为可以级联的表)
方法三:使用触发器(创建时没有级联删除)
(比较灵活,可以根据自己编写的程序进行,引用的不是唯一主键也可以)
SQL:
CREATE OR REPLACE TRIGGER "FG123"."TER_OV"
BEFORE
DELETE ON "ORDERCOMBINE" FOR EACH ROW // 删除
BEGIN
DELETE FROM VIPForm WHERE VIPForm.V_Id=:OLD.FormerId;
END;
或
SQL:
CREATE OR REPLACE TRIGGER ID_TRG
AFTER
UPDATE ON AAA FOR EACH ROW // 更新
BEGIN
UPDATE BBB SET a=:NEW.a WHERE a=:OLD.a;
END;
(九)Concat() 函数:
update tab1 set user_email = concat(name,'@byzh.com') where user_id = '2713'
注:CONCAT 连接字符,相当于 || ;两个或者多个字符串连接 用 || 比较好。
例如:select concat('aa'||' ','bb') from tab1; // 字符aa 与 空格、bb 连接
(十)DBMS_OUTPUT.put()与DBMS_OUTPUT.put_line()区别:
语句:
declare
begin
DBMS_OUTPUT.put( "--put--"); //不换行输出
DBMS_OUTPUT.put_line( "--putline-- "); //换行输出
end;
在SQL Plus中:
SQL>set serveroutput on // 设置客户端显示输出
SQL>exec dbms_output.put_line('***');
(十一)Oracle常用的系统函数:
字符:length , replace, substr , ltrim ,rtrim , trim
日期:Sysdate , current_date , next_day
转换:to_char, to_date, to_number
聚集函数:sum,avg,max, min,count
其他:user,decode,nvl
分享到:
相关推荐
ORACLE函数大全汇总详解(20100915补充修订版) 函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句
ORACLE优化器、共享SQL语句、选择最有效率的表名顺序、使用DECODE函数来减少处理时间等等53种方法!
一、运算符算术运算符:+ – * / 可以在select 语句中使用连接运算符:|| select deptno|| dname from dept; 比较运算符:> >= = != < <= like between is null in逻辑运算符:not and or 集合运算符: ...
Oracle Exception汇总(自定义Oracle异常) 使用方法举例: Exception When no_data_found then Dbms_output.put_line(‘no_data_found’); ACCESS_INTO_NULL 为对象赋值前必需初始化对象。对应ORA-06530错误。 CASE...
本课程适应从事大数据行业开发人员或数据库开发人员以及BI开发人员,其中包含有ORACLE的理论基础知识,OracleSQL语句详细讲解、面试问题汇总、BI理论知识。汇总了Oracle在开发中常用到的各种函数如分析函数、开窗...
达梦和oracle的差异说明,关键字汇总,示例说明;
在管理系统中,管理人员往往需要对业务数据进行不同需求的分层汇总,并产生各种形式交叉报表。为了实现此类报表,程序员需要构造层次结构非常复杂的SQL语句,甚至使用前台编程工具或其它报表工具来完成。 以下通过二...
第5~12章是提高部分,讲解了正则表达式、分析函数、树形查询及汇总函数的用法。这部分知识常用于对一些复杂需求的实现及优化改写。最后两章介绍日常的优化改写案例。这部分是前面所学知识的扩展应用。, 如果您是开发...
使用GROUP BY语句时,你一般得不到多级总数。可以用GROUP BY GROUPING SETS来代替GROUP BY CUBE。你可以应用来指定你感兴趣的总数组合。因为它不必计算它不需要集合(也不会产生太多结果),所以对SQL引擎来说更为...
第5~12章是提高部分,讲解了正则表达式、分析函数、树形查询及汇总函数的用法。这部分知识常用于对一些复杂需求的实现及优化改写。最后两章介绍日常的优化改写案例。这部分是前面所学知识的扩展应用。, 如果您是开发...
汇总oracle一些常用SQL语句,比如:用户解锁、修改用户密码、锁表、视图恢复、定时任务、物化视图、触发器、带参游标、常用函数、执行计划、字符串/时间各种运算、HTTP请求、SQL优化等
第5~12章是提高部分,讲解了正则表达式、分析函数、树形查询及汇总函数的用法。这部分知识常用于对一些复杂需求的实现及优化改写。最后两章介绍日常的优化改写案例。这部分是前面所学知识的扩展应用。, 如果您是开发...
从存储过程 自定义函数格式 游标 变量 赋值 语句结束符 大小写 Select 语法 Update语法 Delete语法 动态SQL语句 TOP用法 等各方面对比两个数据库的差异
第5~12章是提高部分,讲解了正则表达式、分析函数、树形查询及汇总函数的用法。这部分知识常用于对一些复杂需求的实现及优化改写。最后两章介绍日常的优化改写案例。这部分是前面所学知识的扩展应用。 如果您是开发...
覆盖oracle里面所有常见函数用法,以及常见sql语句,感觉非常使用,并且是DBA的必备资料
常见的oracle问题汇总,如下所示: 1. Oracle安裝完成后的初始口令? 2. ORACLE9IAS WEB CACHE的初始默认用户和密码? 3. oracle 8.0.5怎么创建数据库? 4. oracle 8.1.7怎么创建数据库? 10. 用什么语句查询字段呢? ...