sal

PL/SQL程序设计

陌路散爱 提交于 2019-12-20 22:53:51
第一章:PL/SQL概述: 什么是PL/SQL: A。PL/SQL是 Procedure Language & Structured Query Language 的缩写。PL/SQL是对SQL语言存储过程语言的扩展。从ORACLE6以后,ORACLE的RDBMS附带了PL/SQL。它现在已经成为一种过程处理语言,简称PL/SQL。目前的 PL/SQL包括两部分 ,一部分是数据库引擎部分;另一部分是可嵌入到许多产品(如C语言,JAVA语言等)工具中的独立引擎。可以将这两部分称为: 数据库PL/SQL和工具PL/SQL 。两者的编程非常相似。都具有编程结构、语法和逻辑机制。 B。PL /SQL是一种高级数据库程序设计语言,该语言 专门用于在各种环境下对ORACLE数据库进行访问 。由于该语言集成于数据库服务器中 ,所以PL/SQL代码可以对数据进行快速高效的处理。 PL/SQL的好处: A。有利于客户/服务器环境应用的运行 对于客户/服务器环境来说,真正的瓶颈是网络上。无论网络多快,只要客户端与服务器进行大量的数据交换。应用运行的效率自然就回受到影响。如果使用PL/SQL进行编程,将这种具有大量数据处理的应用放在服务器端来执行。自然就 省去了数据在网上的传输时间 。 B。适合于客户环境 PL/SQL由于分为数据库PL/SQL部分和工具PL/SQL。对于客户端来说,PL

关于 SQL语句

浪子不回头ぞ 提交于 2019-12-20 06:51:19
数据库相关的SQL 查看所有数据库 show databases; 创建数据库 格式:create database 数据库名称; create database db1; 删除 格式:drop database 数据库名称; 查看数据库详情 格式:show create database 数据库名称; show create database db1; 创建数据库指定字符集 格式:create database 数据库名称 character set utf8/gbk; create database db2 character set gbk; 使用数据库 格式: use 数据库名称 use db1; 表相关SQL 创建表 create table t1(name varchar(10),age int) engine=myisam/innodb charset=gbk/utf8; 查询所有表 show tables; 查询表详情 show create table t1; 查看表字段 desc t1; 修改表名 rename table t1 to t2; 修改表引擎字符集 alter table t1 engine=myisam/innodb charset=gbk/utf8; 添加表字段 alter table t1 add age int first/after xxx

oracle基础琐碎总结-----Where和Having的区别与联系

旧街凉风 提交于 2019-12-20 03:30:45
Where和Having都是对查询结果的一种筛选,说的书面点就是设定条件的语句。下面分别说明其用法和异同点。注:本文使用字段为oracle数据库中默认用户scott下面的emp表,sal代表员工工资,deptno代表部门编号。 一、聚合函数 说明前我们先了解下聚合函数:聚合函数有时候也叫统计函数,它们的作用通常是对一组数据的统计,比如说求最大值,最小值,总数,平均值( MAX,MIN,COUNT, AVG)等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。简单举个例子:SELECT SUM(sal) FROM emp,这里的SUM作用是统计emp表中sal(工资)字段的总和,结果就是该查询只返回一个结果,即工资总和。通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。 二、where子句 where自居仅仅用于从from子句中返回的值,from子句返回的每一行数据都会用where子句中的条件进行判断筛选。where子句中允许使用比较运算符(>,<,>=,<=,<>,!=|等)和逻辑运算符(and,or,not)。由于大家对where子句都比较熟悉,在此不在赘述。 三、having子句 having子句通常是与order by 子句一起使用的。因为having的作用是对使用group by进行分组统计后的结果进行进一步的筛选

在oracle中where 子句和having子句中的区别

