oracle 同义词_【干货7】Oracle知识关键代码摘要

309f7f34d38f774e5995fcbc9483828c.png
(如果我分享的干货内容对你有帮助,可以通过赞或者评论的方式告诉我,我会持续分享;或者留言你想要的IT方面的支持,我将分享大家感兴趣的IT类技术干货;如果没有收到大家的反馈,10天后我将停止技术类干货文章的分享

引言

/*

使用Oracle数据 在使用第三方工具时需要先启动两个服务

监听器服务:lsnrctl start

数据库服务:net start OracleServiceOrcl

登录方式:

dos窗口:sqlplus system/accp

第三方工具(pl/sql developer):

很久未使用 忘记密码怎么办?

sqlplus / as sysdba;

alter user system identified by accp;

scott普通用户 一般安装默认锁定状态locked 密码为tiger

alter user scott account unlock;

提供了两张常用示范表 emp、dept

*/

一、表空间

/*1.创建表空间*/

create tablespace worktbs --表空间名称

datafile 'D:T146WORDTBS01.dbf' --文件路径

size 10M --表空间大小

autoextend on next 10M --自动扩展10M

/*2.查看当前用户下的表空间*/

select * from dba_data_files;

--3.扩展表空间

/*3.1.修改表空间数据文件大小*/

alter database

datafile 'D:T146WORDTBS01.dbf'

resize 20M;

/*3.2.向表空间内添加数据文件*/

alter tablespace worktbs

add datafile

'D:T146WORDTBS02.dbf'

size 10M

autoextend on;

/*4.更改表空间为只读*/

ALTER TABLESPACE worktbs READ ONLY;

/*5.删除表空间*/

drop tablespace worktbs including contents and datafiles;

二、用户权限管理

--1.创建用户

CREATE USER king --用户名

IDENTIFIED BY 123456 --密码

DEFAULT TABLESPACE worktbs --表空间

[TEMPORARY TABLESPACE tablespace] --指定临时表空间 可省略

--2.对用户进行权限管理

grant connect,resource to king; --授予权限

revoke connect,resource from king;--回收权限

grant create session to king;

revoke create session from king;

grant insert,delete,update,select on scott.dept to king;--授予对表操作的权限

grant all on scott.emp to king;

--3.修改用户密码

alter user king identified by accp;

--4.删除用户

DROP USER king CASCADE; --当用户 模式下有模式对象时需要添加CASCADE关键字进行级联删除

--删除表

drop table depts;

--创建表(不要表数据 只要表结构)

create table depts

as

select * from scott.dept where 1>1;

--创建表(复制表结构以及表数据)

create table depts

as

select * from scott.dept ;

--查看表

select * from depts;

三、序列

--1.创建序列

create sequence seq_dept --指定序列名称

start with 10 --指定序列起始值

increment by 10 --指定增长量

maxvalue 50 --指定序列最大值

nocycle --不循环

cache 10; --缓存10个序列值

create sequence seq1;

/*

序列中有两个非常重要的属性

1.nextval 下一个值

2.currval 当前值

在序列没有使用过nextval之前,不能使用currval获取序列的当前值,因为序列尚未初始化

*/

--2.修改序列

alter sequence seq1

increment by 14

maxvalue 100

minvalue 10

cycle

cache 7;

--3.使用序列

select seq_dept.nextval from dual;

select seq_dept.currval from dual;

insert into depts values(seq_dept.nextval,'hr','shenzhen');

select * from depts;

select seq1.nextval from dual;

select seq1.currval from dual;

--4.删除序列

drop sequence seq_dept;

--5.使用GUID 生成唯一标识符 推荐在并行环境下使用

select sys_guid() from dual;

四、同义词

/*创建员工表*/

create table employee(

empon number(4) not null,

ename varchar(10),

job varchar(9),

mgr number(4),

hiredate date,

sal number(9,2),

comm number(7,2),

deptno number(2)

);

select * from employee

--将访问员工表的权限授予A_oe用户

GRANT SELECT ON employee TO A_oe;

--创建私有同义词

CREATE OR REPLACE SYNONYM emp FOR employee;

--以A_oe用户登录

SELECT * FROM emp;

--创建公有同义词

CREATE PUBLIC SYNONYM public_emp FOR A_hr.employee;

---以A_oe用户登录

select * from public_emp

--删除私有同义词

DROP SYNONYM emp;

--删除公有同义词

DROP PUBLIC SYNONYM public_emp;

五、索引

/*1.B树索引*/

create unique index index_empno on employee(empno);

/*2.反向键索引*/

create index index_reverse_empno on employee(empno) reverse;

/*3.位图索引*/

create bitmap index index_bit_job on employee(job);

/*4.重建索引*/

alter index index_reverse_empno rebuild noreverse;

/*5.删除索引*/

drop index index_bit_job;

六、分区表

--1.创建分区表 范围分区

create table sales1(

sales_id NUMBER NOT NULL,

product_id varchar2(5),

SALES_DATE DATE,

SALES_COST NUMBER(10),

AREACODE VARCHAR2(5)

)

partition BY RANGE(SALES_DATE)

(

partition part1 values less than(to_date('2013/04/1','yyyy/mm/dd')),

partition part2 values less than(to_date('2013/07/1','yyyy/mm/dd')),

partition part3 values less than(to_date('2013/10/1','yyyy/mm/dd')),

partition part4 values less than(to_date('2014/01/1','yyyy/mm/dd')),

partition part5 values less than(maxvalue)

)

--查询分区情况

select table_name,partition_name

from user_tab_partitions

where table_name=UPPER('sales1');

--插入数据

insert into sales1 values(1000,'p1',to_date('2013/07/1','yyyy/mm/dd'),1000,'A1')

insert into sales1 values(1001,'p2',to_date('2013/11/13','yyyy/mm/dd'),1001,'A2')

--使用分区查询

select * from sales1 partition(part2)

--删除分区

alter table sales1 drop partition(P1);

--2.创建分区表 间隔分区

create table sales2(

sales_id NUMBER NOT NULL,

product_id varchar2(5),

SALES_DATE DATE,

SALES_COST NUMBER(10),

AREACODE VARCHAR2(5)

)

partition by range(sales_date)

interval(numtoyminterval(3,'Month'))

(partition p1 values less than (to_date('2013/07/1','yyyy/mm/dd')));

--插入数据

insert into sales2 values(1000,'p1',to_date('2013/08/1','yyyy/mm/dd'),1000,'A1')

insert into sales1 values(1001,'p2',to_date('2013/11/13','yyyy/mm/dd'),1001,'A2')

--获取分区情况

select table_name,partition_name

from user_tab_partitions

where table_name=UPPER('sales2');

--查看分区数据

select * from sales2 partition(sys_P41)

七、PL/SQL基础知识

/*1.PL/SQL组成部分

[DECLARE]

--声明部分,在此声明PL/SQL用到的变量、类型及游标,以及局部的存储过程和函数

BEGIN

--执行部分:过程及SQL语句,即程序的主要部分

[EXCEPTION]

--异常处理部分:错误处理

END;

--执行部分不可省略

*/

/*2.PL/SQL变量与常量语法

变量名 数据类型[(范围大小)][:= 值]; --变量声明赋值语法

常量名 CONSTANT 数据类型 := 值; --常量声明赋值语法

*/

--例:

DECLARE

v_ename VARCHAR2(20);

v_rate NUMBER(7,2);

c_rate_incr CONTRANT NUMBER(7,2) := 1.10;

BEGIN

--赋值方式一,通过SELECT INFO

SELECT ename,sal* c_rate_incr INTO v_ename, v_rate

FROM employee

WHERE empno = '7788';

--赋值方式二,通过赋值操作符“:=”

v_ename := 'SCOTT';

END;

/*3.PL/SQL控制语句*/

--3.1条件控制

--3.1.1

BEGIN

IF false THEN

DBMS_OUTPUT.PUT_LINE('t142');

ELSE

DBMS_OUTPUT.PUT_LINE('AAAAAA');

END IF;

END;

--3.1.2

DECLARE

v_num NUMBER(2,0) := 10;

BEGIN

IF v_num>10 THEN

DBMS_OUTPUT.PUT_LINE('100');

ELSIF v_num=10 THEN

DBMS_OUTPUT.PUT_LINE('10');

ELSE

DBMS_OUTPUT.PUT_LINE('0');

END IF;

END;

--3.2.1循环控制-LOOP

DECLARE

v_num NUMBER(2,0) := 1;

BEGIN

LOOP

DBMS_OUTPUT.PUT_LINE(v_num);

v_num+:=1;

EXIT WHEN v_num=11;

END LOOP;

END;

--3.2.2循环控制-FOR

DECLARE

v_num NUMBER(2,0) := 1;

v_num2 NUMBER(2,0);

BEGIN

FOR v_num2 IN REVERSE 1 .. 5 LOOP

DBMS_OUTPUT.PUT_LINE(v_num2);

END LOOP;

END;

八、异常处理

--1.预定义异常

create table employee as select * from scott.emp;

select * from employee;

--未进行异常处理

DECLARE

v_ename employee.ename%TYPE;

BEGIN

SELECT ename INTO v_ename

FROM employee

WHERE empno=1234;

dbms_output.put_line('雇员名:'||v_ename);

END;

--进行异常处理

DECLARE

v_ename employee.ename%TYPE;

BEGIN

SELECT ename INTO v_ename

FROM employee

WHERE empno=1234;

dbms_output.put_line('雇员名:'||v_ename);

EXCEPTION

WHEN NO_DATA_FOUND THEN

dbms_output.put_line('雇员号不正确');

WHEN TOO_MANY_ROWS THEN

dbms_output.put_line('查询只能返回单行');

WHEN OTHERS THEN

dbms_output.put_line('错误号:'||SQLCODE||'错误描述:'||SQLERRM);

END;

--2.定义自定义异常

--查询编号为7788的雇员的福利补助(comm列)。

DECLARE

v_comm employee.comm%TYPE;

e_comm_is_null EXCEPTION; --定义异常类型变量

BEGIN

SELECT comm INTO v_comm FROM employee WHERE empno=7788;

IF v_comm IS NULL THEN

RAISE e_comm_is_null;

END IF;

EXCEPTION

WHEN NO_DATA_FOUND THEN

dbms_output.put_line('雇员不存在!错误为:'||SQLCODE||SQLERRM);

WHEN e_comm_is_null THEN

dbms_output.put_line('该雇员无补助');

WHEN others THEN

dbms_output.put_line('出现其他异常');

END;

九、游标

/*显式游标使用步骤*/

declare

v_ename employee.ename%type;

v_sal employee.sal%type;

--1.声明游标

cursor cursor_emp is

select ename,sal from employee

for update of sal;

begin

--2.打开游标

open cursor_emp;

--3.提取游标 读取游标中存储数据 使用fetch...into 还可以使用for循环读取

/*loop

fetch cursor_emp into v_ename,v_sal;

exit when cursor_emp%notfound;

dbms_output.put_line('雇员姓名:'||v_ename||' 雇员薪水:'||v_sal);

end loop;*/

--提取游标 进行修改

loop

fetch cursor_emp into v_ename,v_sal;

exit when cursor_emp%notfound;

update employee set sal = sal+200

where current of cursor_emp;

end loop;

--4.关闭游标

close cursor_emp;

end;

十、存储过程

/*1.创建存储过程*/

CREATE OR REPLACE PROCEDURE add_employee(

eno NUMBER, --输入参数,雇员编号

name VARCHAR2, --输入参数,雇员名称

salary NUMBER, --输入参数,雇员薪水

job VARCHAR2 DEFAULT 'CLERK', --输入参数,雇员工种默认'CLERK'

dno NUMBER --输入参数,雇员部门编号

)

IS

BEGIN

INSERT INTO employee

(empno,ename,sal,job,deptno)VALUES (eno,name,salary,job, dno);

END;

/*2.sql*plus下调用存储过程*/

--EXEC add_employee(1111,'MARY',2000,'MANAGER',10);

--EXEC add_employee(dno=>10,name=>'MARY',salary=>2000,eno=>1112, job=>'MANAGER');

--EXEC add_employee(1113,dno=>10,name=>'MARY',salary=>2000,job=>'MANAGER');

--EXEC add_employee(1114,dno=>10,name=>'MARY',salary=>2000);

/*3.PL/SQL下调用存储过程*/

BEGIN

--按位置传递参数

add_employee(2111,'MARY',2000,'MANAGER',10);

--按名字传递参数

add_employee(dno=>10,name=>'MARY',salary=>2000,eno=>2112, job=>'MANAGER');

--混合方法传递参数

add_employee(3111,dno=>10,name=>'MARY',salary=>2000,job=>'MANAGER');

--默认值法

add_employee(4111,dno=>10,name=>'MARY',salary=>2000);

END;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt做的接收串口数据并显示曲线_QT无人机地面站设计与制作

近年来,无人机可谓是大火。无论是军事,还是民用,它的地位更是不用说。但,如何利用利用现有技术对无人机的信息进行操作,实现人、机合一呢?“无人机地面站”应运而生,结合仿真系统为地面工作人员…

php直接读取csv文件,php实现的读取CSV文件函数示例

本文实例讲述了php实现的读取CSV文件函数。分享给大家供大家参考,具体如下:function read_csv($cvs) {$shuang false;$str file_get_contents($cvs);for ($i0;$iif($str{$i}") {if($shuang) {if($str{$i1}") {$str{$i} *;$str{$i1} *;} el…

系统背景描述_【计算机论文】管件加工管理系统和数据库的结构探析

摘 要:结合"中国制造2025"及德国"工业4.0"的发展趋势,概述目前国内管件生产加工流程的现状和不足,基于对管件加工过程中管件之间的差别、管件加工批次的混合等特点导致的管理难点分析,介绍管件生产加工管理系统的设计思路和工作流程,并对该系统未来可进一步…

shell tr 替换 空格_Shell 字符串分隔符!!!(全网最详细总结)

前言:在shell脚本编程中,我们经常会用到切割字符串,类似于python中的split。但shell中的命令比较五花八门,小编也是苦扰了很久,终于下定决心对它做一个总结。方法一:字符串替换法#/bin/bashstring"Hel…

本机用域名不能访问_域名注册申请网站域名注意事项

互联网用户越来越多,也有越来越多人搭建网站,做个人博客也好、搭建企业官网也好,数量都在逐步上升。做网站的数量在上升,域名注册量肯定也在上升。有的朋友头一次注册域名,对域名不了解也不知道申请网站域名该注意哪些…

电脑微信不用手机确认_不用安装第三方软件,手机投屏到电脑就这么简单

在头条上收到网友的提问,如果想把手机的内容投影到电脑上,该怎么做?为此我做一个简单的教程,不用安装第三方软件,就用Windows 10自带的无线显示功能和安卓手机的自带无线显示功能来实现。前提条件:1. 电脑是…

tomcat7 https 拒绝连接_物与网怎么连接呢?物联网架构及五大通信协议

消息触达能力是物联网(internet ofthings, IOT)的重要支撑,而物联网很多技术都源于移动互联网。柳猫将阐述移动互联网消息推送技术在物联网中的应用和演进。一、物联网架构和关键技术从开发的角度,无线接入是物联网设备端的核心技术,身份设备…

安卓手机浏览器排行_5g时代已来临!五月安卓手机性价比排行:两千元以上5G手机屠榜...

5月已经过去,同时也标志着今年上半年手机的发布已经告一段落。那么在这段时间里,智能手机的性价比如何呢?考虑到现在已经开始步入5G时代,所以智能手机的价格也是普遍上涨,想要找到一款性价比不错的手机似乎有些难度。现…

tp3.2 不能提交到action方法_什么是死锁,如何避免死锁(4种方法)

当两个线程相互等待对方释放资源时,就会发生死锁。Python 解释器没有监测,也不会主动采取措施来处理死锁情况,所以在进行多线程编程时应该采取措施避免出现死锁。一旦出现死锁,整个程序既不会发生任何异常,也不会给出任…

虚拟局域网软件开源_ZeroTier虚拟局域网免费远程桌面体验--替代TeamViewer

本文主要是关于使用ZeroTier创建虚拟局域网来实现免费远程桌面的方案的体验,包含了一些对不同方案的优缺点的描述。最近因为疫情在家不得不通过远程连接实验室电脑,有两种基本的解决方案:连接学校VPN,然后使用系统自带的远程桌面连…

java复制的函数会报错,2 面试题之面向对象

大纲:一、两个重要概念① 请说明类和对象的区别类是对某一类实物的描述,是抽象的;对象是一个实实在在的个体,是类的一个实例;② 解释一下什么是类加载机制、双亲委派模型,好处是什么?类加载机制…

sql 除以_不可思议的SQL排名函数,被您无视了么?

经常写SQL脚本的朋友,对查询的多样化要求可能会经常头疼。数据库SQL的语法是固定的、但应用要求却是千差万别的。依靠我们所掌握的知识,大部分的查询需求我们还是有办法的解决的,但总有那么一些要求,把我们搞的非常被动。今天我们…

自制hdmi线一头改vga图_VGA连接线接口定义及引线焊接教程,VGA线不够长时可用网线代替?...

最近做的多媒体功能插座,含有VGA、HDMI、网口、音频输入等接口,由于穿线时没有穿成品线缆,VGA和HDMI接头需要焊接,那么怎么焊接呢?VGA接口15根针,其对应接口定义如下,其下图:一般在V…

sql 分组求和_数据仓库工具–Hive(归纳笔记第六部分:SQL练习)

写在开头:本章是Hive教程第六部分,着重于归纳SQL编写。文章内容输出来源:拉勾教育大数据高薪训练营。本章将介绍Hive中常见的面试题和自己的解答思路,以供大家训练和记忆。SQL面试题1、求连续7天登录的用户— 数据。uid dt status…

Tableau上面地图与条形图结合_何为计算的详细级别,认识Tableau中的Level of Detail...

何为详细级别详细级别,英文Level of detail,Tableau用它来描述计算发生的级别,或者说计算在哪个层级发生。由于BI工具的相似性,在Power BI里也可以用类似的思想对计算进行描述,但Power BI并没有与之对应的专门的词汇。…

java 异步读表,Java实现异步回调-Go语言中文社区

回调(callback)在我们做工程过程中经常会使用到,今天想整理一下回调的原理和使用方法。回调的原理可以简单理解为:A发送消息给B,B处理完后告诉A处理结果。再简单点就是A调用B,B调用A。那么是如何实现的呢?一般而言&…

mysql 按时间累计计算_精通MySQL索引背后的数据结构及算法原理

本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,mysql支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引&a…

matlab数据游标属性设置,将节点属性添加到图论图数据提示

绘制具有数据提示的 GraphPlot 对象创建随机有向图的 GraphPlot 图对象。将额外的节点属性 wifi 添加到该图。rng defaultG digraph(sprandn(20, 20, 0.05));G.Nodes.wifi randi([0 1], 20, 1) 1;h plot(G);向图中添加数据提示。利用数据提示,您能够选择图论图中…

matlab 邻近度 离群点_MATLAB自制迷宫游戏,快来试试吧!

前几天给大家介绍了“一行matlab代码可以做哪些匪夷所思的事情”,今天小编带给大家一款酷炫的私人订制版迷宫游戏。这款迷宫游戏包含以下功能:随机生成迷宫地图通过键盘手动求解生成的迷宫MATLAB自动求解生成的迷宫目前主流的生成迷宫的算法有&#xff1…

matlab中m文件的作用,M文件主要包含()_matlab中m文件的好处

M文件主要包含()答:M函数文件\n\nM命令文件(脚本文件)" src"" style"max-width: 100%; display: inline;">中国大学MOOC: 在缓冲区分析中二次模型的表示的主体对象对临近对象的影响随距离的增大呈线性衰减。答:错巡航速度是…