emp

3.记录型变量

守給你的承諾、 提交于 2019-12-30 00:58:11
概念 接受表中的一整行记录,相当于Java中的一个对象 语法:变名称表名%ROWTYPE,例1: v,emp emp%rowtype; ———————————————————————————————————————————— – Created on 2019/10/11 by WANGK –直询emp表中7839号员工的个人信息,打印姓名和薪水 declare –记入类型变量接受一行 v_emp emp%rowtype; begin –查询名字和薪水并赋值给变量 –记录型变量默认接受表中的一行数据,不能指定字段 select * into v_emp from emp where empno = 7839; –打印变量,通过变量名.属性的方式获取变量中的值 dbms_output.put_line(‘姓名:’ || v_emp.empno || ‘,薪资:’ || v_emp.sal); end; ———————————————————————————————————————————— 来源: CSDN 作者: 熊大爱学习 链接: https://blog.csdn.net/weixin_45097166/article/details/103757087

Oracle超详细笔记10--触发器

匆匆过客 提交于 2019-12-27 14:26:28
一、 触发器概述 1.触发器的概念与作用 触发器是一种特殊类型的存储过程,编译后存储在数据库服务器中。 当特定事件发生时,由系统自动调用执行,而不能由应用程序显式地调用执行。 触发器 不接受任何参数 。 触发器主要用于维护那些通过创建表时的声明约束不可能实现的复杂的完整性约束,并对数据库中特定事件进行监控和响应。 2.触发器的类型 DML触发器 建立在基本表上的触发器,响应基本表的INSERT,UPDATE,DELETE操作。 INSTEAD OF触发器 建立在视图上的触发器,响应视图上的INSERT,UPDATE,DELETE操作。 系统触发器 建立在系统或模式上的触发器,响应系统事件和DDL(CREATE,ALTER,DROP)操作。 3.触发器组成 触发器由 触发器头部 和 触发器体 两个部分组成,主要包括: 作用对象 :触发器作用的对象包括表、视图、数据库和模式。 触发事件 :激发触发器执行的事件。如DML、DDL、数据库系统事件等。 触发时间 :用于指定触发器在 触发事件完成之前还是之后 执行。如果 指定为AFTER,则表示先执行触发事件,然后再执行触发器;如果指定为BEFORE,则表示先执行触发器,然后再执行触发事件。 触发级别 :触发级别用于指定触发器响应触发事件的方式。默认为语句级触发器,即触发事件发生后,触发器只执行一次。如果 指定为FOR EACH ROW

SQL实战(四)