北战南征 提交于 2019-12-19 23:33:29
1.where 不能放在GROUP BY 后面 2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE 3.WHERE 后面的条件中不能有聚集函数,比如SUM(),AVG()等,而HAVING 可以 Where和Having都是对查询结果的一种筛选,说的书面点就是设定条件的语句。下面分别说明其用法和异同点。注:本文使用字段为oracle数据库中默认用户scott下面的emp表,sal代表员工工资,deptno代表部门编号。一、聚合函数 说明前我们先了解下聚合函数:聚合函数有时候也叫统计函数,它们的作用通常是对一组数据的统计,比如说求最大值,最小值,总数,平均值(MAX,MIN,COUNT, AVG)等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。简单举个例子:SELECT SUM(sal) FROM emp,这里的SUM作用是统计emp表中sal(工资)字段的总和,结果就是该查询只返回一个结果,即工资总和。通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。二、where子句 where自居仅仅用于从from子句中返回的值,from子句返回的每一行数据都会用where子句中的条件进行判断筛选。where子句中允许使用比较运算符(>,<,>=,<=,<>,!=|等

pl/sql学习(4): 包package

梦想的初衷 提交于 2019-12-19 18:52:59
本文简单介绍包, 目前来看我用的不多, 除了之前 为了实现 一个procedure 的输出参数是结果集的时候用到过 package. 概念: 包是一组相关过程、函数、变量、常量和游标等PL/SQL程序设计元素的组合。 特点: 它具有面向对象程序设计语言的特点,是对PL/SQL程序设计元素(过程、函数、变量等)的封装。它使程序设计模块化。 包中的程序元素分为两种:公用元素(公用组件)、私用元素(私用组件). 组成: 一个包由两个分开的部分组成 (1) 包规范(包定义):用于定义包的公用组件,包括常量、变量、游标、过程和函数等。 (2) 包体(包主体):用于实现包规范所定义的公用过程和函数。 包体不仅可用于实现公用过程和函数,而且还可以定义包的私有组件(变量、游标、过程、函数等) 创建包规范 语法 CREATE [OR REPLACE] PACKAGE package_name IS | AS -- 定义公用常量、变量、游标、过程、函数等 END [package_name]; 实例1: CREATE OR REPLACE PACKAGE emp_package IS --添加员工信息的存储过程 PROCEDURE add_emp_proc (v_empno IN emp.empno%TYPE, v_ename IN emp.ename%TYPE, v_sal IN emp.sal

PL/SQL --> 存储过程

◇◆丶佛笑我妖孽 提交于 2019-12-18 01:15:37
--===================== -- PL/SQL --> 存储过程 --===================== 存储过程子程序的一种类型,能够完成一些任务,作为 schema 对象存储于数据库。是一个有名字的 PL / SQL 代码块,支持接收或不接受参数 ,同时也支持参数输出。一个存储过程通常包含定于部分,执行部分, Exception 部分,可以被其他子程序调用,也可以被重用。 一、过程定义 CREATE [ OR REPLACE ] PROCEDURE procedure_name [(argument_name [IN | OUT | IN OUT] argument_type ) ] AS | IS BEGIN procedure_body ; END [procedure_name] ; 存储过程中参数的类型 IN :表示是一个输入参数,可以指定缺省值。如省略参数类型,则缺省为 in 类型 OUT :表示是一个输出参数 IN OUT :既可以作为一个输入参数,也可以作为一个输出参数来输出结果 二、过程调用 EXECUTE | CALL procedure_name [(argument_list)] -- 例:定义一个过程,以 JOB 为参数,查询该 JOB 的最高工资、最低工资、平均工资。 CREATE OR REPLACE PROCEDURE

MySQL之多表查询3

有些话、适合烂在心里 提交于 2019-12-17 20:27:07
1.列出至少有四位员工的所有部门信息 1 . 查询每个部门的人数 select deptno , count ( * ) from emp group by deptno 2 . 至少有四位 select deptno , count ( * ) from emp group by deptno having count ( * ) > 4 3 . 部门信息 select d . * , dd . cou from dept d , ( select deptno , count ( * ) cou from emp group by deptno having count ( * ) > 4 ) dd where d . deptno = dd . deptno 2.列出薪金比“SMITH”多的员工信息 1 . 查询“SMITH”的薪金 select sal from emp where ename = 'smith' 2 . 查询比子查询结果工资高的雇员信息 select * from emp where sal > ( select sal from emp where ename = 'smith' ) 3.列出所有员工的姓名及其直接上级的姓名。没有领导的雇员也列出 select e . ename , m . ename from emp e left join emp

Oracle教程-查询(二)

元气小坏坏 提交于 2019-12-17 08:47:41
emp 雇员表 字段名称 数据类型 是否为空 备注 -------- ----------- -------- -------- EMPNO NUMBER(4) 员工编号 ENAME VARCHAR2(10) Y 员工名称 JOB VARCHAR2(9) Y 职位 MGR NUMBER(4) Y 上级的编号 HIREDATE DATE Y 入职日期 SAL NUMBER(7,2) Y 月工资 COMM NUMBER(7,2) Y 奖金 DEPTNO NUMBER(2) Y 所属部门 ------------------------------------------- job字段: clerk 普员工 salesman 销售 manager 经理 analyst 分析师 president 总裁 dept 部门表 字段名称 数据类型 是否为空 备注 -------- ----------- -------- -------- DEPTNO NUMBER(2) 部门编号 DNAME VARCHAR2(14) Y 部门名称 LOC VARCHAR2(13) Y 部门所在地点 ------------------------------------------- DNAME字段: accounting 财务部 research 研发部 operations 业务部 salgrade

mysql 求最小值/最大值

孤者浪人 提交于 2019-12-13 20:11:14
计算所有人最低工资和最高工资,需分别用到min()和max()函数。(请注意,MIN和MAX函数会忽略NULL值) 1 select min(sal) as min_sal , max(sal) as max_sal from emp;   结果: 1 2 3 4 5 6 ±--------±--------+ | min_sal | max_sal | ±--------±--------+ | 880 | 5000 | ±--------±--------+ 1 row in set   搜索每个部门的最低工资和最高工资,还可以使用group by 1 select deptno,min(sal) as min_sal , max(sal) as max_sal from emp group by deptno; 来源: CSDN 作者: dxyzhbb 链接: https://blog.csdn.net/dxyzhbb/article/details/103530503

数据库SELECT查询

半腔热情 提交于 2019-12-11 21:02:58
主要内容: 一.单行函数 二.组函数 三.分组 四.rowid和rownum 单行函数 根据函数的返回结果,我们将函数分为单行函数和多行函数 1、单行函数:一条记录返回一个结果 2、多行函数 组函数 聚合函数 (重点) :多条记录 返回一个结果 (重点) 1.日期函数 日期函数: 注意区分 db数据库时间 ,java应用服务器的时间。以一方为准 oracle以内部数字格式存储日期:年,月,日,小时,分钟,秒 sysdate/current_date 以date类型返回当前的日期 add_months(d,x) 返回加上x月后的日期d的值 LAST_DAY(d) 返回的所在月份的最后一天 months_between(date1,date2) 返回date1和date2之间月的数目 next_day(sysdate,‘星期一’) 下周星期一 1)当前时间 select current_date from dual where 1 = 1; select sysdate from dual where 1 = 1; 2)修改日期(天数±) –两天后的时刻 select sysdate+2 from dual; 3)修改月份 –当前5个月后的时间 select add_months(sysdate,5) from dual; –雇佣日期 2个月的时间 select ename