emp

oracle求表的倒数二行数据

匿名 (未验证) 提交于 2019-12-02 23:57:01
转自 http://www.itpub.net/thread-1854111-4-1.html 我选出的最佳方法有两个: 1.利用rownum select * from (select t.*,rownum rn from (select * from emp e order by empno) t) where rn=2; 至于为何有多套了一层select,是因为emp这个表很特殊,数据是按empno排列的,以上这个写法可适用于所有无序表。 2.利用分析函数 更详细结果见我的博客 http://pandarabbit.blog.163.com/ ... 841442014344567267/ 来源:博客园 作者: 小党先生 链接:https://www.cnblogs.com/xiaodangxiansheng/p/11457267.html

Oracle-ocp-051

匿名 (未验证) 提交于 2019-12-02 23:57:01
查看Oracle用户可以使用那些表数据字典表(管理用户所有表) desc user_tables ;(查看可以操作的表) select tables_name from user_tables ;( SCOTT 用户可以使用四个表) 字符类型都是左对齐,数字类型的都是右对齐 空值是不可用的、未分配的、未知的或不使用的值空值不同于零或空格 设置显示行间距 set linesize 200 ;宽度为 200 set pagesize 50 ;每页现实 50 行 create table test ( hiredate varchar ( 20 ));创建表 查看当前用户可以使用的表 select table_name from user_tables ; 标题的默认设置 字符和日期列标题的对齐方式为:左对齐 数字列标题的对齐方式:右对齐 默认的标题显示方式:大写 空值不等同于零或者空格 空值带入四则运算仍然还是空值 定义别名 列别名具有以下特征 可重命名标题、有助于计算、紧跟在列名后(列名和别名之间也可以加上可选关键词 AS )如果别名包括空格或特殊字符、或者区分大小写则需要双引号 链接字符串 select ename || job from emp ; 把两个列名合并一块显示出来 重复行 select distinct deptno from emp ; distinct (去重)

plsql 带参数的游标

匿名 (未验证) 提交于 2019-12-02 23:51:01
-- 带参数的游标 -- cursor c(no emp.deptno%type) is select * from emp where deptno=no; 参数的起名 不要和表中的列名相同! -- row1 emp%rowtype; -- 根据部门编号 得到emp中的所有信息? declare cursor c(no emp.deptno%type)is select * from emp where deptno=no; row1 emp%rowtype; begin open c (10); -- 输入参数 loop fetch c into row1; exit when c%notfound; -- 条件放在输出语句上面 先判读在执行! dbms_output.put_line( 'cursor index orderby ASC=='||c%rowcount|| '----name=='||row1.ename|| '----job=='||row1.job|| '----sal=='||row1.sal ); end loop; close c; end;

子查询

匿名 (未验证) 提交于 2019-12-02 23:49:02
select * from emp; --查询薪水比allen高的员工信息 -- (1)查询allen的薪水 select sal from emp where ename='ALLEN'; -- (2)查询比薪水高于1600的员工信息 select * from emp where sal>1600; --总结 select * from emp where sal >(select sal from emp where ename='ALLEN'); --案例: oracle支持,mysql不支持 select deptno,count(*)as num ,avg(sal) as avgsal from emp where deptno is not null select d.deptno,dname,num,avgsal from dept d, where d.deptno=t.deptno --查询本部门最高工资的员工 --(2)查询20号最门的员工的最高工资 --(3)查询300号最门的员工的最高工资 --相关子查询 select * from emp e1 where sal=(select max(sal) from emp e2 where e1.deptno=e2.deptno); 查询本部门工资高于平均工资的那些员工 select * from emp

SQL优化之子查询-IN和EXISTS哪个快点

匿名 (未验证) 提交于 2019-12-02 23:43:01
对SQL优化,有一定理解的人都会知道,SQL优化的核心是减少物理IO的次数,说的通俗点,我们要尽量减少表的扫描次数,这里的表主要是大表。 今天说的子查询,我们可以理解为SQL包含IN, NOT IN, EXISTS, NOT EXISTS的语句, 以前经常有人会问IN和EXISTS到底怎么选,也有说EXISTS的性能更好,或者根据内表和外表的数据量来选择IN和EXISTS,其实在我看来,这些比较片面。哪个好,我们还是要看执行计划和执行时间。 当SQL中含有IN, NOT IN, EXISTS, NOT EXISTS的时候,优化器会尝试改写,为什么要改写呢? 因为这些东西会导致一种叫Filter的东西,是不是很熟悉,前面的文章写到过哦,不知道的可以翻翻我前面的文章。 下面看看例子: SQL> explain plan for select EMPNO,ENAME from emp where exists (select DEPTNO from dept where emp.DEPTNO = dept.DEPTNO and dept.loc = ‘BOSTON’ union all select DEPTNO from dept where emp.DEPTNO = dept.DEPTNO and dept.loc = ‘DALLAS’ ); 2 3 4 5 6 7 8 9 10

HBase 与 Hive

