Oracle 学习笔记(二) 知识概要: 1.子查询 2.集合操作 3.DML语句操作 4.其他数据库对象 1.子查询 查询工资比SCOTT高的员工信息 1  select * 2  from emp 3  where sal > (select sal 4               from emp 5               where ename='SCOTT'); SQL> 注意的问题 SQL> 1. 括号 SQL> 2. 合理的书写风格 SQL> 3. 可以在…
1.通过查询快速创建表 create table test1(id,job,mgr,sal) as () ) ---这是一个分页查询 ok,表创建成功 2.通过查询快速创建视图 create or replace view V_test1 as () ) ---这是一个分页查询 ok,视图创建成功 注意:resource角色可能无法创建视图,所以你在创建视图的时候,可能会遇到权限不足的情况,解决方案是:以dba身份登录数据库,然后执行如下语句: ok,可以创建视图了. 3.通过查询结果集结合In…
一.子查询 1.为什么要使用子查询:问题不能一步求解或者一个查询不能通过一步查询得到. 2.分类:单行子查询和多行子查询. 3.子查询的本质:一个查询中包含了另外一个或者多个查询. 4.使用子查询的规则: (1)可以在主查询的where.select.from.having的后面放置子查询,但是不可以在在group by后面防止子查询. (2)将子查询放到括号中去. (3)强调from后面放置子查询. (4)主查询和子查询使用的可以不是同一张表. (5)一般不在主查询中使用order by,但是…
近日查看SQL慢查询日志,发现对于in的查询总是出现超时问题.超时相关SQL语句:select * from flow_ru_bizvar where businessId IN () and status = 0.可以看到在这句SQL中,最耗时的就是因为in的原因.这里in的对象是一个Long类型(businessId)的List.先是从另一个表中,select出相关的businessId,然后再根据这些businessId进行查询.这样做的目的是为了避免表链接而带来的耗时,然而,从结果来看这…
with c as (select a.trandt,sum(a.tranam) tranam from tran a group by a.trandt )--将子查询抽取出来,以后可以直接用.该方法只适用于oracle,mysql不支持 select c.trandt, sum(d.tranam) from c inner join c d on c.trandt >= d.trandt group by c.trandt select c.trandt, sum(d.tranam) fro…
Oracle子查询:当一个查询依赖于另外一个查询的结果的时候,就需要使用子查询.单行子查询 :筛选条件不明确,需要执行一次查询且查询结果只有一个字段且字段值只有一个.注意:where子句中允许出现查询语句,该查询语句称为子查询.使用:select 内容 from 表名 where 字段名 比较运算符 子查询语句 --查询所有比雇员'CLARK'工资高于员工的信息 select * from emp where sal>(select sal from emp where ename='CLARK…
学习了SQL子查询,遇到个Top-N问题,即:加入有张工资表(这里使用Oracle SCOTT用户的emp表),需要查找工资最高的3个员工信息,以下列格式输出: 乍眼一看,这很简单啊,对sal进行排序就可以了啊. select rownum,empno,ename,sal from emp order by sal desc; 但是,前面的行号呢?题目只要求输出前三行啊... 那这样可不可以呢? select * from(select rownum,empno,ename,sal from e…
1.子查询解决什么问题: 当一个简单的查询查询不到结果的时候,可以使用子查询来丰富查询的条件以达到显示结果的目的. 子查询的格式: 用一个小括号包含,然后在里面写sql语句2.子查询的注意事项: 1).注意一定要有小括号. 2).一定要注意书写格式,不要混乱. 3). 子查询可以放在select,from ,where having后面.    4). 注意子查询一定不能放在group by的后面. 5). 子查询和主查询可以不是同一张表,只要子查询的结果在主查询中能用就可以. 6). 子查询中…
  子查询                                    子查询可以分为单行子查询和多行子查询   单行子查询           [1] 将一个查询的结果作为另外一个查询的条件来使用 特点: 子查询在主查询前执行一次 主查询使用子查询的结果 SELECT * FROM EMP WHERE SAL > (SELECT SAL FROM EMP WHERE ENAME='CLARK'); [2] 子查询可以作为insert语句的值来使用 -- 今天来了一个新员工,将他添加到…
