`

oracle SQL高级编程第1章----笔记1

 
阅读更多

下订单超过4次的女顾客查询:

select c.customer_id, count(o.order_id) as orders_ct
from oe.customers c
join oe.orders o
on c.customer_id = o.customer_id
where c.gender = 'F'
group by c.customer_id
having count(o.order_id) > 4
order by orders_ct, c.customer_id

 注意:group by子句

select 列表中的任何非聚合字段都必须包括在group by 表达式中
group by 还可以包含两个附加运算 ROLLUP和CUBE

 标量子查询:在select中使用另外一个select 语句来产生结果中的一列值,这个查询只能返回一行一列的值,这种类型的查询称为标量子查询

例子:

select  c.customer_id, c.cust_first_name||' '||c.cust_last_name,
		(select e.last_name 
		 from hr.employees e 
		 where e.employee_id = c.account_mgr_id) acct_mgr
from oe.customers c;

 子查询插入:

insert into scott.bonus (ename, job, sal)
select ename, job, sal * .10
from scott.emp;

 多表插入:

insert all
--小于10000插入small_customers
when sum_orders < 10000 then
into small_customers
--介于10000~100000插入medium_customers
when sum_orders >= 10000 and sum_orders < 100000 then
into medium_customers
--大于100000插入 large_customers
else
into large_customers
select customer_id, sum(order_total)  sum_orders
from oe.orders
group by customer_id ;

  update语句:

--创建表利用已有表的数据
create table employees2 as select * from hr.employees ; 
--添加主键 
alter table employees2 add constraint emp2_emp_id_pk primary key (employee_id) ;
--1.使用表达式更新一个单列的值
update employees2 set salary = salary * 1.10 -- increase salary by 10% 
where department_id = 90 ; 
--2.通过子查询更新一个单列的值 
update hr.employees employees set salary = 
(select employees2.salary from employees2 where employees2.employee_id = 
employees.employee_id and employees.salary != employees2.salary) 
where department_id = 90 ; 
--3.通过在where子句中使用子查询确定要更新的单列的值 
update hr.employees set salary = salary * 1.10 where department_id 
in (select department_id from departments where department_name = 'Executive') ;
--4.通过select语句定义表及列的值来更新表 
update (select e1.salary, e2.salary new_sal 
from hr.employees e1, employees2 e2 
where e1.employee_id = e2.employee_id and e1.department_id = 90) 
set salary = new_sal; 
--5.通过子查询来更新多列
update hr.employees employees 
set (salary, commission_pct) = 
(select employees2.salary, .10 comm_pct 
from employees2 where employees2.employee_id = 
employees.employee_id and employees.salary != employees2.salary) 
where department_id = 90 ; 

  delete语句:

 

 --1.通过where 字句筛选的条件进行删除 
delete from employees2 where department_id = 90;
 --2.使用from子句的子查询删除 
delete from (select * from employees2 where department_id = 90);
 --3.通过where 字句中的子查询来进行删除
 delete from employees2 where department_id in 
(select department_id from hr.departments where department_name = 'Executive');

 

 

merge语句:同时完成了插入,更新,删除

merge into dept60_bonuses b
using (
select employee_id, salary, department_id
from hr.employees
where department_id = 60) e
on (b.employee_id = e.employee_id)
when matched then
update set b.bonus_amt = e.salary * 0.2
where b.bonus_amt = 0
delete where (e.salary > 7500)
when not matched then
insert (b.employee_id, b.bonus_amt)
values (e.employee_id, e.salary * 0.1)
where (e.salary < 7500);

 

分享到:
评论

相关推荐

    oracle_sql笔记

    这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...

    oracle安装-卸载-初识oracle-笔记

    创建表是数据库设计的第一步,包括定义列、数据类型、约束等。维护表则涉及到修改表结构、删除记录、重命名表等操作。 二、对表的各种操作 Oracle支持丰富的数据操作语言(DML),如INSERT用于插入数据,UPDATE用于...

    Oracle PL SQL Programming 第五版-带书签目录超清文字版

    Oracle PL/SQL编程是Oracle数据库开发中的核心技能之一,它是一种强大的过程式语言,用于在Oracle环境中编写存储过程、函数、触发器等数据库程序。第五版的《Oracle PL SQL Programming》是一本深入学习PL/SQL的权威...

    达内,tarena,oracle笔记,oraclePPT课件,达内oracle笔记

    笔记可能涵盖了范式理论,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF),以及如何避免数据冗余和提高数据一致性。 4. **PL/SQL编程**:PL/SQL是Oracle特有的过程式语言,结合了SQL与传统的编程语言元素。...

    学习笔记之Oracle教程(免费).pdf--超详细

    - **第一范式至第三范式**:解释了各个范式的意义及其在设计关系型数据库中的应用。 - **反规范化**:讨论了在特定情况下为何需要采用反规范化的策略。 #### 数据库设计工具 - **ER图绘制**:教授如何使用实体关系...

    Mastering_Oracle_SQL学习笔记

    通过系统学习《Mastering Oracle SQL学习笔记》中的这些章节,初学者不仅能够掌握Oracle SQL的基本操作,还能深入了解高级查询技巧和数据库管理的最佳实践,从而成为一名熟练的Oracle数据库管理员或数据分析师。

    Mastering_Oracle_SQL(含源码)

    5. **PL/SQL编程**:Oracle的存储过程、函数、触发器和包(Packages)等PL/SQL编程元素,以及异常处理和游标。 6. **数据类型和约束**:熟悉Oracle的各种数据类型,如NUMBER、VARCHAR2、DATE等,以及实体完整性约束...

    Oracle高级操作函数学习笔记

    MINUS操作返回第一个SELECT语句结果集中有,但第二个SELECT语句结果集中没有的记录,即差集。 例如: ```sql SELECT empno, ename, sal FROM emp_hhs WHERE sal &gt; 1000 AND sal MINUS SELECT empno, ename, ...

    Oracle数据库课堂笔记

    第一讲:Oracle简介 Oracle数据库是由甲骨文公司开发的,提供了一整套数据存储、管理和检索解决方案。它支持多种操作系统和硬件平台,具有高可用性、高性能和安全性等特性。Oracle数据库采用SQL作为查询语言,同时...

    sql/oracle培训与学习资料

    标题 "sql/oracle培训与学习资料" 暗示了这个压缩包主要...通过深入学习和实践这些内容,你可以提升在Oracle数据库管理和SQL编程方面的技能,这对于从事数据库管理员(DBA)或者数据库开发人员的工作来说是非常宝贵的。

    oracle学习笔记整理

    Oracle数据库系统提供了丰富的功能,包括数据存储、管理、查询以及高级的PL/SQL编程能力。以下是对Oracle学习笔记整理的主要知识点的详细说明: 1. **数据库选择**: 在决定使用哪种数据库时,通常需要考虑项目的...

    Oracle实用教程笔记

    Oracle数据库的诞生可以追溯到IBM的一篇论文,该论文讨论了关系型数据库的发展,基于这篇论文的理论,Oracle公司编写出了第一个版本的Oracle数据库。在古希腊神话中,“Oracle”意味着神谕,象征着预言和知识,而在...

    Oracle笔记1

    【Oracle笔记1】这篇笔记主要介绍了Oracle数据库的基础知识,包括数据库的基本概念、发展阶段以及Oracle公司的历史,同时还涉及了Oracle的安装、常用服务、目录结构、文件后缀、数据库的使用方式以及卸载过程。...

    Oracle学习笔记

    #### 第一章:Oracle入门 **1. Oracle的物理结构** - **Oracle的主要组件** - **Oracle服务器**:由Oracle数据库和Oracle实例组成。 - **Oracle实例**:指后台进程和内存结构的集合。 - **Oracle数据库**:包含...

    韩顺平最新Oracle笔记及PPT

    4. **《韩顺平玩转oracle10g实战教程第X讲.ppt》**:这一系列PPT文件是针对Oracle 10g版本的实战教程,每讲可能聚焦于一个或多个特定主题,如数据库安装、SQL查询、PL/SQL编程、数据库备份与恢复、数据库性能监控等...

    Oracle全功能笔记

    Oracle全功能笔记主要涵盖Oracle数据库系统的各个方面,包括其命令行客户端工具、SQL语言以及数据库管理。以下是关于这些知识点的详细说明: 1. **命令行客户端**: - `sqlplus`是Oracle数据库的一个核心组件,它...

    Oracle 超强学习笔记

    本"Oracle超强学习笔记"将带你深入探索Oracle的世界,掌握从基础到高级的各种技术,助你在数据库管理领域提升专业技能。 1. **Oracle简介** Oracle数据库是由美国甲骨文公司开发的关系数据库系统,其核心组件包括...

    oracle 学习笔记资料

    8. **数据库设计与范式**:在"Oracle-day01.pdf"中,可能还会介绍数据库设计的基本原则,如第一范式(1NF)、第二范式(2NF)和第三范式(3NF),以及如何设计符合这些范式的数据库表。 9. **数据库复制与集群**:...

    Oracle培训18天老师笔记

    这份"Oracle培训18天老师笔记"无疑是一份详实的学习资料,涵盖了Oracle数据库的基础到高级知识,旨在帮助学习者系统地掌握Oracle技术。 在18天的培训中,笔记可能按照以下顺序逐日深入: 第1天:Oracle概述 这天的...

Global site tag (gtag.js) - Google Analytics