匿名 (未验证) 提交于 2019-12-02 23:42:01
1. HBase Hive 的对比 1. Hive   Hive HDFS Mysql 中做了一个双射关系,以 方便使用HQL 去管理查询。 Hive 适用于离线的数据分析和清洗,延迟较高。 Hive 存储的数据依旧在DataNode 上,编写的HQL 语句终将是转换为MapReduce 代码执行。 是一种面向列存储的非关系型数据库。 适用于单表非关系型数据的存储,不适合做关联查询,类似JOIN 等操作。 数据持久化存储的体现形式是Hfile DataNode ResionServer region 的形式进行管理。 面对大量的企业数据,HBase 可以直线单表大量数据的存储,同时提供了高效的数据访问速度。 HBase Hive 集成使用 尖叫提示:HBase 环境准备 Hive HBase Hive 需要持有操作 export HBASE_HOME=/opt/module/hbase export HIVE_HOME=/opt/module/hive ln -s $HBASE_HOME/lib/hbase-common-1.3.1.jar $HIVE_HOME/lib/hbase-common-1.3.1.jar ln -s $HBASE_HOME/lib/hbase-server-1.3.1.jar $HIVE_HOME/lib/hbase-server-1.3.1.jar

SQL触发器及视图

匿名 (未验证) 提交于 2019-12-02 23:42:01
版权声明:【北京Java青年】:456588754 https://blog.csdn.net/Amen_Wu/article/details/53457564 触发器:当emp表一条记录被删时,把被删记录写到日指表 Create table del_emp as select * from emp where 1=2; Select * from emp; Create or replace trigger tr_del_emp Before delete On emp For each Row When (old.deptno<>10) Begin Insert into ; 触发器类型: 模式触发器(DDL):模式中DDL语句; 数据库级触发器:开、关、登、退数据库系统事件时执行; DML触发器:行级、语句级、instead of(视图)触发器。 触发器的三个部分: 1. 触发器语句(事件):定义激活触发器的DML事件、DDL事件 Before delete On emp For each row 2. 触发器限制:执行触发器条件,条件为真时才激活触发器 When (old.dept<>10) 触发器操作(主体):包含一些SQL语句、代码,在触发语句发出且触发条件为真时运行。 Begin Insert into del_emp(deptno,empno,… …) //

Spark学习之路(十一)―― Spark SQL 聚合函数 Aggregations

匿名 (未验证) 提交于 2019-12-02 23:38:02
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37809146/article/details/91282135 一、简单聚合 1.1 数据准备 // 需要导入spark sql内置的函数包 import org.apache.spark.sql.functions._ val spark = SparkSession.builder().appName("aggregations").master("local[2]").getOrCreate() val empDF = spark.read.json("/usr/file/json/emp.json") // 注册为临时视图,用于后面演示SQL查询 empDF.createOrReplaceTempView("emp") empDF.show() 注:emp.json可以从本仓库的 resources 目录下载。 1.2 count // 计算员工人数 empDF.select(count("ename")).show() 1.3 countDistinct // 计算姓名不重复的员工人数 empDF.select(countDistinct("deptno")).show() 1.4 approx_count_distinct 通常在使用大型数据集时

Oracle 关联查询

匿名 (未验证) 提交于 2019-12-02 23:36:01
版权声明:分享是一种品质,开源是一种精神。 https://blog.csdn.net/wangmx1993328/article/details/90664207 Ŀ¼ 笛卡尔积 隐式内连接 显式内连接 左/右外连接 子查询 exists 查询 rownum 行号 union 并集运算 minus 差集运算 集合运算注意事项 笛卡尔积 1、两张表数据的乘积,实际基本用不上,只是助于理解。 select * from emp;--查询所有员工 select * from dept;--查询所有部门 select * from emp,dept;--多表查询,没加 where 条件,此时就是笛卡尔积 隐式内连接 1、在笛卡尔积的基础上加上 where 条件后就是隐式内连接。(比较常用的操作) select * from emp;--查询所有员工 select * from dept;--查询所有部门 --笛卡尔积加上 where 条件就是隐式内连接。查询员工及其所在的部门信息 select * from emp,dept where emp.deptno = dept.deptno; --查询员工姓名及其所在部门的位置 select e1.ename,d1.loc from emp e1,dept d1 where e1.deptno = d1.deptno; 显式内连接 1

数据共享与整合技术-PLSQL练习

匿名 (未验证) 提交于 2019-12-02 23:36:01
1、编写一个存储过程,根据输入的工作类型,输出该工作的平均工资。 命令如下: 创建存储过程: create or replace procedure avgsal(v_job in emp.job%type) is avgsal2 number begin select avg(sal) into avgsal2 from emp where job=v_job; dbms_output.put_line(v_job || '---' || avgsal2) end; 调用存储过程: Begin avgsal('MANAGER'); end; 程序截图: 运行结果: 2、创建一个存储过程,以员工号为参数,输出该员工的工资。 命令如下: 创建存储过程: create or replace procedure p_sxtl(v_empno in emp.empno%type,v_sal out emp.sal%type) is begin select sal into v_sal from emp where empno=v_empno; end; 调用存储过程: declare v_empno emp.empno%type :=7369; v_sal emp.sal%type; begin p_sxtl(v_empno,v_sal); dbms_output.put_line(v