oracle视图创建删除代码
- 格式:docx
- 大小:14.16 KB
- 文档页数:2
shell脚本操作oracle删除表空间、创建表空间、删除⽤户oracle下表空间的导出,⽤户的删除,表空间删除,⽤户新建,表空间新建,数据导⼊的shell使⽤⾮oracle⽤户执⾏该脚本参数说名$1:base表空间的⽤户名$2:同步表空间的⽤户名使⽤场景测试⽤,base表空间⽤于升级建⽴⼀些固化数据。
同步表空间⽤于测试⽤,每次去和base表空间拉平数据复制代码代码如下:#!/bin/shoraclehome=$ORACLE_HOMEecho $oraclehomelocaldir="/oracle/data"echo $localdir#删除已经存在的临时dmp⽂件rm -rf $localdir/$2temp.dmprmresult=$?echo "rm $2temp.dmp result:$rmresult"#将⽤户$1的表空间导出su - oracle -c "exp dba/dba file=$localdir/$2temp.dmp owner=$1"expresult=$?if [ "$expresult" != "0" ];thenecho "exp $1 tablespace failure"fi#先删除⽤户$2及其表空间,然后再新建该⽤户及表空间su - oracle -c "${ORACLE_HOME}/bin/sqlplus /nolog" <<EOFconnect / as sysdbadrop user $2 cascade;drop tablespace $2 including contents and datafiles;create tablespace $2 datafile '/oracle/product/10.2.0/oradata/$2.dbf' size 5M autoextend on;create user $2 identified by "$2" default tablespace $2 temporary tablespace TEMP profile DEFAULT;grant connect to $2;grant resource to $2;grant create any table to $2;grant create any trigger to $2;grant create any type to $2;grant create any view to $2;grant unlimited tablespace to $2;exitEOFcrdrresult=$?if [ "$crdrresult" != "0" ];thenecho "drop user and tablespace failure"echo "create user and tablespace failure"else#刚建完的⽤户不能马上使⽤,等候10秒sleep 10s#更换dmp⽂件中的表空间名sed -i 's/TABLESPACE "$1"/TABLESPACE "$2"/g' $localdir/$2temp.dmp#使⽤imp命令导出表空间数据到⽤户$2的表空间su - oracle -c "imp dba/dba file=$localdir/$2temp.dmp fromuser=$1 touser=$2"impresult=$?if [ "$impresult" != "0" ];thenecho "imp failure"elseecho "imp success"fifi。
Oracle数据库的增删改查语句Oracle数据操作创建数据库create database 库名删除数据库drop database 库名创建索引create index 索引名 on 表名(列名)删除索引drop index 索引名 on 表名完全备份exp ⽤户名/密码@orcl buffer=1024 file=D:\back.dmp full=ydemo/demo #⽤户名/密码buffer #缓存⼤⼩file #备份的⽂件地址full #是否导出全部⽂件ignore #忽略错误,如果存在则覆盖导出多个表exp demo/demo@orcl file=D:\backup.dmp owner=(表1,表2)导出指定表exp demo/demo@orcl file=D:\backup.dmp tables=(表1,表2)按条件导出表exp demo/demo@orcl file=D:\backup.dmp tables=(表名) query="where filed1 like 'fg%'" compress=y log=D:\log.txt; query #判断条件compress #导出时压缩远程备份exp ⽤户名/密码@远程ip:端⼝号/实例 file=D:\backup.dmp full=y#################################################数据库还原完整还原imp ⽤户名/密码@远程ip:端⼝号/实例 file=D:\backup.dmp full=y ignore=y log=D:\log.txt;导⼊指定表imp ⽤户名/密码@orcl file=D:\back.dmp tables=(表1,表2)还原远程服务器imp ⽤户名/密码@远程ip:端⼝号/实例 file=D:\backup.dmp full=y############################################## Oracle表操作创建表create table 表名(列1 类型默认值约束,列2 类型默认值约束,...)删除表drop table 表名。
oracle 视图的增删改查操作举例oracle视图创建和操作创建简单复杂的视图创建基表不存在的视图视图增删改查看视图的结构关键字: oracle视图创建操作简单复杂基表不存在增删改插入修改删除查看结构视图的概念视图是基于一张表或多张表或另外一个视图的逻辑表。
视图不同于表视图本身不包含任何数据。
表是实际独立存在的实体是用于存储数据的基本结构。
而视图只是一种定义对应一个查询语句。
视图的数据都来自于某些表这些表被称为基表。
通过视图来查看表就像是从不同的角度来观察一个或多个表。
视图有如下一些优点可以提高数据访问的安全性通过视图往往只可以访问数据库中表的特定部分限制了用户访问表的全部行和列。
简化了对数据的查询隐藏了查询的复杂性。
视图的数据来自一个复杂的查询用户对视图的检索却很简单。
一个视图可以检索多张表的数据因此用户通过访问一个视图可完成对多个表的访问。
视图是相同数据的不同表示通过为不同的用户创建同一个表的不同视图使用户可分别访问同一个表的不同部分。
视图可以在表能够使用的任何地方使用但在对视图的操作上同表相比有些限制特别是插入和修改操作。
对视图的操作将传递到基表所以在表上定义的约束条件和触发器在视图上将同样起作用。
视图的创建创建视图需要CREAE VIEW系统权限视图的创建语法如下CREATE OR REPLACE FORCENOFORCE VIEW 视图名别名1别名 2... AS 子查询WITH CHECK OPTION CONSTRAINT 约束名WITH READ ONL Y 其中OR REPLACE 表示替代已经存在的视图。
FORCE表示不管基表是否存在创建视图。
NOFORCE表示只有基表存在时才创建视图是默认值。
别名是为子查询中选中的列新定义的名字替代查询表中原有的列名。
子查询是一个用于定义视图的SELECT 查询语句可以包含连接、分组及子查询。
WITH CHECK OPTION表示进行视图插入或修改时必须满足子查询的约束条件。
一、表空间1.创建临时表空间create temporary tablespace test_temptempfile 'E:\oracle\product\10.2.0\oradata\test\test_temp1.dbf'size 32mautoextend onnext 32mmaxsize 2048mextent management local;2.创建数据表空间create tablespace test_dataloggingdatafile 'E:\oracle\product\10.2.0\oradata\test\test_data1.dbf'size 32mautoextend onnext 32m maxsize 2048mextent management local;3.删除表空间drop tablespace "空间名" including contents and datafiles二、用户1.用PL/SQL创建备注:A.Default tablespace默认存在的表空间包括:B.Object privileges2.命令创建//创建用户create user lxg identified by lxg default tablespace test;//授权grant resource , connect , dba to test;grant dba to lxg; --授予DBA权限grant unlimited tablespace to lxg; --授予不限制的表空间grant select any table to lxg; --授予查询任何表grant select any dictionary to lxg; --授予查询任何字典//删除用户drop user "lxg" cascade三、表1.在删除一个表中的全部数据时,须使用TRUNCATE TABLE表名因为用DROP TABLE,DELETE * FROM 表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。
oracle的schema用法Oracle是一种流行的关系型数据库管理系统,它采用了schema 的概念来进行数据的组织和管理。
schema是一种逻辑结构,它用于将数据库中的对象(表、视图、索引等)分组并归类,这样就能方便地对它们进行管理和控制。
本文将介绍oracle的schema用法,包括它的创建、授权、查询和删除等操作。
1. 创建schema在oracle中,创建schema的方法有很多种。
其中最常见的是使用CREATE USER语句。
例如,我们可以使用以下命令创建一个名为Scott 的schema:CREATE USER Scott IDENTIFIED BY tiger;这条语句将创建一个用户Scott,并设置它的密码为tiger。
默认情况下,创建一个新的schema时,它没有权限访问任何表、视图或其他数据库对象。
这些权限需要通过授权来进行分配。
2. 授权schema在oracle中,用GRANT语句来授权给定schema的访问权限。
例如,以下命令将授予Scott用户对EMPLOYEES表的SELECT权限:GRANT SELECT ON EMPLOYEES TO Scott;如果需要授予Scott用户对EMPLOYEES表的所有操作权限,我们可以使用以下命令:GRANT ALL ON EMPLOYEES TO Scott;要注意的是,授权操作涉及到数据库中的安全性方面,因此在进行授权时需要非常小心,确保只将最小必要的权限授予给每个用户。
3. 查询schema在oracle中,可以使用SYS用户下的ALL_USERS表来查询所有可见的schema。
例如,以下命令将返回所有可见schema的列表:SELECT USERNAME FROM ALL_USERS;可以使用DESCRIBE语句来查看给定schema中的特定对象信息,例如以下命令将返回EMPLOYEES表的结构:DESCRIBE Scott.EMPLOYEES;在描述语句中,我们需要指定要查询的对象所属的schema,以及对象本身的名称。
oracle11g创建修改删除表oracle11g创建修改删除表我的数据库名字: ORCL 密码:1234561、模式2、创建表3、表约束4、修改表5、删除表1、模式set oracle_sid=ORCLsqlplus /nolog1)进⼊同名模式(⾸次使⽤可能需要设置见附录,我设置scott⽤户的密码 123)connect scott/123show user2)进⼊sys模式(⽆法删除sys列)connect /as sysdbashow user3)进⼊public模式connect sys/123456 as sysopershow userORA-12560: TNS: 协议适配器错误⼀般情况下,造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:1.监听服务没有起起来。
windows平台个⼀如下操作:开始---程序---管理⼯具---服务,打开服务⾯板,启动oraclehome92TNSlistener服务。
2.database instance没有起起来。
windows平台如下操作:开始---程序---管理⼯具---服务,打开服务⾯板,启动oracleserviceXXXX,XXXX就是你的database SID.⽐如我的SID就是ORCL。
3.右键我的电脑,属性--⾼级--环境变量---系统变量--新建,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID造成上述的主要原因是,我新安装的数据库实例oratest将我原有的ORCL的sid给覆盖了,这⾥通过设置环境变量的⽅法来进⾏控制sid。
2、创建表先进⼊同名模式(普通⽤户没权限建表)connect scott/1231)建表,表名:productinfoProductId varchar2(10) constraint P_Id primary key,ProductName varchar2(10) not null,ProductPrice number(8,2) constraint P_Price check(ProductPrice between 0 and 1000), Quantity number(10));2)创建临时表Create global temporary table temporary_table(ID number(2) primary key,Name varchar2(20))On commit Delete rows;3)利⽤⼦查询创建表Create table P_select(P_Id,P_Name)AsSelect ProductId,ProductName From Productinfo where ProductPrice > 10;3、表约束1)添加唯⼀约束Alter table productinfo add constraint P_Name Unique(ProductName);2)删除唯⼀约束Alter table productinfo drop Unique(ProductName);3)约束状态禁⽤约束Alter table productinfo disable constraint P_Price;激活约束Alter table productinfo enable constraint P_Price;4)查询约束信息Select constraint_name,constraint_type,deferred,statusFrom user_constraintswhere table_name='PRODUCTINFO';‘PRODUCTINFO’⼀定要⼤写4、修改表1)添加新列Alter table productinfoADD(Category number(6) );2)修改列的类型Alter table productinfoModify Category varchar2(10);3)修改列名Alter table productinfo rename column Category to Desperation; 4)删除列Alter table productinfoDrop (Desperation);5)表参数修改Alter table productinfoPctfree 10 pctused 70 ;6)表结构重组Alter table productinfo move;7)表重命名productinfo 改为 productRename productinfo to product;product 改为 productinfoAlter table product rename to productinfo;8)为表和列添加注释Comment on table productinfo IS '商品信息';Comment on column productinfo.ProductName IS '商品名称'; (给列加注释:SQL>comment on column 表名.列名 is '列注释';)5、删除表Drop table productinfo;断开连接:exit附录:第⼀次使⽤scottMYDB 设置为新密码设置为 123新进⼊SYS模式,在此模式中修改 Scott连接scott更改密码输⼊新⼝令时窗⼝不显⽰输⼊字符。
Oracle增删改(INSERT、DELETE、UPDATE)语句Ø简介本⽂介绍 Oracle 中的增删改语句,即 INSERT、DELETE、UPDATE 语句的使⽤。
是时候展现真正的技术了,快上车:1.插⼊数据(INSERT)2.修改数据(UPDATE)3.删除数据(DELETE)4.使⽤ MERGE INTO 语句完成增删改操作5.回滚(rollback)的使⽤6.注意事项1.插⼊数据(INSERT)u语法:INSERT INTO TABLE_NAME [(column1[, column2, …]] VALUES(value1[, value2, …]);说明:1)INSERT 数据时可以指定列名,也可不指定列名。
如果不指定列名,必须为每⼀列都提供数据,并且顺序必须与列名的顺序⼀致;如果指定列名,提供的数据需要与指定的列名顺序⼀致;2)插⼊数据时数字类型的列可直接写⼊,字符或⽇期类型的列需要加单引号;3)插⼊的数据必须满⾜约束规则,主键和 NOT NULL 的列必须提供数据。
u插⼊数据的⽅式1)⾸先,可以在 PL/SQL Developer 中使⽤ FOR UPDATE 语句1.⾸先执⾏ SELECT 语句SELECT * FROM Table01 FOR UPDATE;2.点击锁表按钮3.编辑数据 -> 记⼊改变 -> 表解锁按钮4.最后点击提交l说明:低版本的 PL/SQL Developer 操作与以上类似。
2)使⽤ INSERT INTO 语句,插⼊⼀条数据INSERT INTO Table01(Id, Name) VALUES(2, '李四'); --指定所有列COMMIT; --必须执⾏提交命令提⽰:在平常开发中,建议显⽰指定插⼊的列名,有助于提⾼代码的可读性。
INSERT INTO Table01(Id) VALUES(3); --指定部分列,其他未指定的列表必须可以为空(即 NULL)COMMIT;INSERT INTO Table01 VALUES(4, '王五'); --不指定任何列,必须按顺序插⼊所有列COMMIT;3)使⽤ INSERT INTO SELECT 语句,插⼊多条数据INSERT INTO Table02 SELECT * FROM Table01; --将 Table01 中的所有数据插⼊ Table02 中(注意:可以指定插⼊的列;Table02 必须存在;可指定 Table01 的查询条件)COMMIT;4)另外,还可以使⽤ PL/SQL Developer 中使⽤变量的⽅式(该⽅式不怎么实⽤,不做详细介绍)INSERT INTO Table01 VALUE(&Id, &Name);5)同时插⼊多条(⽀持多表插⼊)INSERT ALLINTO Table01 VALUES(10, '张10')INTO Table01 VALUES(11, '张11')INTO Table02 VALUES(20, '李20') --同时插⼊ Table02SELECT * FROM DUAL;COMMIT;注意:1.INSERT ALL INTO 在效率上,⽐逐条执⾏ INSERT INTO 语句要⾼很多;2.在使⽤ INSERT ALL INTO 语句插⼊数据时,对于主键使⽤序列插⼊式,多条 INTO 会违反约束条件(即对于同⼀个序列的多条 INTO 会产⽣相同的序列号),所以使⽤序列插⼊时,并不适⽤使⽤ INSERT ALL INTO 同时插⼊多条数据!n注意事项:1.在插⼊数值(number)和字符(char)类型时,Oracle ⽀持数值与字符相互转换,例如:字符转数值:INSERT INTO Tab01(id)VALUES('12a');--ORA-01722:⽆效数字INSERT INTO Tab01(id)VALUES('123');--插⼊成功,结果为123INSERT INTO Tab01(id)VALUES('456.56');--插⼊成功,结果为457(四舍五⼊)数值转字符:INSERT INTO Tab01(name)VALUES(123);--插⼊成功,结果为123INSERT INTO Tab01(name)VALUES(123.56);--插⼊成功,结果为123.56提⽰:虽然 Oracle ⽀持这种转换,但是并不建议使⽤该⽅式去写⼊数据,不利于理解和阅读。
oracle视图创建删除代码
创建Oracle视图需要CREAE VIEW系统权限,视图的创建语法如下:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW 视图名[(别名1[,别名2...])]
AS 子查询
[WITH CHECK OPTION [CONSTRAINT 约束名]]
[WITH READ ONLY]
其中:
OR REPLACE 表示替代已经存在的视图。
FORCE表示不管基表是否存在,创建视图。
NOFORCE表示只有基表存在时,才创建视图,是默认值。
别名是为子查询中选中的列新定义的名字,替代查询表中原有的列名。
子查询是一个用于定义视图的SELECT查询语句,可以包含连接、分组及子查询。
WITH CHECK OPTION表示进行视图插入或修改时必须满足子查询的约束条件。
后面的约束名是该约束条件的名字。
WITH READ ONLY 表示视图是只读的。
删除视图的语法如下:
DROP VIEW 视图名;
删除视图者需要是视图的建立者或者拥有DROP ANY VIEW权限。
视图的删除不影响基表,不会丢失数据。