emp

oracle学习笔记10:游标

一曲冷凌霜 提交于 2019-12-23 05:30:53
1.什么是游标 在oracle中执行select、update、insert、delete等操作时,oracle会在内存中为其分配上下文,即开辟一小块数据缓冲区,用于将查询到的结果集缓存起来。游标就是指向这个缓冲区的指针,便于进行逐行定位处理。游标使用完成后要及时关闭。 2.游标的分类    显式游标 :显示游标指定游标的名字,调用方式:游标名+属性    隐式游标: 没有名字,执行select、update、delete、insert操作时,会自动触发隐士游标,调用方式:sql+属性 3.游标的属性    游标名%found    判断游标中是否读到数据   游标名%notfound  判断游标中是否没有读到数据   游标名%isopen   判断游标是否打开   游标名%rowcount  获取游标中实际读取的行的数量 游标处理数据的效率较低,非必要情况,不建议使用 显示游标: 1.创建游标 declare --1. 定义游标 -- cursor 游标名 is 查询命令 cursor cur_emp is select empno,ename,job from emp where empno=7369; row1 emp.empno%type; row2 emp.ename%type; row3 emp.job%type; begin --2. 打开游标 open 游标名

informatica同构与异构

随声附和 提交于 2019-12-23 04:09:18
目录 1.同构需求 1.1 将emp表和dept表进行内连接 1.2 将emp表和dept表进行右连接 2.异构需求 2.1 使用oracle的emp表和mysql的dept表进行连接 3.同构与异构总结 1.同构需求 1.1 将emp表和dept表进行内连接 要实现的结果: 1.导入源表:emp表和dept表。 2.定义目标表:将emp表重命名,加入2个dept的字段,生成sql语句,在edw用户下创建表。 3.创建映射: 删除原本连着各自源表的源限定符,新建一个源限定符同时选择两张源表。 设置属性为两张表的deptno相等。 在端口我们只保留emp的deptno字段,删除dept的deptno字段,保存映射。 4.创建任务和工作流,保存,执行,查看结果。 1.2 将emp表和dept表进行右连接 要实现的效果: 我们可以在映射中的源限定符的属性中定义sql语句。 端口的字段顺序要和定义的sql语句的查询字段的顺序一致。 保存映射,重新执行工作流。 但是最终只返回14条数据,我们希望的是右连接返回所有20条数据,查看错误说无法将null写入到empno字段。 原因是我们的源表emp和dept设置了empno为主键,所以需要先删除主键标志。 目标表查看deptno在非空上也打勾了,需要去掉这个勾,然后重新执行sql语句,在edw用户下重新创建表格。 重新刷新映射

sequelize 学习之路