吃可爱长大的小学妹 提交于 2019-12-26 08:13:14
一、 题目描述 将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分 CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`)); select last_name||" "||first_name from employees as Name    二、 注意系统默认时间获取方法 这是sql server 和SQLlite 语法区别 1、 create table actor ( actor_id smallint(5) not null primary key, first_name varchar(45) not null, last_name varchar(45) not null, last_update timestamp not null default(datetime('now','localtime')) )

每日两SQL(10),欢迎交流~

限于喜欢 提交于 2019-12-25 23:02:05
题目描述 查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序 CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`)); CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `salary` int(11) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`from_date`)); 部分数据展示 解答 【还没细想,此答案摘自大数据肌肉猿】 SELECT a.emp_no, (a.salary - b.salary) AS growth FROM ( SELECT e.emp_no, s.salary FROM employees e LEFT

Oracle 子查询

血红的双手。 提交于 2019-12-25 02:59:51
子查询可以返回单行结果,可以返回多行结果,也可以不返回结果。 如果子查询未返回任何行,则主查询也不会返回任何结果 (空值)select * from emp where sal > (select sal from emp where empno = 8888); 如果子查询返回单行结果,则为单行子查询,可以在主查 询中对其使用相应的 单行 记录比较运算符 (正常)select * from emp where sal > (select sal from emp where empno = 7566); 如果子查询返回多行结果,则为多行子查询,此时不允许 对其使用单行记录比较运算符 (多值)select * from emp where sal > (select avg(sal) from emp group by deptno);//非法 子查询中常用方法 1。 any即任何一个。如果在where条件中加入>any,意思是大于任何一个,也就是大于最小的 select * from emp t where t.sal> any(select sal from hhgy.emp where deptno=30) 2。 some即一些。和any的用法基本相同。用any的地方都可以用some代替。不过some大多用在=操作中。表示等于所选集合中的任何一个。当然any也可以用于=操作中

MySQL基础篇(01):经典实用查询案例,总结整理

Deadly 提交于 2019-12-25 00:11:55
本文源码: GitHub·点这里 || GitEE·点这里 一、连接查询 图解示意图 1、建表语句 部门和员工关系表: CREATE TABLE `tb_dept` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `deptName` varchar(30) DEFAULT NULL COMMENT '部门名称', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; CREATE TABLE `tb_emp` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `empName` varchar(20) DEFAULT NULL COMMENT '员工名称', `deptId` int(11) DEFAULT '0' COMMENT '部门ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; 2、七种连接查询 图1:左外连接 select t1.*,t2.empName,t2.deptId from tb_dept t1 LEFT JOIN tb_emp t2 on

MySQL基础篇(01):经典实用查询案例,总结整理

时光毁灭记忆、已成空白 提交于 2019-12-24 07:59:17
本文源码: GitHub·点这里 || GitEE·点这里 一、连接查询 图解示意图 1、建表语句 部门和员工关系表: CREATE TABLE `tb_dept` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `deptName` varchar(30) DEFAULT NULL COMMENT '部门名称', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; CREATE TABLE `tb_emp` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `empName` varchar(20) DEFAULT NULL COMMENT '员工名称', `deptId` int(11) DEFAULT '0' COMMENT '部门ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; 2、七种连接查询 图1:左外连接 select t1.*,t2.empName,t2.deptId from tb_dept t1 LEFT JOIN tb_emp t2 on

Oracle使用序列创建自增字段(主键自动增长)

放肆的年华 提交于 2019-12-24 04:08:50
在Oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。    1、Create Sequence   你首先要有create sequence或者create any sequence权限   Sql代码   CREATE SEQUENCE SEQ_EMP   INCREMENT BY 1 -- 每次加几个   START WITH 1 -- 从1开始计数   NOMAXVALUE -- 不设置最大值 (MAXVALUE 99999999)   NOCYCLE -- 一直累加,不循环   CACHE 10; --设置缓存CACHE个序列,如果系统DOWN掉了或者其它情况将会导致序列不连续,也可以设置为NOCACHE   针对SEQ_EMP创建的sequence如下:   Sql代码   CREATE SEQUENCE SEQ_EMP   MINVALUE 1   MAXVALUE 99999999   START WITH 1   INCREMENT BY 1   NOCACHE;   一旦定义了SEQ_EMP,你就可以用currval,nextval   currval=返回 sequence的当前值   nextval=增加sequence的值,然后返回 sequence 值   比如:   SEQ_EMP.CURRVAL

多表查询

纵饮孤独 提交于 2019-12-24 02:52:58
概念 要查询的数据分布在多张表中(分布咋一张表,数据太多会造成冗余,而且分布在多张表有利于增删改查)。 语法 (1)如果这样:from 表1,表2;——这样会产生笛卡尔积 ****s_dept——系统自带的部门表 里面有三项信息:ID NAME REGION_ID select * from s_dept; ****s_region——系统自带的地区表 里面有两项信息:ID NAME select * from s_region; 演示:列出部门的 id name 以及部门的地区信息(要名称不要 id) select id, name, region_id from s_dept, s_region;    两张表里有同名的字段,会出现混淆 再加上表名代表信息来源于哪个表,这样就会 出现笛卡尔积 select s_dept, id, s_dept, name, region_id, s_region, name from s_dept, s_region 输出了60条数据,本来不可能有这么多数据的,这说明产生了笛卡尔积。 这时应该使用连接条件,避免笛卡尔积: select s_dept.id,s_dept.nam,region_id,s_region.name from s_dept,s_region where region_id=s_region.id/*连接条件*/ ;

1、JDK新语法 之 Lambda表达式

别等时光非礼了梦想. 提交于 2019-12-23 12:35:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近JDK13都出来了,所以想沉下心来,总结一下JDK的一系列新语法。这个模块将抽空慢慢填充完整。 这一章就先写下Lambda表达式吧。下面我会以代码的形式进行表达 一、Lambda表达式语法 /** * 一、函数式接口:即接口类中只有一个方法,如compareInterface * 二、lambda表达式的基础语法:引入了一个新的操作符 "->" * 箭头左侧: 参数列表--即函数式接口方法中的参数列表 * 箭头右侧: 执行方法--即函数式接口方法中的实现方法 * * 三、语法格式: * 1、 无参函数--无返回值 * ()->System.out.println("Hello Lambda"); * 2、 一个参数--无返回值 * (e)->System.out.println("hello Lambda2"); * 或 * e->System.out.println("hello Lambda2"); * 3、 两个参数--一个返回值,一条语句 * (e1,e2)-> return e1-e2; * 或 * (e1,e2)-> e1-e2; //return 和 {} 都可以省略不写 * * 两个参数--一个返回值,多条语句 * (e1,e2)->{ * System.out.println("hello