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,一经查实,立即删除!

相关文章

php new static,PHP面向对象中new self( )和 new static( ) 的区别

首先阐明结论,在PHP中 self指向定义了当前被调用方法的类, static指向调用当前静态方法的类。接下来通过一个例子来证明上面的结果class A{public static $_a Class A;public static function echoProperty(){echo self::$_a . PHP_EOL;}}class B exten…

python 动态规划_DP动态规划(Python实现)

前言_我们遇到的问题中,有很大一部分可以用动态规划(简称DP)来解。 解决这类问题可以很大地提升你的能力与技巧,我会试着帮助你理解如何使用DP来解题。 这篇文章是基于实例展开来讲的,因为干巴巴的理论实在不好理解。注意:如果你对…

php gif 透明,解决PHP剪切缩略图生成png,gif透明图时,黑色背景问题

背景图填充白色背景$white imagecolorallocate($dstim,255,255,255);imagefilledrectangle($dstim,0,0,$width,$height,$white);imagecolortransparent($dstim,$white);设置图片走透明通道$img imagecreatefrompng($src);imagesavealpha($img,true);//这里很重要;$thumb ima…

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"的发展趋势,概述目前国内管件生产加工流程的现状和不足,基于对管件加工过程中管件之间的差别、管件加工批次的混合等特点导致的管理难点分析,介绍管件生产加工管理系统的设计思路和工作流程,并对该系统未来可进一步…

python中的命令行参数_python学习笔记6:命令行参数

1. 使用步骤使用步骤如下:# 导入模块import argparse# 获取parser, description文本会显示在help信息中parser argparse.ArgumentParser(descriptionargs discrip)# 添加选项, 具体选项类型见后面各节parser.add_argument(-a)# 解析选项args parser.parse_args(sys.argv[1:])…

php 年的第几天,收藏-php中某年第几天计算出日期年月日的代码

很实用的小功能,希望对大家有帮助。这个索引值除了方便面数据的记录和搜索,还起着记录日期信息的作用,信息量很可观。那么,如何还原索引值为可用的日期资讯呢?date(z)返回的是一年中的第几天,返回值为从0开…

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

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

php where 不包含,php – 除非它们包含“where”或“like”子句,否则不允许删除

我的查询 –$shortlistpartners是数组$this->db->delete(shortlist_partners);$this->db->where(opp_id,$this->input->post(opp_id));$this->db->where_in(partner_id,$shortlistpartners);除非它们包含“where”或“like”子句,否则不允许删除.错误即…

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

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

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

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

php图片截取后缀,PHP抓取远程图片(含不带后缀的)教程详解

一、创建项目作为演示,我们在www根目录创建项目grabimg,创建一个类GrabImage.php和一个index.php。二、编写类代码我们定义一个和文件名相同的类:GrabImageclass GrabImage{}三、属性接下来定义几个需要使用的属性。1、首先定义一个需要抓取的…

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

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

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

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

noclassdeffounderror java,从终端运行Java文件时出现java.lang.NoClassDefFoundError

我是Java新手。我一直在使用Eclipse测试一个简单的Java类(名为NewHelloWorld),它在控制台中运行良好。当我尝试从终端执行相同的操作时,它会正确编译(创建HelloWorld.class而不给出任何错误),但是随后javaNewHelloWorld显示以下错误Exception…

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

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

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

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

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

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

从零开始学android编程_小白也能学得会!谷歌推出免费的Kotlin和Android开发课程...

程序员书库(ID:CodingBook) 猿妹编译链接:https://android-developers.googleblog.com/2020/07/learn-android-and-kotlin-with-no-experience.html5月份,微软刚推出了一套免费的Python在线视频课程,面向数据科学和机器学习初学者…