下订单超过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的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...
创建表是数据库设计的第一步,包括定义列、数据类型、约束等。维护表则涉及到修改表结构、删除记录、重命名表等操作。 二、对表的各种操作 Oracle支持丰富的数据操作语言(DML),如INSERT用于插入数据,UPDATE用于...
Oracle PL/SQL编程是Oracle数据库开发中的核心技能之一,它是一种强大的过程式语言,用于在Oracle环境中编写存储过程、函数、触发器等数据库程序。第五版的《Oracle PL SQL Programming》是一本深入学习PL/SQL的权威...
笔记可能涵盖了范式理论,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF),以及如何避免数据冗余和提高数据一致性。 4. **PL/SQL编程**:PL/SQL是Oracle特有的过程式语言,结合了SQL与传统的编程语言元素。...
- **第一范式至第三范式**:解释了各个范式的意义及其在设计关系型数据库中的应用。 - **反规范化**:讨论了在特定情况下为何需要采用反规范化的策略。 #### 数据库设计工具 - **ER图绘制**:教授如何使用实体关系...
通过系统学习《Mastering Oracle SQL学习笔记》中的这些章节,初学者不仅能够掌握Oracle SQL的基本操作,还能深入了解高级查询技巧和数据库管理的最佳实践,从而成为一名熟练的Oracle数据库管理员或数据分析师。
5. **PL/SQL编程**:Oracle的存储过程、函数、触发器和包(Packages)等PL/SQL编程元素,以及异常处理和游标。 6. **数据类型和约束**:熟悉Oracle的各种数据类型,如NUMBER、VARCHAR2、DATE等,以及实体完整性约束...
MINUS操作返回第一个SELECT语句结果集中有,但第二个SELECT语句结果集中没有的记录,即差集。 例如: ```sql SELECT empno, ename, sal FROM emp_hhs WHERE sal > 1000 AND sal MINUS SELECT empno, ename, ...
第一讲:Oracle简介 Oracle数据库是由甲骨文公司开发的,提供了一整套数据存储、管理和检索解决方案。它支持多种操作系统和硬件平台,具有高可用性、高性能和安全性等特性。Oracle数据库采用SQL作为查询语言,同时...
标题 "sql/oracle培训与学习资料" 暗示了这个压缩包主要...通过深入学习和实践这些内容,你可以提升在Oracle数据库管理和SQL编程方面的技能,这对于从事数据库管理员(DBA)或者数据库开发人员的工作来说是非常宝贵的。
Oracle数据库系统提供了丰富的功能,包括数据存储、管理、查询以及高级的PL/SQL编程能力。以下是对Oracle学习笔记整理的主要知识点的详细说明: 1. **数据库选择**: 在决定使用哪种数据库时,通常需要考虑项目的...
Oracle数据库的诞生可以追溯到IBM的一篇论文,该论文讨论了关系型数据库的发展,基于这篇论文的理论,Oracle公司编写出了第一个版本的Oracle数据库。在古希腊神话中,“Oracle”意味着神谕,象征着预言和知识,而在...
【Oracle笔记1】这篇笔记主要介绍了Oracle数据库的基础知识,包括数据库的基本概念、发展阶段以及Oracle公司的历史,同时还涉及了Oracle的安装、常用服务、目录结构、文件后缀、数据库的使用方式以及卸载过程。...
#### 第一章:Oracle入门 **1. Oracle的物理结构** - **Oracle的主要组件** - **Oracle服务器**:由Oracle数据库和Oracle实例组成。 - **Oracle实例**:指后台进程和内存结构的集合。 - **Oracle数据库**:包含...
4. **《韩顺平玩转oracle10g实战教程第X讲.ppt》**:这一系列PPT文件是针对Oracle 10g版本的实战教程,每讲可能聚焦于一个或多个特定主题,如数据库安装、SQL查询、PL/SQL编程、数据库备份与恢复、数据库性能监控等...
Oracle全功能笔记主要涵盖Oracle数据库系统的各个方面,包括其命令行客户端工具、SQL语言以及数据库管理。以下是关于这些知识点的详细说明: 1. **命令行客户端**: - `sqlplus`是Oracle数据库的一个核心组件,它...
本"Oracle超强学习笔记"将带你深入探索Oracle的世界,掌握从基础到高级的各种技术,助你在数据库管理领域提升专业技能。 1. **Oracle简介** Oracle数据库是由美国甲骨文公司开发的关系数据库系统,其核心组件包括...
8. **数据库设计与范式**:在"Oracle-day01.pdf"中,可能还会介绍数据库设计的基本原则,如第一范式(1NF)、第二范式(2NF)和第三范式(3NF),以及如何设计符合这些范式的数据库表。 9. **数据库复制与集群**:...
这份"Oracle培训18天老师笔记"无疑是一份详实的学习资料,涵盖了Oracle数据库的基础到高级知识,旨在帮助学习者系统地掌握Oracle技术。 在18天的培训中,笔记可能按照以下顺序逐日深入: 第1天:Oracle概述 这天的...