曾经遇到过这样一个需求:要求为method传入String,内容如"用户ID0,用户ID1,用户ID2...",然后根据这些ID返回一个结果集作为数据表供别人查询. SELECT * FROM TBL WHERE ID IN ('用户ID0,用户ID1,用户ID2') 不就可以解决问题吗? 但实际情况是,结果集无法通过一个简单的SELECT就可以得到. 让我明确一下需要解决的问题: 我们给FUNCTION传递这样的一个String参数后如何让它动态RETURN一个结果集供其他SELEC…
1.写一个查询显示与 Zlotkey 的 在同一部门的雇员的 last name和 hire date,结果中不包括 Zlotkey --1.写一个查询显示与 Zlotkey 的 在同一部门的雇员的 last name和 hire date,结果中不包括 Zlotkey select e.department_id from employees e where e.last_name='Zlotkey'; select e.last_name,e.hire_date from employees…
在使用oracle + Entity6的时候, 遇到一个问题,在查询View的时候,在工具中执行View的sql语句,是两条不同的数据. 但是从Entity中查询出来却是两条相同的数据. 查看了一下edmx文件, 发现对于View的对象,在Entity中自动用几个属性定义成Key. 如果这几个key不足以标识数据的唯一性就会出现这个问题. 解决方法: 由于自动定义的KEY不足以标识数据的唯一性, 所以就需要增加属性到KEY中,使KEY的属性组可以唯一的标识数据 在edmx的视图中,找到相应Vie…
1.两个用户是在不同的库,需要建立dblink 2.属于同一个库的不同用户 1)方法一:使用"用户名."的方式访问 例如:要从USER1账号访问USER2中的表TABLE2 A. 需要在USER2中将TABLE2 GRANT给USER1,USER1才有权限访问,访问的时候用SELECT * FROM USER2.TABLE2语句 B.也可以直接给用户USER1赋予dba权限,待使用完后再取出dba,不过很危险就是了. 2)方法二:和查询当前用户的方法一样,查询另一个用户的表信息 如果不…
oracle安装好之后,有一个默认的scott用户,该用户有一个默认的emp表,怎样让新创建的用户也能够访问这个表呢? 授权xiaoming这个用户访问emp表,但是xiaoming只有select权限,如果想给他delete权限,只需要把select换为delete即可,如果想给他所有权限,则把select换为all即可. 那么怎么撤销授权呢? 版权声明:本文为博主原创文章,未经博主允许不得转载.…
1.子查询 1.1.子查询简介 1.2.WITH 子查询 2.集合查询 2.1.UNION 和 UNION ALL 2.2.MINUS 2.3.INTERSECT 2.4.集合运算与 ORDER BY 3.DISTINCT 子句 3.1.普通用法 3.2.做聚合函数的参数 4.总结 1.子查询 1.1.子查询简介 子查询是一个嵌套在 SELECT.INSERT.UPDATE 或 DELETE 语句或其他子查询中的查询.任何允许使用表达式的地方都可以使用子查询,换句话说,子查询几乎可以出现在一条…
Oracle 高级子查询 高级子查询相对于简单子查询来说,返回的数据行不再是一列,而是多列数据. 1,多列子查询 主查询与子查询返回的多个列进行比较 查询与141号或174号员工的manager_id和department_id相同的其他员工的employee_id, manager_id, department_id select employee_id, manager_id, department_id from employees where (manager_id,department…
Oracle 简单子查询 顾名思义,简单子查询是嵌套在 SQL 语句中的另一个SELECT 语句,并且子查询只返回一列数据 1,单行子查询: 子查询 (内查询) 在主查询之前一次执行完成.子查询的结果被主查询(外查询)使用 ,单行子查询,一个子查询语句只返回一行结果,不能返回空值 可以使用>,<,<>(!=),=,<=,>= select select_list from table where expr operation --operation为条件语句表达式, (…
oracle标量子查询和自己定义函数有时用起来比較方便,并且开发者也常常使用.数据量小还无所谓.数据量大,往往存在性能问题. 下面測试帮助大家彻底搞懂标量子查询. SQL> create table a (id int,name varchar2(10)); Table created. SQL> create table b (id int,name varchar2(10)); Table created. SQL> insert into a values (1,'a1'); 1…
在执行数据操作时,如果某个操作需要依赖于另外一个 select语句的查询结果,那么就可以把 select 语句迁入到该操作语句中,这样就形成了一个子查询.实际应用中,表与表之间相互关联,相互依存,这样就可以根据数据之间的关系使用相应的子查询,从而实现复杂的查询. 一.子查询 子查询是在 SQL 语句内的另外一条 select 语句,也被称为内查询或是 内select语句.在select.insert.update 或delete 命令中允许是一个表达式的地方都可以包含子查询,子查询也可以包含在另…
--子查询 --子查询返回一个值 --查询出工资和scott一样的员工信息 select * from emp where sal in (select sal from emp where ename = 'SCOTT'); --子查询返回一个集合 --查询出工资和10号部门任意员工一样的员工信息 select * from emp where sal in (); --子查询返回一张表 --查询出每个部门最低工资.最低工资姓名.该员工所在部门名称 --1.先查询出每个部门最低工资 selec…
一.Oracle的子查询分为两类分别是嵌套子查询和非嵌套子查询.所谓嵌套子查询是指,子查询是一个独立的查询不与外部查询相关,子查询将被先执行,而且只被执行一次,子查询执行完成后,再执行外部的查询,外部查询在执行过程中会使用到子查询的结果.下面我们来看嵌套子查询. hr@OCM> set autot traceonly; hr@OCM> SELECT employee_id,first_name,salary 2 FROM employees 3 WHERE 4 department_id=(S…
一.概述 在一个SQL语句中嵌套另一个SQL语句成为子查询.包括单行子查询,多行子查询,多列子查询. 注意,当在DDL语句中引用子查询时,可以带有Order By子句:但是当在where子句.Set子句中引用子查询时,不能带有Order by 子句.子查询具有以下一些作用: 通过在insert或create table语句中使用子查询,可以将源表数据插入目标表中. 通过在create view或create materialieed view中使用子查询,可以定义视图或实体化视图所对应的sele…
一.查询加强 1.在mysql中,日期类型可以直接比较,需要注意格式 2.%:表示0到多个字符, _:表示单个字符 exp:显示第二个字符为大写O的所有员工的姓名和工资 select  name from table where name like '_O%'; 3.查询某个字符字段为空 4.查询表结构:DESC table(table表示表名) 例:DESC user 二,分页查询 1.基本语法: 数据分组总结: 如果select语句同时包含有group by ,having , limit.…
原文地址:http://blog.csdn.net/xb12369/article/details/8638683 子查询:   子查询是SQL语句中非常重要的功能特性,它可以在SQL语句中利用另外一条SQL语句的查询结果,在Hibernate中HQL查询同样对子查询功能提供了支持.如下面代码所示: List list=session.createQuery(“from Customer c where 1>(select count(o) from c.orders o)”).list();…
嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select list中,作为一个字段值来返回. 1.单行子查询 :单行子查询是指子查询的返回结果只有一行数据.当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, <, >=, <=, <>)来进行比较. 例:select ename,deptno,salfrom…
五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字段上,将两个字段进行关联.表连接分为内连接(inner join).交叉连接.自连接和外连接等. 1.内连接,语法  inner join table_name on condition ,table_name被关联的表名,condition关联条件. 例如:有两张表,T_Customer保存着客户…
SQL编程之高级查询(子查询)以及注意事项   1.什么是子查询? 当一个查询是另一个查询的条件时,称之为子查询.子查询可以使用几个简单命令构造功能强大的复合命令.子查询最常用于SELECT-SQL命令的WHERE子句中.子查询是一个 SELECT 语句,它嵌套在一个 SELECT.SELECT...INTO 语句.INSERT...INTO 语句.DELETE 语句.或 UPDATE 语句或嵌套在另一子查询中. 语法:select ....from  表1  where  列1  > (子查询…
子查询是SQL语句中非常重要的功能特性,它可以在SQL语句中利用另外一条SQL语句的查询结果,在Hibernate中HQL查询同样对子查询功能提供了支持.   如下面代码所示: List list=session.createQuery("from Customer c where 1<(select count(o) from c.orders o)").list();   上面的程序查询订单数超过1的所有客户,因此和上面子查询HQL语句对应的SQL语句为: Select *…
转自:https://www.cnblogs.com/w-gao/p/7288293.html Oracle表复杂查询 聚合函数 max(字段值)  -- 求最大值 min(字段值)  -- 求最小值 sum(字段值)  -- 求总和 avg(字段值)  -- 求平均值 count(字段值)  -- 求个数 group by 和 having 字句 group by :  用于对查询的结果分组统计 having 子句:用于过滤分组显示的结果   案例: 1.显示每个部门的平均工资和最高工资?  …
sql子查询 嵌套SELECT语句 嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select list中,作为一个字段值来返回. .单行子查询 :单行子查询是指子查询的返回结果只有一行数据.当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=, >, <, >=, <=, <>)来进行比较. 例: select en…