(一)删除表中所有数据:
方法一: 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语句优化规则汇总.pdf”很可能提供了关于如何提高Oracle数据库查询效率、减少资源消耗的关键信息。以下是一些可能涵盖在文档中的关键知识点: 1. **索引优化**: - 使用合适的索引类型,如B树索引...
Oracle 常用 SQL 语句汇总 Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义...
9. PL/SQL控制结构:如CASE语句、IF...THEN...ELSE...END IF结构等,用于编写过程和函数。 10. 游标和查询相关函数:如CURSOR(定义游标)、FETCH(从游标获取数据)以及嵌套查询中的聚合函数。 11. 连接函数:如...
本文将深入探讨Oracle语句优化的若干关键规则,帮助你提升数据库的运行效率。 1. **选择正确的索引策略**:索引是提升查询速度的关键。为经常出现在WHERE子句中的列创建索引可以显著加速查询。B树索引适用于等值...
这些函数常在SQL查询的GROUP BY语句中使用,进行数据汇总。 6. **分析函数**:分析函数在处理大量数据时非常有用,如`RANK`、`DENSE_RANK`和`ROW_NUMBER`用于生成行序号,`LEAD`和`LAG`可以访问当前行的前一行或后...
Oracle数据库是世界上最广泛使用的数据库系统之一,其内置函数是实现高效数据处理的关键工具。这篇文档“oracle内置函数大全”提供了一个全面的参考,适合数据库管理员、开发人员以及初学者使用。下面将详细介绍...
本文件"oracle常用SQL语句(汇总版)"将对Oracle中的常用SQL语法进行详尽阐述。 1. 数据查询: - `SELECT`语句:这是SQL中最基本的查询语句,用于从表中检索数据。例如,`SELECT * FROM 表名;`将返回表中的所有记录...
Oracle的DECODE函数是一种条件表达式,用于在SQL语句中执行类似于IF...THEN...ELSE逻辑判断的功能。它根据一个指定的表达式的值,与一系列的条件进行比较,如果匹配到某个条件,则返回对应的值;如果没有匹配任何...
"Oracle常用语句-总结文档汇总"提供了丰富的资源,涵盖了SQL语句的基础到进阶应用,包括列行转换、SQL性能优化等多个关键知识点。 首先,列行转换是数据处理中常见的需求,Oracle提供了多种方法来实现这一操作。...
Oracle 分析函数是数据库查询中的强大工具,它们允许在单个SQL语句中对结果集进行复杂的计算和分组操作,极大地简化了数据分析的过程。在Oracle 8i版本之后引入,分析函数为处理大量数据提供了高效的方法,避免了...
在进行多表关联时,多用 WHERE 语句把单个表的结果集最小化,多用聚合函数汇总结果集后再与其他表做关联,以使结果集数据量最小化。这可以减少查询的时间和内存占用。 2. EXISTS 和 IN 语句的使用 使用 EXISTS 而...
分组函数主要作用于一组数据上,而不是单个记录,它们用于对数据进行汇总,如计算总和、平均值、最大值、最小值等。在SQL查询中,我们通常使用`GROUP BY`语句来定义分组,然后使用分组函数对每个分组进行计算。例如...
**聚组函数**如`COUNT`、`SUM`、`AVG`、`MAX`和`MIN`用于对一组数据进行统计汇总。它们常在SQL查询的`GROUP BY`语句中使用,帮助我们快速获取每个分组的计数、总和、平均值、最大值和最小值。 **分析函数**如`RANK`...
本文主要汇总了Oracle中的常用SQL语句,包括数据控制语句(DML)和数据定义语句(DDL)中的关键函数和操作。 一、数据控制语句(DML) 1. INSERT语句: - 插入单行数据:`INSERT INTO 表名(字段名1, 字段名2, ......
聚组函数在SQL查询中用于汇总数据,如`COUNT`计数,`SUM`求和,`AVG`计算平均值,`MIN`和`MAX`找出最小和最大值,以及`GROUP BY`语句配合使用这些函数进行分组。 6. 分析函数: 分析函数允许在数据分组后进行更复杂...
Oracle 10G是Oracle数据库的一个重要版本,它包含了丰富的函数和特性,为数据库管理和开发提供了强大的支持。本文将深入探讨Oracle 10G中的一些关键函数,旨在帮助你更好地理解和利用这些工具。 1. **数学函数**: ...
以下是对Oracle常用函数及SQL语句的详细说明: **一、数据控制语句(DML)** 1. **INSERT**:用于向数据表中插入新记录。有两种基本形式: - 直接插入指定值:`INSERT INTO 表名(字段名1, 字段名2, ...) VALUES...