oracle上课 学习2 oracle 游标 存储过程 有用
1.1. 训练描述
使用游标,打印emp中20号部门的所有员工的信息
操作步骤答案
declare
cursor c_emp is select * from emp where deptno=10;
v_row emp%rowtype;
begin
open c_emp;
loop
fetch c_emp into v_row;
exit when c_emp%notfound;
dbms_output.put_line(v_row.empno||':'||v_row.ename);
end loop;
close c_emp;
end;
1.2. 训练描述
弹出框中输入一个年龄数据,如果数值大于150,抛自定义的异常,显示一句话“此人年纪太大”
操作步骤答案
declare
v_age number:=&nums;
v_exception exception; --自定义异常 v_exception
begin
if v_age>150 then
--抛异常
raise v_exception;
end if;
exception
when v_exception then
dbms_output.put_line('此人年纪太大');
end;
1.3. 训练描述
创建一个带out参数的存储过程 ,计算指定员工的年薪,并且用7788号员工测试
操作步骤
- 创建存储过程pro_yearsal
- 使用存储过程。
操作步骤答案
- 创建存储过程pro_yearsal
create or replace procedure pro_emp_sal(v_no number,v_year_sal out number)
is
begin
select sal*12+ nvl(comm,0) into v_year_sal from emp where empno=v_no;
end;
- 使用存储过程。
declare
v_sal number(8,2);
begin
pro_emp_sal(7369,v_sal);
dbms_output.put_line(v_sal);
end;
简述一下表空间、用户、表之间的关系?
一个表空间相当于mysql的一个数据库的概念,oracle是分配表空间,而mysql是新建数据库,表的数据,是由用户放入某一个表空间的某个表里,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。
由于 oracle 的数据库不是普通的概念,oracle 是由用户和表空间对数据进行管理和存放的。但是表不是由表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表,而是通过不同的用户来进行区分。
一个oracle数据库系统可以创建多个数据库,每个数据库称为实例,在实例里可以分配多个表空间,每个表空间里可以创建多个数据表,而每个表空间里的表数据都存储在一个数据文件里,要查询表空间里的表数据就需要在本实例下给表空间指定个用户,由用户来访问表空间里的表。
4. 视图
4.1. 简述什么是视图
视图是一个虚拟的表,不存放数据,数据来源是原始的表
视图可以使复杂sql查询简单化,每一个视图包装了一条条复杂的SQL语句
4.2. 创建视图
create view 视图名称 as select 语句
例如:create view view_emp20 as select empno,ename,job,mgr,hiredate from emp where deptno=20;
4.3. 使用视图
select * from 视图名
不可以修改视图里的表数据,因为它不是个真实的实体表,如果改了数据会乱数据,导致不一致,我们创建视图时指定为指读视图
create view view_emp20 as select empno,ename,job,mgr,hiredate from emp where deptno=20 with read only;
5. 序列
5.1. 简述什么序列
在许多的数据表之中都存在一种称为自动增长列的操作,但是在Oracle之中,没有这种自动增长列,是需要用户手工的控制,这样做主要是为了开发方便,序列是oracle数据库提供的用于实现id自增长功能。
5.2. 创建一个序列
语法:
CREATE SEQUENCE sequence
[INCREMENT BY n] --每次增长n
[START WITH n] --初始值,从n开始
例如:create sequence person_sqc;
序列创建完成后,它的自动增长需要用户手动触发
nextval:取得序列的下一个内容
currval:取得序列的当前值
5.3.序列的使用
Insert into person values(person_sqc.nextval, “zhangsan”,1.null,”修正”)
6. 索引
6.1. 简述索引
索引是用于加速数据存取的数据对象,索引可以看做一本书的目录,通过目录可以很快的找到需要的内容。数据库里的索引就是为了提升查询速度(数据量大的情况下)。
6.2.创建单行索引
create index 索引名称 on 表名(列)
6.3. 创建复杂索引
create index 索引名称 on 表名(列,列)
6.4. 索引的测试
在员工表中插入500万的数据,
declare
begin
for i in 1..5000000 loop
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (emp_seq.nextval, emp_seq.currval, 'CLERK', 7902, sysdate,
dbms_random.value(800,3000) , null, 10);
end loop;
commit;
end;
查询工资等于1500的所有员工信息
没有索引的情况下我们查询:
select * from emp where sal=1500;
在查询条件工资字段建立索引
create index emp_sal_index on emp(sal);
在有索引的情况下进行查询:
Select * from emp where sal = 1500;
oracle上课 学习2 oracle 游标 存储过程 有用的更多相关文章
- Oracle上课学习笔记<1>
简单的select查询语句 1.select查询语句基本语法 使用两个关键字: select 指定要查询的字段和内容 from 从哪张表中查询 语法:select 字段名 from 表名; 三种不同的 ...
- oracle 10g 学习之函数和存储过程(12)
一.函数 1. 函数的 helloworld: 返回一个 "helloworld--!" 的字符串 create or replace function helloworld re ...
- oracle入门学习之oracle数据库结构
1. oracle数据库结构 1.1 Oracle可以看做是一个大的数据库???,里面可以创建很多实例; 一个实例对应多个表空间.多个用户; 一个用户只能有一个表空间; 一个表空间可以有多个用户; 一 ...
- oracle 10g 学习之oracle管理(3)
怎样将预先写好的sql脚本执行? select * from employees;→107条记录 利用 Oracle 企业管理器连接数据库服务器 点击打开以下界面: 此时已经连接成功了 用 Oracl ...
- oracle 数据库学习3 --oracle 数据库中常使用的函数
1.字符函数: ASCII(X) -->返回X字符的ASCII码 concat(x,y)-->将y连接到X上输出 select concat(first_name,last_name) f ...
- Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
---视图 ---视图的概念:视图就是提供一个查询的窗口,来操作数据库中的数据,不存储数据,数据在表中. ---一个由查询语句定义的虚拟表. ---查询语句创建表 create table emp a ...
- Oracle学习(十二):存储过程/存储函数
1.知识点 --第一个存储过程 /* 打印Hello World create [or replace] PROCEDURE 过程名(參数列表) AS PLSQL子程序体: 调用存储过程: 1. ex ...
- Oracle的学习一:安装与卸载、sql *plus常用命令、Oracle用户管理
1.为什么学习oracle? 性能优越: 小型数据库 中型数据库 大型数据库 acess.foxbase mysql.sql server.informix sybase.oracle.db2 复杂量 ...
- Mybatis下配置调用Oracle自定义函数返回的游标结果集
在ibatis和Mybatis对存储过程和函数函数的调用的配置Xml是不一样的,以下是针对Mybatis 3.2的环境进行操作的. 第一步配置Mapper的xml内容 <mapper names ...
随机推荐
- UIImageView 获取图片的 宽 高
该文章纯属这两天开发的经验之谈 并且也是平常没注意 这回发现的一个小方法 并且很实用 在开发中 提高了很大的效率 更加符合高保真的要求 通常 美术 切的一些图片 需要 :1还原的 现在 我们一般支持i ...
- ios 表情编码
感受 :可以做自定义键盘时候用 很方便 还可以在textView里面看到 用户体验很好~ 但是要和服务器管理员协商好,做好解析转码工作,不然网页上是不显示的. ios表情编码 在ios中可以使用可爱 ...
- [原创]java WEB学习笔记14:JSP的9 个隐含对象 及 JSP 的基本语法
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- nginx 搭建虚拟主机
一.排错三部曲 第一步在客户端上ping服务端ip ping 10.0.0.8 第二部在客户端上telnet服务器端IP.端口 telnet 10.0.0.8 第三部在客户端使用wget命令检测 ...
- 关于spring事务注解
关于事务的注解常用如下1.如果有事务, 那么加入事务, 没有的话新建一个(默认情况下),也就是当我们要开启事务的时候才用,即有数据库有增删改操作@Transactional(rollbackFor=E ...
- JS字符串转换成数字
方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有 ...
- 分享知识-快乐自己:Struts2 拦截器 与 过滤器
拦截器的使用以及配置: package com.gdbd.interceptor; import com.gdbd.pojo.UserInfo; import com.opensymphony.xwo ...
- windows目录create、isExsit、remove
RemoveDirectoryA( __in LPCSTR lpPathName ); PathFileExistsA(LPCSTR pszPath); CreateDirectoryA(strDir ...
- Python基础-random模块及随机生成11位手机号
import random # print(random.random()) # 随机浮点数,默认取0-1,不能指定范围# print(random.randint(1, 20)) # 随机整数,顾头 ...
- HDU 6231 (K-th Number)
题目链接:https://cn.vjudge.net/problem/HDU-6231 思路:二分+双指针: #include <stdio.h> #include <iostrea ...