精华内容
下载资源
问答
  • 1、备份语句数据库导出) ...2、导入语句数据库还原) ①全部导入:imp 用户名/密码@数据库实例名 full=y file=C:\Users\Administrator\Desktop\kpms.bakignore=y; ②单导入:imp username/password@ip:p..

    1、备份语句(数据库导出)

    exp username/password@ip:port/servername file="C:\Users\Administrator\Desktop\kpms.bak" full=y ignore=y;

    2、导入语句(数据库还原)

    ①全部导入:imp 用户名/密码@数据库实例名 full=y file=C:\Users\Administrator\Desktop\kpms.bak ignore=y;

    ②单表导入:imp  username/password@ip:port/servername file="C:\kpms.dmp" tables=(emp) ignore=y;

    ③只导入表结构:imp username/password@ip:port/servername file="C:\kpms.dmp" fromuser=from_username touser=to_username rows=n;

    ④只导入数据:imp username/password@ip:port/servername file="C:\kpms.dmp" fromuser=c##from_username touser=to_username statistics=none  ignore=y;

    ⑤更改表空间和用户导入:impdp  username/password@ip:port/servername directory=DATA_DIR dumpfile=example.dmp REMAP_SCHEMA=olduser:newuser remap_tablespace=oldtablespace:newtablespace,EXAMPLE_TEMP:newtablespace_temp
     

    展开全文
  • oracle数据库备份与还原语句

    万次阅读 2018-09-29 13:30:58
    1.导入语句 (1)全导入:imp 用户名/密码@实例名 full=y file=数据库备份文件路径 ignore=y; (2)单表导入:imp username/password@ip:port/servername...(3)只导入表结构:imp username/password@ip:port/s...

    1.导入语句

    (1)全导入:imp 用户名/密码@实例名 full=y file=数据库备份文件路径 ignore=y;

    (2)单表导入:imp  username/password@ip:port/servername file="E:\dmppath.dmp" tables=(emp) ignore=y;

    (3)只导入表结构:imp username/password@ip:port/servername file="E:\dmppath.dmp" fromuser=from_username touser=to_username rows=n;

    (4)只导入数据:imp username/password@ip:port/servername file="E:\dmppath.dmp" fromuser=c##from_username touser=to_username statistics=none  ignore=y;

    (5)更改表空间和用户导入:impdp  username/password@ip:port/servername directory=DATA_DIR dumpfile=example.DMP REMAP_SCHEMA=olduser:newuser remap_tablespace=oldtablespace:newtablespace,EXAMPLE_TEMP:newtablespace_temp

    2.备份语句

    exp username/password@ip:port/servername file="备份文件的路径" full=y ignore=y;

    展开全文
  • Oracle 数据库常用操作语句大全 原文:Oracle 数据库常用操作语句大全一、Oracle数据库操作 1、创建数据库 create database databasename 2、删除数据库 drop database dbname 3、备份数据库 ...
    原文: Oracle 数据库常用操作语句大全

    一、Oracle数据库操作

    1、创建数据库

         create database databasename

    2、删除数据库

         drop database dbname

    3、备份数据库

    • 完全备份

         exp demo/demo@orcl buffer=1024 file=d:\back.dmp full=y

         demo:用户名、密码

         buffer: 缓存大小

         file: 具体的备份文件地址

         full: 是否导出全部文件

         ignore: 忽略错误,如果表已经存在,则也是覆盖

    • 将数据库中system用户与sys用户的表导出

         exp demo/demo@orcl file=d:\backup\1.dmp owner=(system,sys)

    • 导出指定的表

         exp demo/demo@orcl file=d:\backup2.dmp tables=(teachers,students)

    • 按过滤条件,导出

         exp demo/demo@orcl file=d:\back.dmp tables=(table1) query=\" where filed1 like 'fg%'\"

         导出时可以进行压缩;命令后面 加上 compress=y ;如果需要日志,后面: log=d:\log.txt

    • 备份远程服务器的数据库

         exp 用户名/密码@远程的IP:端口/实例 file=存放的位置:\文件名称.dmp full=y

    4、数据库还原

         打开cmd直接执行如下命令,不用再登陆sqlplus。

    • 完整还原

         imp demo/demo@orcl file=d:\back.dmp full=y ignore=y log=D:\implog.txt

         指定log很重要,便于分析错误进行补救。

    • 导入指定表

         imp demo/demo@orcl file=d:\backup2.dmp tables=(teachers,students)

    • 还原到远程服务器

         imp 用户名/密码@远程的IP:端口/实例 file=存放的位置:\文件名称.dmp full=y

    二、Oracle表操作

    1、创建表

         create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

         根据已有的表创建新表:

         A:select * into table_new from table_old (使用旧表创建新表)

         B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle>

    2、删除表

         drop table tabname

    3、重命名表

         说明:alter table 表名 rename to 新表名

            eg:alter table tablename rename to newtablename

    4、增加字段

         说明:alter table 表名 add (字段名 字段类型 默认值 是否为空);

            例:alter table tablename add (ID int);

           eg:alter table tablename add (ID varchar2(30) default '空' not null);

    5、修改字段

         说明:alter table 表名 modify (字段名 字段类型 默认值 是否为空);

            eg:alter table tablename modify (ID number(4));

    6、重名字段

         说明:alter table 表名 rename column 列名 to 新列名 (其中:column是关键字)

            eg:alter table tablename rename column ID to newID;

    7、删除字段

         说明:alter table 表名 drop column 字段名;

            eg:alter table tablename drop column ID;

    8、添加主键

         alter table tabname add primary key(col)

    9、删除主键

         alter table tabname drop primary key(col)

    10、创建索引

         create [unique] index idxname on tabname(col….)

    11、删除索引

         drop index idxname

         注:索引是不可更改的,想更改必须删除重新建。

    12、创建视图

         create view viewname as select statement

    13、删除视图

         drop view viewname

    三、Oracle操作数据

    1、数据查询

         select <列名> from <表名> [where <查询条件表达试>] [order by <排序的列名>[ascdesc]]

    2、插入数据

         insert into 表名 values(所有列的值);

         insert into test values(1,'zhangsan',20);

         insert into 表名(列) values(对应的值);

         insert into test(id,name) values(2,'lisi');

    3、更新数据

         updateset 列=新的值 [where 条件] -->更新满足条件的记录

         update test set name='zhangsan2' where name='zhangsan'

         updateset 列=新的值 -->更新所有的数据

         update test set age =20;

    4、删除数据

    • delete from 表名 where 条件 -->删除满足条件的记录

         delete from test where id = 1;

         delete from test -->删除所有

         commit; -->提交数据

         rollback; -->回滚数据

         delete方式可以恢复删除的数据,但是提交了,就没办法了 delete删除的时候,会记录日志 -->删除会很慢很慢

    • truncate table 表名

         删除所有数据,不会影响表结构,不会记录日志,数据不能恢复 -->删除很快

    • drop table 表名

         删除所有数据,包括表结构一并删除,不会记录日志,数据不能恢复-->删除很快

    5、数据复制

    • 表数据复制

         insert into table1 (select * from table2);

    • 复制表结构

         create table table1 select * from table2 where 1>1;

    • 复制表结构和数据

         create table table1 select * from table2;

    • 复制指定字段

         create table table1 as select id, name from table2 where 1>1;

    四、数据库复制命令

          

             

            优秀是一种习惯,欢迎大家关注学习!

         

    posted on 2018-06-25 11:02 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/9223387.html

    展开全文
  • ORACLE数据库表连接以及SQL语句的执行流程 表连接的三种方式 内连接 内连接有3种类型 > 等值连接 : 使用“=”比较两张表的关联字段 >不等连接 : 使用“>,>=,<,<=,<>,!=”等不等的比较...

    ORACLE数据库表连接以及SQL语句的执行流程

    表连接的三种方式

    1. 内连接
      内连接有3种类型
      > 等值连接 : 使用“=”比较两张表的关联字段
      >不等连接 : 使用“>,>=,<,<=,<>,!=”等不等的比较符号关联两张表之间的关联字段
      >自然连接 : 在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
    2. 外连接
      返回的结果不仅包含满足关联条件的结果,还有可能包含,基表(驱动表)中的关联不上的数据,或者辅表(非驱动表)中没有关联上的数据
    3. 交叉连接
      交叉连接,是因为没有设定关联条件,即连接的两张表之间产生了笛卡尔积。

    Oracle语句执行流程

    第一步:客户端把语句发给服务器端执行

    当我们在客户端执行SQL语句时,客户端会把这条SQL语句发送给服务器端,让服务器端的进程来处理这语句。也就是说,Oracle 客户端是不会做任何的操作,他的主要任务就是把客户端产生的一些SQL语句发送给服务器端。服务器进程从用户进程把信息接收到后, 在PGA 中就要此进程分配所需内存,存储相关的信息,如:在会话内存存储相关的登录信息等。

    虽然在客户端也有一个数据库进程,但是,这个进程的作用跟服务器上的进程作用是不相同的,服务器上的数据库进程才会对SQL 语句进行相关的处理。不过,有个问题需要说明,就是客户端的进程跟服务器的进程是一一对应的。也就是说,在客户端连接上服务器后,在客户端与服务器端都会形成一个进程,客户端上的我们叫做客户端进程,而服务器上的我们叫做服务器进程。

    第二步:语句解析

    当客户端把SQL语句传送到服务器后,服务器进程会对该语句进行解析。这个解析的工作是在服务器端所进行的,解析动作又可分为很多小动作。

    1)查询高速缓存(library cache)

    服务器进程在接到客户端传送过来的SQL语句时,不会直接去数据库查询。服务器进程把这个SQL语句的字符转化为ASCII等效数字码,接着这个ASCII码被传递给一个HASH函数,并返回一个hash值,然后服务器进程将到shared pool中的library cache(高速缓存)中去查找是否存在相同的hash值。如果存在,服务器进程将使用这条语句已高速缓存在SHARED POOL的library cache中的已分析过的版本来执行,省去后续的解析工作,这便是软解析。若调整缓存中不存在,则需要进行后面的步骤,这便是硬解析。硬解析通常是昂贵的操作,大约占整个SQL执行的70%左右的时间,硬解析会生成执行树,执行计划,等等。

    所以,采用高速数据缓存的话,可以提高SQL 语句的查询效率。其原因有两方面:一方面是从内存中读取数据要比从硬盘中的数据文件中读取数据效率要高,另一方面也是因为避免语句解析而节省了时间。

    不过这里要注意一点,这个数据缓存跟有些客户端软件的数据缓存是两码事。有些客户端软件为了提高查询效率,会在应用软件的客户端设置数据缓存。由于这些数据缓存的存在,可以提高客户端应用软件的查询效率。但是,若其他人在服务器进行了相关的修改,由于应用软件数据缓存的存在,导致修改的数据不能及时反映到客户端上。从这也可以看出,应用软件的数据缓存跟数据库服务器的高速数据缓存不是一码事。

    2)语句合法性检查(data dict cache)

    当客户端把SQL语句传送到服务器后,服务器进程会对该语句进行解析。这个解析的工作是在服务器端所进行的,解析动作又可分为很多小动作。

    3)语言含义检查(data dict cache)

    若SQL 语句符合语法上的定义的话,则服务器进程接下去会对语句中涉及的表、索引、视图等对象进行解析,并对照数据字典检查这些对象的名称以及相关结构,看看这些字段、表、视图等是否在数据库中。如果表名与列名不准确的话,则数据库会就会反馈错误信息给客户端。

    所以,有时候我们写select语句的时候,若语法与表名或者列名同时写错的话,则系统是先提示说语法错误,等到语法完全正确后再提示说列名或表名错误。

    4)获得对象解析锁(control structer)

    当语法、语义都正确后,系统就会对我们需要查询的对象加锁。这主要是为了保障数据的一致性,防止我们在查询的过程中,其他用户对这个对象的结构发生改变。

    5)数据访问权限的核对(data dict cache)

    当语法、语义通过检查之后,客户端还不一定能够取得数据,服务器进程还会检查连接用户是否有这个数据访问的权限。若用户不具有数据访问权限的话,则客户端就不能够取得这些数据。要注意的是数据库服务器进程先检查语法与语义,然后才会检查访问权限。

    6)确定最佳执行计划

    当语法与语义都没有问题权限也匹配,服务器进程还是不会直接对数据库文件进行查询。服务器进程会根据一定的规则,对这条语句进行优化。在执行计划开发之前会有一步查询转换,如:视图合并、子查询解嵌套、谓语前推及物化视图重写查询等。为了确定采用哪个执行计划,Oracle还需要收集统计信息确定表的访问联结方法等,最终确定可能的最低成本的执行计划。

    不过要注意,这个优化是有限的。一般在应用软件开发的过程中,需要对数据库的sql语句进行优化,这个优化的作用要大大地大于服务器进程的自我优化。

    当服务器进程的优化器确定这条查询语句的最佳执行计划后, 就会将这条SQL语句与执行计划保存到数据高速缓存(library cache)。如此,等以后还有这个查询时,就会省略以上的语法、语义与权限检查的步骤,而直接执行SQL语句,提高SQL语句处理效率。

    第三步:绑定变量赋值

    如果SQL语句中使用了绑定变量,扫描绑定变量的声明,给绑定变量赋值,将变量值带入执行计划。若在解析的第一个步骤,SQL在高速缓冲中存在,则直接跳到该步骤。

    第四步:语句执行

    语句解析只是对SQL语句的语法进行解析,以确保服务器能够知道这条语句到底表达的是什么意思。等到语句解析完成之后,数据库服务器进程才会真正的执行这条SQL语句。

    对于SELECT语句:

    1)首先服务器进程要判断所需数据是否在db buffer存在,如果存在且可用,则直接获取该数据而不是从数据库文件中去查询数据,同时根据LRU 算法增加其访问计数;

    2)若数据不在缓冲区中,则服务器进程将从数据库文件中查询相关数据,并把这些数据放入到数据缓冲区中(buffer cache)。

    其中,若数据存在于db buffer,其可用性检查方式为:查看db buffer块的头部是否有事务,如果有事务,则从回滚段中读取数据;如果没有事务,则比较select的scn和db buffer块头部的scn,如果前者小于后者,仍然要从回滚段中读取数据;如果前者大于后者,说明这是一非脏缓存,可以直接读取这个db buffer块的中内容

    对于DML语句(insert、delete、update):

    1)检查所需的数据库是否已经被读取到缓冲区缓存中。如果已经存在缓冲区缓存,则直接执行步骤3;

    2)若所需的数据库并不在缓冲区缓存中,则服务器将数据块从数据文件读取到缓冲区缓存中;

    3)对想要修改的表取得的数据行锁定(Row Exclusive Lock),之后对所需要修改的数据行取得独占锁;

    4)将数据的Redo记录复制到redo log buffer;

    5)产生数据修改的undo数据;

    6)修改db buffer;

    7)dbwr将修改写入数据文件;

    其中,第2步,服务器将数据从数据文件读取到db buffer经经历以下步骤:

    1)首先服务器进程将在表头部请求TM锁(保证此事务执行过程其他用户不能修改表的结构),如果成功加TM锁,再请求一些行级锁(TX锁),如果TM、TX锁都成功加锁,那么才开始从数据文件读数据。

    2)在读数据之前,要先为读取的文件准备好buffer空间。服务器进程需要扫描LRU list寻找free db buffer,扫描的过程中,服务器进程会把发现的所有已经被修改过的db buffer注册到dirty list中。如果free db buffer及非脏数据块缓冲区不足时,会触发dbwr将dirty buffer中指向的缓冲块写入数据文件,并且清洗掉这些缓冲区来腾出空间缓冲新读入的数据。

    3)找到了足够的空闲buffer,服务器进程将从数据文件中读入这些行所在的每一个数据块(db block)(DB BLOCK是ORACLE的最小操作单元,即使你想要的数据只是DB BLOCK中很多行中的一行或几行,ORACLE也会把这个DB BLOCK中的所有行都读入Oracle DB BUFFER中)放入db buffer的空闲的区域或者覆盖已被挤出LRU list的非脏数据块缓冲区,并且排列在LRU列表的头部,也就是在数据块放入db buffer之前也是要先申请db buffer中的锁存器,成功加锁后,才能读数据到db buffer。

    若数据块已经存在于db buffer cache(有时也称db buffer或db cache),即使在db buffer中找到一个没有事务,而且SCN比自己小的非脏缓存数据块,服务器进程仍然要到表的头部对这条记录申请加锁,加锁成功才能进行后续动作,如果不成功,则要等待前面的进程解锁后才能进行动作(这个时候阻塞是tx锁阻塞)。

    在记redo日志时,其具体步骤如下:

    1)数据被读入到db buffer后,服务器进程将该语句所影响的并被读入db buffer中的这些行数据的rowid及要更新的原值和新值及scn等信息从PGA逐条的写入redo log buffer中。在写入redo log buffer之前也要事先请求redo log buffer的锁存器,成功加锁后才开始写入。

    2)当写入达到redo log buffer大小的三分之一或写入量达到1M或超过三秒后或发生检查点时或者dbwr之前发生,都会触发lgwr进程把redo log buffer的数据写入磁盘上的redo file文件中(这个时候会产生log file sync等待事件)。

    3)已经被写入redo file的redo log buffer所持有的锁存器会被释放,并可被后来的写入信息覆盖,redo log buffer是循环使用的。Redo file也是循环使用的,当一个redo file写满后,lgwr进程会自动切换到下一redo file(这个时候可能出现log file switch(check point complete)等待事件)。如果是归档模式,归档进程还要将前一个写满的redo file文件的内容写到归档日志文件中(这个时候可能出现log file switch(archiving needed)。

    在为事务建立undo信息时,其具体步骤如下:

    1)在完成本事务所有相关的redo log buffer之后,服务器进程开始改写这个db buffer的块头部事务列表并写入scn(一开始scn是写在redo log buffer中的,并未写在db buffer)。

    2)然后copy包含这个块的头部事务列表及scn信息的数据副本放入回滚段中,将这时回滚段中的信息称为数据块的“前映像”,这个“前映像”用于以后的回滚、恢复和一致性读。(回滚段可以存储在专门的回滚表空间中,这个表空间由一个或多个物理文件组成,并专用于回滚表空间,回滚段也可在其它表空间中的数据文件中开辟)。

    在修改信息写入数据文件时,其具体步骤如下:

    1)改写db buffer块的数据内容,并在块的头部写入回滚段的地址。

    2)将db buffer指针放入dirty list。如果一个行数据多次update而未commit,则在回滚段中将会有多个“前映像”,除了第一个“前映像”含有scn信息外,其他每个"前映像"的头部都有scn信息和"前前映像"回滚段地址。一个update只对应一个scn,然后服务器进程将在dirty list中建立一条指向此db buffer块的指针(方便dbwr进程可以找到dirty list的db buffer数据块并写入数据文件中)。接着服务器进程会从数据文件中继续读入第二个数据块,重复前一数据块的动作,数据块的读入、记日志、建立回滚段、修改数据块、放入dirty list。

    3)当dirty queue的长度达到阀值(一般是25%),服务器进程将通知dbwr把脏数据写出,就是释放db buffer上的锁存器,腾出更多的free db buffer。前面一直都是在说明oracle一次读一个数据块,其实oracle可以一次读入多个数据块(db_file_multiblock_read_count来设置一次读入块的个数)

    当执行commit时,具体步骤如下:

    1)commit触发lgwr进程,但不强制dbwr立即释放所有相应db buffer块的锁。也就是说有可能虽然已经commit了,但在随后的一段时间内dbwr还在写这条sql语句所涉及的数据块。表头部的行锁并不在commit之后立即释放,而是要等dbwr进程完成之后才释放,这就可能会出现一个用户请求另一用户已经commit的资源不成功的现象。

    2)从Commit和dbwr进程结束之间的时间很短,如果恰巧在commit之后,dbwr未结束之前断电,因为commit之后的数据已经属于数据文件的内容,但这部分文件没有完全写入到数据文件中。所以需要前滚。由于commit已经触发lgwr,这些所有未来得及写入数据文件的更改会在实例重启后,由smon进程根据重做日志文件来前滚,完成之前commit未完成的工作(即把更改写入数据文件)。

    3)如果未commit就断电了,因为数据已经在db buffer更改了,没有commit,说明这部分数据不属于数据文件。由于dbwr之前触发lgwr也就是只要数据更改,(肯定要先有log)所有dbwr在数据文件上的修改都会被先一步记入重做日志文件,实例重启后,SMON进程再根据重做日志文件来回滚。

    其实smon的前滚回滚是根据检查点来完成的,当一个全部检查点发生的时候,首先让LGWR进程将redologbuffer中的所有缓冲(包含未提交的重做信息)写入重做日志文件,然后让dbwr进程将dbbuffer已提交的缓冲写入数据文件(不强制写未提交的)。然后更新控制文件和数据文件头部的SCN,表明当前数据库是一致的,在相邻的两个检查点之间有很多事务,有提交和未提交的。

    当执行rollback时,具体步骤如下:

    服务器进程会根据数据文件块和db buffer中块的头部的事务列表和SCN以及回滚段地址找到回滚段中相应的修改前的副本,并且用这些原值来还原当前数据文件中已修改但未提交的改变。如果有多个”前映像“,服务器进程会在一个“前映像”的头部找到“前前映像”的回滚段地址,一直找到同一事务下的最早的一个“前映像”为止。一旦发出了commit,用户就不能rollback,这使得commit后dbwr进程还没有全部完成的后续动作得到了保障。

    第五步:提取数据

    当语句执行完成之后,查询到的数据还是在服务器进程中,还没有被传送到客户端的用户进程。所以,在服务器端的进程中,有一个专门负责数据提取的一段代码。他的作用就是把查询到的数据结果返回给用户端进程,从而完成整个查询动作。

    从这整个查询处理过程中,我们在数据库开发或者应用软件开发过程中,需要注意以下几点:

    一是要了解数据库缓存跟应用软件缓存是两码事情。数据库缓存只有在数据库服务器端才存在,在客户端是不存在的。只有如此,才能够保证数据库缓存中的内容跟数据库文件的内容一致。才能够根据相关的规则,防止数据脏读、错读的发生。而应用软件所涉及的数据缓存,由于跟数据库缓存不是一码事情,所以,应用软件的数据缓存虽然可以提高数据的查询效率,但是,却打破了数据一致性的要求,有时候会发生脏读、错读等情况的发生。所以,有时候,在应用软件上有专门一个功能,用来在必要的时候清除数据缓存。不过,这个数据缓存的清除,也只是清除本机上的数据缓存,或者说,只是清除这个应用程序的数据缓存,而不会清除数据库的数据缓存。

    二是绝大部分SQL语句都是按照这个处理过程处理的。我们DBA或者基于Oracle数据库的开发人员了解这些语句的处理过程,对于我们进行涉及到SQL语句的开发与调试,是非常有帮助的。有时候,掌握这些处理原则,可以减少我们排错的时间。特别要注意,数据库是把数据查询权限的审查放在语法语义的后面进行检查的。所以,有时会若光用数据库的权限控制原则,可能还不能满足应用软件权限控制的需要。此时,就需要应用软件的前台设置,实现权限管理的要求。而且,有时应用数据库的权限管理,也有点显得繁琐,会增加服务器处理的工作量。因此,对于记录、字段等的查询权限控制,大部分程序涉及人员喜欢在应用程序中实现,而不是在数据库上实现。

    Oracle SQL语句执行顺序

    (8)SELECT (9) DISTINCT (11) <select_list>

    (1) FROM <left_table>

    (3) <join_type> JOIN <right_table>

    (2) ON <join_condition>

    (4) WHERE <where_condition>

    (5) GROUP BY <group_by_list>

    (6) WITH {CUBE | ROLLUP}

    (7) HAVING <having_condition>

    (10) ORDER BY <order_by_list>

    1)FROM:对FROM子句中的表执行笛卡尔积(交叉联接),生成虚拟表VT1。

    2)ON:对VT1应用ON筛选器,只有那些使为真才被插入到TV2。

    3)OUTER (JOIN):如果指定了OUTER JOIN(相对于CROSS JOIN或INNER JOIN),保留表中未找到匹配的行将作为外部行添加到VT2,生成TV3。如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表位置。

    4)WHERE:对TV3应用WHERE筛选器,只有使为true的行才插入TV4。

    5)GROUP BY:按GROUP BY子句中的列列表对TV4中的行进行分组,生成TV5。

    6)CUTE|ROLLUP:把超组插入VT5,生成VT6。

    7)HAVING:对VT6应用HAVING筛选器,只有使为true的组插入到VT7。

    8)SELECT:处理SELECT列表,产生VT8。

    9)DISTINCT:将重复的行从VT8中删除,产品VT9。

    10)ORDER BY:将VT9中的行按ORDER BY子句中的列列表顺序,生成一个游标(VC10),生成表TV11,并返回给调用者。

    以上每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有最后一步生成的表才会会给调用者。如果没有在查询中指定某一个子句,将跳过相应的步骤。

    展开全文
  • 1.创建空间; 2.创建角色; 3.创建用户并授权; 4.还原数据库文件;
  • 点击上方SQL数据库开发,关注获取SQL视频教程SQL专栏SQL数据库基础知识汇总SQL数据库高级知识汇总来源:Crazy Strugglewww.cnblogs.com/1312mn/archive/2017/11/09/7799732.html一、Oracle数据库操作1、创建数据库...
  • oracle数据库管理常用语句

    千次阅读 2017-12-15 14:30:32
    oracle数据库管理常用语句 1.删除用户及其用户下面的所有对象 drop user branch cascade; 2.删除空间及其空间里的所有内容 drop tablespace center INCLUDING CONTENTS; 3.删除空间同时删除外键 drop ...
  • 一、Oracle数据库操作 1、创建数据库 create database databasename; 2、删除数据库 drop database dbname; 3、备份数据库 完全备份  exp demo/demo@orcl buffer=1024 file=d:\back.dmp full=y  demo:...
  • 1、 什么是数据库?所谓的数据库其实就是数据的集合。用户可以对集合中的数据进行新增、查询、更新、删除等操作。数据库是以一定方式存储在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据...
  • Oracle数据库有物理结构和逻辑结构数据库的物理结构数据库中的操作系统文件的集合。数据库的物理结构由数据文件、控制文件和重做日志文件组成。 数据文件:数据文件是数据的存储仓库。 联机重做日志文件:联机...
  • Oracle数据库语句大全

    2021-09-27 08:44:08
    一、Oracle数据库操作 1、创建数据库 create database databasename; 2、删除数据库 drop database dbname; 3、备份数据库 完全备份 exp demo/demo@orcl buffer=1024 file=d:\back.dmp full=y; demo:用户名...
  • Oracle的存储结构分为:物理存储结构和逻辑存储结构。一、物理存储结构:指硬盘上存在的文件数据文件(data file)一个数据库可以由多个数据文件组成的,数据文件是真正存放数据库数据的。一个数据文件就是一个操作...
  • oracle数据库基本语句一、Oracle数据库操作1、创建数据库create database databasename2、删除数据库drop database dbname3、备份数据库完全备份exp demo/demo@orcl buffer=1024 file=d:\back.dmp full=ydemo:...
  • Oracle数据库体系结构

    2019-07-10 10:26:13
    Oracle数据库体系结构: 上次给大家介绍了安装oracle,在使用oracle之前,我们一定要对oracle的体系结构有深入的理解,与之前我们学习过的sqlserver体系结构是不一样的,所以对于我们来说是一个全新的内容。 ...
  • alter table upm_dict_items enable row movement; flashback table upm_dict_items to timestamp to_timestamp('2015-12-7 19:00:00','yyyy-mm-dd hh24:mi:ss');

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,293
精华内容 4,117
关键字:

oracle还原数据库表结构语句