![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Oracle 学习笔记
潇潇雨歇_
www
展开
-
Oracle 数据库基于SCOTT模式的多表检索
Oracle提供的SCOTT模式可以示例表和数据来展示数据库的一些特性。下面我们连接该模式,并对该模式下的表进行操作。 1.查询该模式下有哪些示例表 select table_name from user_tables;2.在多表检索前,我们先试着进行单表查询select ename as "姓名",job as "职位",hiredate as "工作日期原创 2017-04-08 20:16:20 · 1064 阅读 · 0 评论 -
Oracle 课程设计源码
创建主表空间:create tablespace testdatafile 'D:\OracleSpace\test' size 20mextent management local;在表空间创建用户(用户名:haige 密码:123456)create user haigeidentified by 123456default tablespace testquota 2原创 2017-06-15 21:51:52 · 5022 阅读 · 0 评论 -
Oracle用户权限与安全
1.首先在桌面建立一个试验用的表空间,容量为10Mcreate tablespace user01datafile 'C:\Users\Administrator\Desktop\user01' size 10Mextent management local; 2.创建用户,名为:developer,密码为:developercreate user developeridenti原创 2017-06-08 21:08:21 · 657 阅读 · 0 评论 -
PL/SQL Developer连接Oracle服务器的错误解决总结
PL/SQL Developer是Oracle数据库设计企业最常用的客户端工具,虽然样式古老,但十分好用,省去了繁杂的编码设计,更多的是可以使用界面设计,如索引,触发器,主外键,序列等,让Oracle原本笨重的性能,开发者轻松使用该工具进行设计后变得十分灵活.但环境搭建之初可不是这么简单的.Oracle如果在本地搭错了服务器,或建错了监听,那可不是那么容易修改得,刚入门Oracle的Java开发者原创 2017-12-07 22:19:23 · 662 阅读 · 0 评论 -
Oracle 大数据量查询优化
前言:平常写的SQL可能主要以实现查询出结果为主,但如果数据量一大,就会突出SQL查询语句优化的性能独特之处.一般的数据库设计都会建索引查询,这样较全盘扫描查询的确快了不少.下面总结下SQL查询语句的几个优化效率的地方,经验有限,难免有不足. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 2.避免在索引列上使用NOT在 where原创 2018-01-18 22:31:51 · 17602 阅读 · 1 评论 -
Oracle 常见函数用法
1.decode函数SELECT ID,NAME,DECODE(LEVER,1,'教授',2,'副教授',3,'导师','讲师') POSITION,(SELECT CLASSNUM FROM CLASS T WHERE T.NUM = S.NUM) NUM FROM TEACHER S WHERE T.LEVER IN (1,2,3);上句SQL中的decode函数的用法逻辑是这样原创 2018-02-04 18:02:03 · 1595 阅读 · 0 评论 -
Oracle 两种高级查询总结
一.CASE WHEN THEN ELSE END条件控制查询 1.简单CASE函数用法SELECT ID,STU_NAME CASE WHEN SCORE >=90 THEN '优秀'WHEN SCORE>=75 AND SCORE<90 THEN '良好'WHEN SCORE>=60 AND SCORE<75 THEN '及格'ELSE '不及格' END RES原创 2018-02-04 21:03:04 · 791 阅读 · 0 评论 -
oracle 常用写法--with as 用法,提高查询性能
一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。 特别对于UNION ALL比较有用。因为UNION ALL的每个部分可能相同,但是如果每个部分...原创 2019-02-26 17:51:17 · 2102 阅读 · 0 评论 -
Oracle分析函数rank() over开窗函数使用介绍
开窗函数常用作分组统计排名的现实的数据分析应用场景,下面是它的几种使用形式:1.dense_rank() over开窗函数:在做排序时如果遇到列有重复值,则重复值所在行的序列值(排名)相同,而其后的序列值依旧递增。本人牛客网SQL编程使用的具体例子(要求获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salary)--按照emp_no分组...原创 2019-02-26 17:55:39 · 3591 阅读 · 0 评论 -
Merge into用法总结
一.Merge into用法简介MERGE INTO T2 --目标表USING Tl --源表ON (Tl.NAME=T2.NAME) --表中有没有符合on()条件中的数据,有了就更新数据,没有就插入数据WHEN MATCHED THEN --符合条件就更新数据UPDAT...原创 2019-02-26 19:07:26 · 36558 阅读 · 7 评论 -
Oracle物化视图的使用总结
1.物化视图的理解物化视图(Materialized View)在9i以前的版本叫做快照(SNAPSHOT),从9i开始改名叫做物化视图。它是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,从而快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能,适用于数据报表,数据展示等查询逻辑复杂,查询性能要求高,但是...原创 2019-04-04 10:27:26 · 654 阅读 · 0 评论 -
Oracle Type在带参数传递的存储过程中的使用示例
在介绍Type之前先上一个接口返回结果的实体package com.weichai.common.utils;import java.io.Serializable;/** * 接口返回结果 * @author linhaiy * @date 2019.03.09 */public class Result implements Serializable { privat...原创 2019-07-16 18:22:40 · 644 阅读 · 0 评论 -
Oracle 统计分析函数使用示例
1.使用 listagg() WITHIN GROUP () 将多行字段合并成一行--LISTAGG() WITHIN GROUP()函数的使用SELECT A.ID AS "ID", A.SECURITY_CODE AS "SECURITYCODE", A.SECURITY_CODE_CHE...原创 2019-07-17 18:27:22 · 325 阅读 · 0 评论 -
Oracle数据库创建存储过程
1.最简单的存储过程SQL> create procedure sample_proc is 2 begin 3 null; 4 end sample_proc; 5 / 2.如果我们重复建立存储过程SQL> create procedure sample_proc is 2 begin 3 dbms_output.put_line('He原创 2017-04-20 21:39:26 · 3536 阅读 · 0 评论 -
Oracle 创建/调用函数小示例
函数与过程非常相似,它也是一种存储在数据库中的命名程序块,并且函数也可以接受零个或多个输入参数。函数与过程的主要区别在于,函数必须有返回值,并且可以作为一个表达式的一部分,函数不能作为一个完整的语句使用,函数返回值的数据类型在创建函数时定义。 # 创建一个求平均数的函数SQL> create or replace function average(num1 number,num2 n原创 2017-05-02 17:56:23 · 2306 阅读 · 0 评论 -
Oracle 存储过程的默认值参数和过程中的事务处理
1.存储过程的参数也可以是默认值,这样当调用该过程时,如果未向参数传入值,则该参数将使用定义的默认值 # 为JOB_PARAM,HIRE_PARAM和SALARY_PARAM参数设置了默认值,在调用该存储过程时,用户就不必再为这些参数提供值SQL> create or replace procedure add_employee( 2 id_param in number原创 2017-05-02 17:55:57 · 4269 阅读 · 0 评论 -
Oracle 数据库基于SCOTT模式的分组技术和子查询
1.在SELECT 语句中,可以使用GROUP BY子句进行分组操作,并且可以使用HAVING子句提供分组条件---->下面的查询将对SCOTT模式中的EMP表进行分组,以统计各部门的员工人数 select deptno,count(*) as 员工数量 from emp group by deptno;------>HAVING子句通常与GROUP BY子句一起使用,原创 2017-04-09 11:10:21 · 735 阅读 · 0 评论 -
PL/SQL 编程初步理解
代码:SQL> set serveroutput onSQL> declare 2 a number:=3; 3 b number:=4; 4 c number; 5 begin 6 c:=(a*b)/(a+b); 7 dbms_output.put_line(c); 8 exception 9 when zero_di原创 2017-04-09 11:10:55 · 537 阅读 · 0 评论 -
PL/SQL 变量与数据类型
1. %TYPE变量 在声明变量时,除了可以使用Oracle规定的数据类型外,还可以使用%TYPE关键字定义变量类型。%TYPE关键字的含义是声明一个与指定列名称相同的数据类型。SQL> set serveroutput onSQL> declare 2 var_name emp.ename%type; 3 var_no emp.empno%type; 4 v原创 2017-04-14 21:07:12 · 692 阅读 · 0 评论 -
PL/SQL 条件语句
1.IF...THEN语句(最简单的IF语句)SQL> set serveroutput onSQL> declare 2 number1 integer:=90; 3 number2 integer:=60; 4 begin 5 if number1>=number2 then 6 dbms_output.put_line(number1 || '>=' ||原创 2017-04-14 21:08:14 · 847 阅读 · 0 评论 -
PL/SQL 循环语句
1. LOOP...END LOOP循环 LOOP循环是最基本的循环,也称为无条件循环。在这类型的循环中如果没有指定EXIT语句,循环将一直运行。SQL> set serveroutput onSQL> declare 2 i number:=1; 3 begin 4 loop 5 dbms_output.put_line(i || '的平方数为' || i原创 2017-04-14 21:08:30 · 900 阅读 · 0 评论 -
PL/SQL 显式游标
1.显式声明一个游标,并在循环中使用FETCH语句提取所有部门为30的员工信息SQL> set serveroutput onSQL> declare 2 cursor emp_cursor(department in number default 20) 3 is select empno,ename,job,sal 4 from emp 5 where deptn原创 2017-04-15 09:46:11 · 370 阅读 · 0 评论 -
PL/SQL 隐式游标
1.更新EMP表中一名员工的信息,并通过游标的属性查看被更新的记录数SQL> set serveroutput onSQL> declare 2 begin 3 update emp 4 set sal=1200 5 where empno='7369'; 6 if sql%notfound then 7 dbms_out原创 2017-04-15 09:45:52 · 591 阅读 · 0 评论 -
PL/SQL 游标FOR循环
1.使用游标FOR循环实现查询EMP表中的数据SQL> set serveroutput onSQL> declare 2 cursor emp_cursor is 3 select * from emp 4 where deptno=10; 5 begin 6 for r in emp_cursor loop 7 db原创 2017-04-15 09:47:27 · 1272 阅读 · 0 评论 -
PL/SQL 异常处理
1.预定义异常 对于系统预定义异常,用户无需在程序中定义,它们将由Oracle自动引发。 1.1如下:如果用户试图使用完全相同的主键值向同一表中插入两条记录,则系统会产生违反主键的异常,Oracle称这种异常为DUP_VAL_ON_INDEX异常.SQL> set serveroutput onSQL> begin 2 insert into emp(empno,ena原创 2017-04-15 10:09:10 · 505 阅读 · 0 评论 -
Oracle 使用IN参数创建/调用存储过程
1.建立一个简单的存储过程ADD_EMPLOYEE,该过程将接受一系列参数并将他们添加到SCOTT.EMP表中SQL> create or replace procedure add_employee( 2 id_param in number, 3 name_param in varchar2, 4 job_param in varchar2, 5 hire_para原创 2017-05-02 17:54:51 · 1301 阅读 · 0 评论 -
Oracle 使用OUT参数创建/调用存储过程
1.OUT类型的参数由存储过程传入值,然后由用户接受参数值。下面通过SCOTT.EMP表创建一个搜索过程,该过程将根据所提供的EMPNO列的值检索雇员的ENAME和SALSQL> create or replace procedure search_employee( 2 empno_param in number, 3 name_param out emp.ename%type,原创 2017-05-02 17:55:09 · 6721 阅读 · 0 评论 -
Oracle 使用IN OUT参数创建/调用存储过程
对于IN参数而言,它可以接受一个值,但是不能在过程中修改这个值。而对于OUT参数而言,它调用过程时为空,在过程的执行中将为这参数指定一个值,并在执行结束后返回。而IN OUT 类型的参数同时具有IN参数和OUT参数的特性,在调用过程时既可以向该类型的参数传入值,也可以从该参数接受值;而在过程的执行中既可以读取又写入该类型参数。 #创建SWAP存储过程交换两个数的位置SQL> cr原创 2017-05-02 17:55:37 · 3100 阅读 · 0 评论 -
Oracle使用package来封装存储过程或函数(Function)
一.包的组成介绍包头(package):包头部分申明包内数据类型,常量,变量,游标,子程序和异常错误处理,这些元素为包的公有元素。 包主体(package body):包主体则是包定义部分的具体实现,它负责为包头中所声明子程序提供具体的实现,在包主体中还可以声明包的私有元素。 包头和包主体分开编译,并作为两个分开的对象分别存放在数据库字典中。二.Oracle包与Java接口的比较...原创 2019-07-17 18:40:00 · 1758 阅读 · 0 评论