人走茶凉 提交于 2019-12-23 02:08:27
如果你觉得 Sequelize 的文档有点多、杂,不方便看,可以看看这篇。 在使用 NodeJS 来关系型操作数据库时,为了方便,通常都会选择一个合适的 ORM (Object Relationship Model)框架。毕竟直接操作 SQL 比较繁琐,通过 ORM 框架,我们可以使用面向对象的方式来操作表。 NodeJS 社区有很多的 ORM 框架,我比较喜欢 Sequelize ,它功能丰富,可以非常方便的进行连表查询。 这篇文章我们就来看看, Sequelize 是如何在 SQL 之上进行抽象、封装,从而提高开发效率的。 安装 这篇文章主要使用 MySQL 、 Sequelize 、 co 来进行介绍。安装非常简单: $ npm install --save co $ npm install --save sequelize $ npm install --save mysql 代码模板如下: var Sequelize = require('sequelize'); var co = require('co'); co(function* () { // code here }).catch(function(e) { console.log(e); }); 基本上, Sequelize 的操作都会返回一个 Promise ,在 co 的框架里面可以直接进行 yield

Oracle复杂查询

吃可爱长大的小学妹 提交于 2019-12-23 00:13:47
1:列出所有员工的姓名,部门名称,和工资 select a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno = a2.deptno; 2:列出所有部门的详细信息和部门人数 select a2.deptno,a2.dname,a2.loc,count(a1.empno) from emp a1,dept a2 where a1.deptno(+) = a2.deptno group by a2.deptno,a2.dname,a2.loc; 3:列出所有员工的年工资,所在部门名称,按年薪升序排列 select a1.sal*12 ,a2.dname from emp a1,dept a2 where a1.deptno = a2.deptno order by a1.sal*12; 4:查出每个员工的上级主管及所在部门名称,并要求这些主管的薪水超过3000 select employee.ename,boss.ename ,a1.dname from emp employee,emp boss,dept a1 where employee.mgr = boss.empno and boss.deptno = a1.deptno and boss.sal >3000; 5:求出部门名称中带’S

Oracle 多表连接

时光总嘲笑我的痴心妄想 提交于 2019-12-22 18:25:52
两个表的笛卡尔积运算 这种运算没有意义可言。 DEPTNO DNAME LOC ENAME SAL ---------- -------------- ------------- ---------- ---------- 40 OPERATIONS BOSTON FORD 3000 40 OPERATIONS BOSTON MILLER 2900 已选择 52 行。 自然连接(自动查找连接条件) SQL > select * from emp natural join dept ; DEPTNO EMPNO ENAME JOB MGR HIREDATE SAL COMM DNAME LOC ---------- ---------- ---------- --------- ---------- -------------- ---------- ---------- -------------- ------------- 30 7499 ALLEN SALESMAN 7698 20 - 2 月 - 81 1604.5 300 SALES CHICAGO 30 7521 WARD SALESMAN 7698 22 - 2 月 - 81 3000 500 SALES CHICAGO 20 7566 JONES MANAGER 7839 02 - 4 月 - 81 2975

count(1),count(*),count(字段),explain 分析

久未见 提交于 2019-12-22 17:00:38
预先准备 有主键有索引的表 emp id 是主键, name 是普通索引,可为NULL dep_id 普通字段 DROP TABLE IF EXISTS `emp`; CREATE TABLE `emp` ( `id` int(11) NOT NULL, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `dep_id` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, INDEX `idx_name`(`name`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of emp -- ---------------------------- INSERT INTO `emp` VALUES (1, 'z3', 1); INSERT INTO `emp` VALUES (2, 'w3', 2); INSERT INTO `emp` VALUES (3, 'w4', 2);

SQL Fundamentals || Oracle SQL语言

丶灬走出姿态 提交于 2019-12-22 00:02:00
SQL Fundamentals || Oracle SQL语言 子查询(基础) 1、认识子查询 2、WHERE子句中使用子查询 3、在HAVING子句中使用子查询 4、在FROM子句中使用子查询 5、在SELECT子句中使用子查询 6、WITH子句 子查询(进阶) 7、分析函数 8、行列转换 9、设置数据层次 一、认识子查询 子查询就是指的在一个完整的查询语句之中, 嵌套若干个不同功能的小查询 ,从而一起完成 复杂查询(复杂查询 = 限定查询 + 多表查询 + 统计查询 + 子查询) 的一种编写形式,为了让读者更加清楚子查询的概念。 一个查询语句内部可以定义多个子查询; 子查询一般在 WHERE 、 FROM 、 HAVING 子句之中出现较多,也可以在 SELECT 子句中出现 . 例子 1 、查询公司中工资最低的雇员的完整信息 分析: 1. 查询最低工资: SELECT MIN(sal) FROM emp; 2. 查询等于最低工资的雇员的信息: SELECT * FROM emp WHERE sal=( SELECT MIN(sal) FROM emp;); 子查询可以返回 的结果数据类型 一共分为四种: 单行单列 返回的是 一个具体列 的内容,可以理解为一个 单值数据 ; 单行多列 返回一行数据中 多个列的内容 ; 多行单列 返回多行记录之中 同一列的内容

SQL 复习二(数据查询语言)

帅比萌擦擦* 提交于 2019-12-21 16:45:11
1.1 数据查询语言 DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。 语法: SELECT selection_list /*要查询的列名称*/ FROM table_list /*要查询的表名称*/ WHERE condition /*行条件*/ GROUP BY grouping_columns /*对结果分组*/ HAVING condition /*分组后的行条件*/ ORDER BY sorting_columns /*对结果分组*/ LIMIT offset_start, row_count /*结果限定*/ 1.基础查询 1.1 查询所有列 select * from stu; 1.2 查询指定列 select sid,sname form stu; 2.条件查询 2.1 条件查询介绍 条件查询就是在查询时给出where字句,在where字句中限定条件: =,!=,<>,<,<=,>,>=; beteween……and…… in(set) is null; and; or; not; 2.2 查询性别为女,并且年龄50的记录  select * from stu where gender=‘female’ and age>50; 2.3 查询学号为S_1001,或者姓名为liSi的记录 slect * from stu

Python版,员工管理系统

跟風遠走 提交于 2019-12-21 13:27:34
员工管理系统 python有多强大呢,以前用java写一个至少500行代码,现在用python直接不到100行代码就实现了全部功能 """ 需求:员工管理系统 功能: 1.添加员工信息 2.删除员工信息 3.修改员工信息 4.查看单个员工信息 5.查看所有员工信息 6.退出 技术:函数、数据类型(字典列表)、循环、条件语句 """ emps = [ ] # 2.搭建业务框架 def show_menu ( ) : """显示系统菜单""" print ( '1.Add Employee Message' ) print ( '2.Update Employee Message' ) print ( '3.Delete Employee Message' ) print ( '4.Query Single Employee Message' ) print ( '5.Query All Employee Message' ) print ( '6.Exit System' ) # add employee function """ Please note that:if id is exist? """ def add_employee ( ) : index = 1 id = input ( "Input the employee's number,please:" ) name

ORACLE SEQUENCE 介绍

蹲街弑〆低调 提交于 2019-12-21 07:30:42
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限, CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10; 一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL CURRVAL=返回 sequence的当前值 NEXTVAL=增加sequence的值,然后返回 sequence 值 比如: emp_sequence.CURRVAL emp_sequence.NEXTVAL 可以使用sequence的地方: - 不包含子查询、snapshot、VIEW的 SELECT 语句 - INSERT语句的子查询中 - NSERT语句的VALUES中 - UPDATE 的 SET中 可以看如下例子: INSERT INTO emp VALUES (empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20); SELECT