oracle数据库工作原理

oracle数据库工作原理
oracle数据库工作原理

oracle工作原理

(2007-05-18 08:47:40)

转载▼

分类:计算机技术

第一篇Oracle架构总览

先让我们来看一张图

这张就是Oracle 9i的架构全图。看上去,很繁杂。是的,是这样的。现在让我们来梳理一下:

一、数据库、表空间、数据文件

1.数据库

数据库是数据集合。Oracle是一种数据库管理系统,是一种关系型的数据库管理系统。

通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。也即物理数据、内存、操作系统进程的组合体。

数据库的数据存储在表中。数据的关系由列来定义,即通常我们讲的字段,每个列都有一个列名。数据以行(我们通常称为记录)的方式存储在表中。表之间可以相互关联。以上就是关系模型数据库的一个最简单的描述。

当然,Oracle也是提供对面象对象型的结构数据库的最强大支持,对象既可以与其它对象建立关系,也可以包含其它对象。关于OO型数据库,以后利用专门的篇幅来讨论。一般情况下我们的讨论都基于关系模型。

2.表空间、文件

无论关系结构还是OO结构,Oracle数据库都将其数据存储在文件中。数据库结构提供对数据文件的逻辑映射,允许不同类型的数据分开存储。这些逻辑划分称作表空间。

表空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。

为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序。例如:USER表空间供一般用户使用,RBS表空间供回滚段使用。一个表空间只能属于一个数据库。

每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能属于一个表空间。在Oracle7.2以后,数据文件创建可以改变大小。创建新的表空间需要创建新的数

据文件。

数据文件一旦加入到表空间中,就不能从这个表空间中移走,也不能与其它表空间发生联系。

如果数据库存储在多个表空间中,可以将它们各自的数据文件存放在不同磁盘上来对其进行物理分割。在规划和协调数据库I/O请求的方法中,上述的数据分割是一种很重要的方法。数据库、表空间、文件之间的关系如下图所示:

二、数据库实例

为了访问数据库中的数据,Oracle使用一组所有用户共享的后台进程。此外,还有一些存储结构(统

称为System Gloabl Area,即SGA),用来存储最近从数据库查询的数据。数据块缓存区和SQL共享池(Shared SQL Pool)是SGA的最大部分,一般占SGA内存的95%以上。通过减少对数据文件的I/O次数,这些存储区域可以改善数据库的性能。

数据库实例(instance)也称作服务器(server),是用来访问数据库文件集的存储结构及后台进程的集合。一个数据库可以被多个实例访问(这是Oracle并行服务器选项)。实例与数据库的关系如下图所示:

决定实例大小及组成的参数存储的init.ora文件中(在9i中是spfile)。实例启动时需要读这个文件,并且在运行时可以由数据库管理员修改。对该文件的任何修改都只有在下一次启动时才启作用。实例的init.ora文件件通常包含实例的名字:如果一个实例名为orcl,那么init.ora文件通常被命名为

initorcl.ora。另一个配置文件config.ora用来存放在数据库创建后就不再改变的变量值(如数据库的块

大小)。实例的config.ora文件通常也包含该实例的名字:如果实例的名字为orcl,则config.ora一般

将被命名为configorcl.ora。为了便于使用config.ora文件的设置值,在实例的init.ora文件中,该文件必须通过IFILE参数作为包含文件列出。

-----------------------------------------

注:关于初始化参数文件,再另起篇幅详细介绍。

-----------------------------------------

通过以上对数据库及实例的介绍,Oracle数据库结构可分为三个范畴:

数据库内部结构(如表)

存储区内部的结构(包括共享存储区和进程)

数据库的外部结构

三、数据库的内部结构

即Oracle数据的逻辑表现层,也称oracle schema,包括以下这些内容:

表、列、约束条件、数据类型(包括抽象数据类型)

分区与子分区

用户与模式

索引、簇和散列簇

视图

序列

过程、函数、软件包和触发器

同义词

权限及角色

数据库链接

段、盘区和块

回滚段

快照与显形图

各部分的具体介绍以后将在Oralce schema栏目中讨论。

四、Oracle内部存储结构

包括内存缓冲池与后台进程:

1.系统全局区(SGA),主要包括:

a. 数据块缓存区

数据块缓存区(data block buffer cache)是S G A中的一个高速缓存区域,用来存储从数据库中读取数据

段的数据块(如表、索引和簇)。数据块缓存区的大小由数据库服务器i n i t . o r a文件中的

DB_LOCK_BUFFERS参数决定(用数据库块的个数表示)。在调整和管理数据库时,调整数据块缓存区的大小是一个重要的部分。

因为数据块缓存区的大小固定,并且其大小通常小于数据库段所使用的空间,所以它不能一次装载下内存中所有的数据库段。通常,数据块缓存区只是数据库大小的1 %~2 %,O r a c l e使用最近最少使用( L R U,least recently used)算法来管理可用空间。当存储区需要自由空间时,最近最少使用块将被移出,新数据块将在存储区代替它的位置。通过这种方法,将最频繁使用的数据保存在存储区中。

然而,如果S G A的大小不足以容纳所有最常使用的数据,那么,不同的对象将争用数据块缓存区中的空间。当多个应用程序共享同一个S G A时,很有可能发生这种情况。此时,每个应用的最近使用段都将与其他应用的最近使用段争夺S G A中的空间。其结果是,对数据块缓存区的数据请求将出现较低的命中率,导致系统性能下降。

b. 字典缓存区

数据库对象的信息存储在数据字典表中,这些信息包括用户帐号数据、数据文件名、段名、盘区位置、表说明和权限,当数据库需要这些信息(如检查用户查询一个表的授权)时,将读取数据字典表并且将返回的数据存储在字典缓存区的S G A中。

数据字典缓存区通过最近最少使用(LRU) 算法来管理。字典缓存区的大小由数据库内部管理。字典缓存区是S Q L共享池的一部分,共享池的大小由数据库文件i n i t . o r a中的S H A R E D_PO O L_S I Z E参数来设置。

如果字典缓存区太小,数据库就不得不反复查询数据字典表以访问数据库所需的信息,这些查询称为循环调用(recuesive call),这时的查询速度相对字典缓存区独立完成查询时要低。

c. 重做日志缓冲区

重做项描述对数据库进行的修改。它们写到联机重做日志文件中,以便在数据库恢复过程中用于向前滚动操作。然而,在被写入联机重做日志文件之前,事务首先被记录在称作重做日志缓冲区(redo log buff e r )的S G A中。数据库可以周期地分批向联机重做日志文件中写重做项的内容,从而优化这个操作。

重做日志缓冲区的大小(以字节为单位)由i n i t . o r a文件中的L O G _ B U F F E R参数决定。

d. SQL共享池

S Q L共享池存储数据字典缓存区及库缓存区(library cache),即对数据库进行操作的语句信息。当数据块缓冲区和字典缓存区能够共享数据库用户间的结构及数据信息时,库缓存区允许共享常用的S Q L语句。

S Q L共享池包括执行计划及运行数据库的S Q L语句的语法分析树。在第二次运行(由任何用户)相同的S Q L语句时,可以利用S Q L共享池中可用的语法分析信息来加快执行速度。

S Q L共享池通过L R U算法来管理。当S Q L共享池填满时,将从库缓存区中删掉最近最少使用的执行路径和语法分析树,以便为新的条目腾出空间。如果S Q L共享池太小,语句将被连续不断地再装入到库缓存区,从而影响操作性能。

S Q L共享池的大小(以字节为单位)由i n i t . o r a文件参数S H A R E D _ P O O L _ S I Z E决定。

e. 大池

大池( L a rge Pool)是一个可选内存区。如果使用线程服务器选项或频繁执行备份/恢复操作,只要创建一个大池,就可以更有效地管理这些操作。大池将致力于支持S Q L大型命令。利用大池,就可以防止这些S Q L大型命令把条目重写入S Q L共享池中,从而减少再装入到库缓存区中的语句数量。大池的大小(以字节为单位)通过init. ora文件的L A R G E _ P O O L _ S I Z E参数设置,用户可以使用i n i t . o r a文件的L A R G E _ P O O L _ M I N _ A L L O C参数设置大池中的最小位置。O r a c l e 8 i 已不用这个参数。

作为使用L a rge Pool 的一种选择方案,可以用i n i t . o r a文件的S H A R E D _ P O O L _R E S E RV E D _ S I Z E参数为S Q L大型语句保留一部分S Q L共享池。

f. Java 池

由其名字可知,Java 池为J a v a命令提供语法分析。Java 池的大小(以字节为单位)通过在O r a c l e 8 i引入的i n i t . o r a文件的J AVA _ P O O L _ S I Z E参数设置。i n i t . o r a文件的J AVA _ P O O L _ S I Z E参数缺省设置为1 0 M B。

可以在S G A中创建多个缓冲池,能够用多个缓冲池把大数据集与其他的应用程序分开,以减少它们争夺数据块缓存区内相同资源的可能性。对于创建的每一个缓冲池,都要规定其L R U锁存器的大小和数量。缓冲区的数量必须至少比L R U锁存器的数量多5 0倍。

创建缓冲池时,需要规定保存区(keep area)的大小和再循环区(recycle area)的大小。与S Q L共享池的保留区一样,保存区保持条目,而再循环区则被频繁地再循环使用。可以通过B U F F E R _ P O O L _ K E E P参数规定来保存区的大小。例如:

保存和再循环缓冲池的容量减少了数据块缓冲存储区中的可用空间(通过D B _ B L O C K _B U F F E R S参数设置)。对于使用一个新缓冲池的表,通过表的s t o r a g e子句中的b u ff e r _ p o o l参数来规定缓冲池的名字。例如,如果需要从内存中快速删除一个表,就把它赋予R E C Y C L E池。缺省池叫作D E FA U LT,这样就能在以后用alter table命令把一个表转移到D E FA U LT池。

2.程序全局区( P G A )。

程序全局区( P G A,Program Global Area)是存储区中的一个区域,由一个O r a c l e用户进程

所使用,P G A中的内存不能共享。

3.环境区

4.后台进程

数据库拥有多个后台进程,其数量取决于数据库的配置。这些进程由数据库管理,它们只需要进行很少的管理。

每个后台进程创建一个跟踪文件。在实例操作期间保存跟踪文件。后台进程跟踪文件的命名约定和位置随操作系统和数据库版本而不同。一般来说,跟踪文件含有后台进程名或后台进程的操作系统进程ID。可以设置初始化参数文件的BACKGROUND_DUMP_DEST参数来规

定后台进程跟踪文件的位置,但是有些版本的O r a c l e忽略这种设置。排除数据库故障时,跟踪文件就显得非常重要。影响后台进程的严重问题通常记录在数据库的警告日志上。

警告日志通常位于BACKGROUND_DUMP_DEST目录下。一般来说,这个目录是

ORACLE_BASE目录下的/ADMIN/INSTANCE_NAME/BDUMP目录。

当启动一个数据库时,SMON(System Monitor,系统监控程序)进程执行所需的实例恢复

操作(使用联机重做日志文件),它也可以清除数据库,取消系统不再需要的事务对象。

S M O N的另一个用途是:将邻接的自由盘区组成一个较大的自由盘区。对于某些表空间,数据库管理员必须手工执行自由空间合并;S M O N只合并表空间中的自由空间,这些表空间的缺省

p c t i n c r e a s e存储值为非零。

b. PMON

P M O N (进程监控程序)后台进程清除失败用户的进程,释放用户当时正在使用的资源。当一个持有锁的进程被取消时,其效果是显而易见的,P M O N负责释放锁并使其可以被其他用户使用。同S M O N一样,P M O N周期性地唤醒检测它是否需要被使用。

c. DBWR

D B W R (数据库写入程序)后台进程负责管理数据块缓存区及字典缓存区的内容。它以批方式把修改块从S G A写到数据文件中。

尽管每一个数据库实例只有一个S M O N和一个P M O N进程在运行,但是根据平台和操作系统的不同,用户可以同时拥有多个D B W R进程。使用多个D B W R进程有助于在进行大的操作期间减少D B W R 中的冲突。所需D B W R 进程的数量由数据库的i n i t . o r a 文件中的D B _ W R I T E R _ P R O C E S S E S参数决定。如果系统支持异步I / O,可以用多个DBWR I/O 从( s l a v e )进程创建一个D B W R进程。DBWR I/O 从进程的数量由i n i t . o r a文件的D B W R _ I / O _ S L AV E S参数设置。

如果创建多个D B W R进程,这些进程就不叫做D B W R,它们将有一个数字分量。例如,如果创建5个D B W R进程,进程的操作系统名就可能是D B W 0、D B W 1、D B W 2、D B W 3和D B W 4。

d. LGWR

L G W R (日志写入程序)后台进程负责把联机重做日志缓冲区的内容写入联机重做日志文件。L G W R分批将日志条目写入联机重做日志文件。重做日志缓冲区条目总是包含着数据库的最新状态,这是因为D B W R进程可以一直等待到把数据块缓冲区中的修改数据块写入到数据文件中。

L G W R是数据库正常操作时唯一向联机重做日志文件写入内容并从重做日志缓冲区直接读取内容的进程。与D B W R对数据文件执行的完全随机访问相反,联机重做日志文件以序列形式写入。如果联机重做日志文件是镜像文件,L G W R同时向镜像日志文件中写内容。

对于O r a c l e 8,可以创建多个LGWR I/O从进程以改善向联机重做日志文件的写入性能,其个数由数据库的i n i t . o r a文件的L G W R _ I O _ S L AV E S参数决定。

在O r a c l e 8 i中,这个参数已不能用,LGWR I/O从进程由D B W R _ I O _ S L AV E S设置值派生

而来。

e. CKPT

C K P T (检查点进程)用来减少执行实例恢复所需的时间。检查点使

D B W R把上一个检查点以后的全部已修改数据块写入数据文件,并更新数据文件头部和控制文件以记录该检查点。

当一个联机重做日志文件被填满时,检查点进程会自动出现。可以用数据库实例的i n i t . o r a文件中的L O G _ C H E C K P O I N T _ I N T E RVA L参数来设置一个频繁出现的检查点。

C K P T后台进程把早期数据库版本中L G W R的两个功能(向检查点发信号及复制日志内容)分成两个后台进程。当数据库实例的i n i t . o r a文件中的C H E C K P O I N T _ P R O C E S S参数被设置为T R U E时,就可以建立C K P T后台进程。

f. ARCH

L G W R后台进程以循环方式向联机重做日志文件写入;当填满第一个日志文件后,就开始向第二个日志文件写入;第二个日志文件填满后,再向第三个日志文件写入。一旦最后一个重做日志文件填满,L G W R就开始重写第一个重做日志文件的内容。

当O r a c l e以A R C H I V E L O G (归档日志)模式运行时,数据库在开始重写重做日志文件之前先对其进行备份。这些归档的重做日志文件通常写入一个磁盘设备中。也可以直接写入磁带设备中,但是这往往要增加操作员的劳动强度。

这种归档功能由A R C H (归档进程)后台进程完成,利用该性能的数据库在处理大数据事务时将遇到重做日志磁盘冲突问题,这是因为当L G W R准备写入一个重做日志文件时, A R C H正准备读取

另一个。如果归档日志目标磁盘写满,数据库还将遇到数据库锁定问题。此时,A R C H冻结,禁止L G W R写入;从而禁止在数据库中出现进一步的事务处理;这种情况一起延续到归档重做日志文件的空间清空为止。

对于O r a c l e 8,可以创建多个ARCH I/O从进程以改善对归档重做日志文件的写入功能。在O r a c l e 8 . 0中,ARCH I/O从进程的个数由数据库的i n i t . o r a文件中的A R C H _ I O _ S L AV E S参数决定。在O r a c l e 8 i中,这个参数已不能用,A R C H _ I O _ S L AV E S设置值由D B W R _ I O _ S L AV E S设置值派生。

g. RECO

R E C O (恢复进程)后台进程用于解决分布式数据库中的故障问题。R E C O进程试图访问存在疑问的分布式事务的数据库并解析这些事务。只有在平台支持Distributed Option(分布式选项)且i n i t . o r a 文件中的D I S T R I B U T E D _ T R A N S A C T I O N S参数大于零时才创建这个进程。

h. SNPn

O r a c l e的快照刷新及内部作业队列调度依赖于它们执行的后台进程(快照进程)。这些后台进程的名字以字母S N P开头,以数字或字母结束。为一实例所创建的S N P进程的个数由数据库的i n i t . o r a文件中的J O B _ Q U E U E _ P R O C E S S E S 参数决定(在O r a c l e 7 中,该参数名为S N A P S H O T _ R E F R E S H _ P R O C E S S E S )。

i. LCKn

当采用O r a c l e并行服务器选项时,多个L C K (锁定进程)后台进程(命名为L C K 0 ~ L C K 9 )用于解决内部实例的锁定问题。L C K进程的个数由G C _ L C K _ P R O C S参数决定。

j . Dn n n

D n n n(调度程序进程)是M T S结构的一部分;这些进程有助于减少处理多重连接所需要的资源。对于数据库服务器支持的每一个协议必须至少创建一个调度程序进程,调度程序进程根据S Q L * N e t (或N e t 8 )的配置在数据库启动时创建,在数据库打开后可以创建或取消。

k. Sn n n

创建Sn n n(服务器进程)来管理需要专用服务器的数据库连接。服务器进程可以对数据文件进行I / O 操作。

l. P n n n

如果启动数据库中的并行查询选项,一个查询的资源要求可以分布在多个处理器中。当实例启动由init. ora文件的PA R A L L E L _ M I N _ S E RV E R S参数确定时,指定数目的并行查询服务器进程就启动。每一个这样的进程都将出现在操作系统级。需要并行操作的进程越多,启动的并行查询服务器进程就越多。每个并行查询服务器进程在操作系统级将有一个P 0 0 0、P 0 0 1、P 0 0 2这样的名字。并行查询服务器进程的最大数量由init. ora 文件的PA R A L L E L _ M A X _S E RV E R S参数确定。

五、Oracle的外部结构

1. 重做日志

O r a c l e保存所有数据库事务的日志。这些事务被记录在联机重做日志文件(online redo logf i l e )中。当数据库被破坏时,这些日志文件能够以正确顺序恢复数据库事务。重做日志文件信息存储在数据库数据文件的外部。

重做日志文件也可以让O r a c l e优化向磁盘写入数据的方式。当数据库中出现一个事务时,就把该事务输入到重做日志缓冲区;同时受该事务影响的数据块不会立即写入磁盘。

每个O r a c l e数据库都有两个或更多的联机重做日志文件。O r a c l e以循环方式向联机重做日志文件写入:第一个日志文件被填满后,就向第二个日志文件写入,然后依次类推。当所有联机重做日志文件都被填满时,就又回到第一个日志文件,用新事务的数据对其进行重写。如果数据库正以A R C H I V E L O G模式运行,在重写联机重做日志文件前,数据库将先对其进行备份。任何时候都可以用这些归档重做日志文件来恢复数据库的任何部分。

重做日志文件可以被数据库镜像(复制)。镜像联机重做日志文件不依赖操作系统或操作环境的硬件性能就可以对重做日志文件进行镜像。

2. 控制文件

数据库的全局物理结构由其控制文件(control file)维护。控制文件记录数据库中所有文件的控制信息。控制文件维护内部的一致性并引导恢复操作。

由于控制文件对数据库至关重要,所以联机存储着多个拷贝。这些文件一般存储在各个不同的磁盘上,以便将因磁盘失效引起的潜在危险降至最低限度。创建数据库时,同时就提供与之对应的控制文件。

数据库控制文件的名字通过init. ora文件的C O N T R O L _ F I L E S参数规定。尽管这是一个i n i t . o r a参数,但是C O N TO R L _ F I L E S参数通常用c o n f i g . o r a文件规定,因为它很少变化。如果需要给数据库添加一个新的控制文件,可关闭实例,把已存在的一个控制文件复制到新的地址,把新的地址添加到C O N T R O L _ F I L E S参数设置值上,并重新启动这个实例。

3. 跟踪文件与警告日志

在实例中运行的每一个后台进程都有一个跟踪文件与之相连。跟踪文件记载后台进程遇到的重大事件的信息。除了跟踪文件外,O r a c l e还有一个称作警告日志(alert log)的文件,警告日志记录数据库文件运行中主要事件的命令及结果。例如,表空间的创建、重做日志的转换、操作系统的恢复、数据库的建立等信息都记录在警告日志中。警告日志是数据库每日管理的重要资源,当需要查找主要失败原因时,跟踪文件就非常有用。

应经常监控警告日志。警告日志的条目将通知你数据库操作期间遇到的任何问题,其中包括出现的任何O R A _ 0 6 0 0内部错误。为使警告日志便于使用,最好是每天能自动对其重新命名。例如,如果警告日志称作a l e r t _ o r c l . l o g,可以对它重新命名,以便其文件名包括当前日期。下次O r a c l e 要写该警告日志时,将找不到具有a l e r t _ o r c l . l o g文件名的文件,因此数据库将创建一个新的文件名。这样,除了有以前的警告日志外,还有一个当前的警告日志( a l e r t _ o r c l . l o g )。用这种方式区分警告日志条目就可以使对警告日志条目的分析更有效。

数据库及Oracle基础知识培训自学教材试题_V1 0

Oracle初级试题 一、选择题(20% 不定项每题2分) 1.对于Oracle用户方案下,根据模式/映像,请选出不属于模式的对象(D) A.表B.索引C.视图D.约束 2.在客户端配置哪个文件,可以使客户端访问oracle server?(A) A.tnsnames.ora B.sqlnet.ora C.listener.ora D.init.ora 3.搜索列中的数据,但只记得部分字符串,通常可以用以下哪种运算?(C) A.in B.between C.like D.exists 4.如从表中删除了一条记录,以下哪个语句可以保存数据库中的改变?(B) A.savepoint B.commit C.rollback D.update 5.下面关于视图的说法,请选出正确的(ABCD) A.一个视图可以创建为只读 B.一个视图可以用来连接两张或更多的表而被创建 C.在视图中不能含有order by子句 D.在视图中不能含有group by子句 6.在select语句中包含了where子句,请问group by子句可以放在哪里?(D) A.where子句前面 B.from子句前面 C.order by子句后面 D.where子句后面 7.关于having子句,以下说法正确的是:(C) A.having与where相同 B.having用于单行条件查询 C.having用于已分组的条件查询 D.having子句必须紧跟在where子句后面使用 8.能够在外部表上进行的操作有:(A) A.select B.update C.insert D.delete 9.在更改索引的操作(alter index)中,以下哪些子句可以定期优化索引?(AC) A.rename B.coalesce C.rebuild D.deallocate unused 10.请选出能够产生锁的操作:(AB) A.select … for update B.commit C.rollback D.lock table 二、填充题(20% 每空4分) 1.数据库最常用的DML操作有SELECT、UPDATE 、DELETE 和INSERT 等(要求写出操作命令)。 2.假设有两个数据N1和N2,请用函数实现如下算法:当N1>N2时,返回“大于”; 当N1=N2时,返回“等于”;当N1N2 then Return ‘大于’;

ORACLE常用SQL语句大全

ORACLE常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mssql7backup/MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not nul l],..) 根据已有的表创建新表: A:select * into table_new from table_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle> 5、说明:删除表 drop table tablename

6、说明:增加一个列,删除一个列 A:alter table tabname add column col type B:alter table tabname drop column colname 注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、添加主键: Alter table tabname add primary key(col) 删除主键: Alter table tabname drop primary key(col) 8、创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、创建视图:create view viewname as select statement 删除视图:drop view viewname 10、几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B:EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 C:INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、使用外连接

oracle数据库基本命令

oracle数据库基本命令 oracle安装后 sys:超级管理员(dba),默认密码为:change_on_install system:系统管理员(dbaoper),默认密码为:manager; sys与system的不同在于sys能够create datebase而system则不能。scott:普通用户,默认密码:tiger 1.切换用户:conn 用户名/密码; SQL> conn system/manager; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as system SQL> conn sys/change_on_install as sysdba; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as SYS 注意:sys与其他用户在命令窗口切换时的不同。 2.修改密码:passw username;(普通用户可以修改自己密码,管理员可以修改其他人的密码) 3.显示当前用户。show user; 4.断开数据库同时推出:exit; 文件操作 5.运行sql脚本,start d:\a.sql; 6.编辑指定的sql脚本。Edit d:\a.sql; 7.将屏幕上指定的内容输出到指定文本中去。spool e:\b.sql;执行语句;spool off;

8.显示设置环境变量; 可以用来控制输出的各种格式,如果希望永久保存可以修改glogin.sql脚本。 Linesize(行宽): show linesize;显示行宽 set linesize 90;设置行宽为90个字符。 Pagesize(页面大小): Show pagesize;显示页面大小 Set pagesize 180;设置页面的小。 (做报表时可以用。一页设定几行。)

ORACLE数据库学习心得

ORACLE数据库结课论文 一个好的程序,必然联系着一个庞大的数据库网路... 今年我们学习了oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于oracle数据库的一些知识。 1.ORACLE的特点: 可移植性ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。 2.ORACLE的总体结构 (1)ORACLE的文件结构一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。 日志文件须有两个或两个以上,用来记录所有数据库的变化,

用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)ORACLE的内存结构一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(System Global Area)包括数据库缓冲区、日志缓冲区及共享区域。 PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。 (3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON (Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。

数据库基本知识(自己整理,初学者可以看一下,基于某MySql)

数据库

1常见数据库 1.1MySql : 甲骨文 1.2Oracle: 甲骨文 1.3SQL Server: 微软 1.4Sybase: 赛尔斯 1.5DB2: IBM 2MySql基础知识 2.1关系结构数据模型数据库 2.2SQL(Structured Query Language)结构化查询语言2.2.1DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等 操作数据库 CREATE DATABASE [IF NOT EXISTS]mydb1 USE mydb1 DROP DATABASE [IF NOT EXISTS] mydb1

ALTER DATABASE mydb1 CHARACTER SET utf8 操作表 插入表 CREATE TABLE stu( sid CHAR(6), sname VARCHAR(20), age INT, gender VARCHAR(10) ); 更改表 ALTER TABLE t_user ADD (student varcher(20)) ALTER TABLE t_user MODIFY gender CHAR(20) ALTER TABLE t_user CHANGE gender VARCHER(20) ALTER TABLE t_user REMANE genderTO genders ALTER TABLE t_user DROP gender 删除表 DROP TABLE t_user 2.2.2DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据) 插入数据 INSERT INTO t_user VALUES() INSERT INTO 表名 VALUES(值1,值2,…)

oracle数据库操作手册

操作手册 目录 一.表空间 (4) 1.创建表空间 (4) 2.增加表空间 (4) 3.删除表空间 (5) 4.查询表空间状态 (5) 5.查询数据文件路径 (5) 6.移动表空间中数据文件的路径 (5) 7.移动表和索引到其他表空间 (6) 8.查看表空间的使用率 (7) 二.用户和权限 (9) 1.创建用户 (9) 2.修改用户的密码 (9) 3.给用户授权 (9) 4. 查询数据库系统上有多少用户,文件名和创建时间 (10) 三.归档和非归档模式 (10) 1.查看数据库的归档模式 (10) 2.修改数据库的归档模式 (10) 四.日志文件 (11) 1.查询日志文件信息 (11) 2.增加日志文件配置信息 (12) 3.增加日志成员 (12) 4.删除一组日志 (12) 五.密码文件 (13) 1.创建密码文件 (13) 六.参数文件(SPFILE PFILE) (13) 1.查看数据库使用参数文件(SPFILE 还是PFILE) (13) 2.创建SPFILE (13) 3.通过PFILE 启动数据库 (13) 七.STATSPACK (14) 1.安装STATSPACK (14) 2.数据采集 (14) 3.设置自动快照 (14) 4.设置数据采集的时间 (14) 八.ORACLE信息查询 (15) 1.查询ORACLE数据库的名字,创建日期 (15) 2. 查询ORACLE所在操作系统的主机名,实例名,版本 (15) 3.查询ORACLE数据库系统版本详细信息 (15) 九.控制文件 (16) 1.查询控制文件 (16) 2.备份控制文件 (16)

十.索引 (16) 1.创建普通索引 (16) 2.创建位图索引 (16) 3.查询索引所在的表,表空间,索引类型 (16) 4.查询索引所在的列 (17) 十一.主键 (17) 1.定义主键 (17) 2.查询主键索引 (18) 3.查询约束信息 (18) 4.禁止约束 (18) 5.开启主键 (19) 十二.手工建库脚本 (19) 十三..PROFILE文件内容 (19) 十四.做定时JOB (20) 1.创建存储过程,为此存储过程作定时JOB (20) 2.定时JOB 的参数说明 (21) 十五.查询出SQL语句 (22) 1.通过SID 找出HASH VALUE 值 (22) 2.通过HASH VALUE 值查询出SQL 语句 (22) 3.根据HASH VALUE 值查询出对应的 SESSLIN SID (22) 4.根据HASH VALUE 找出对应的机器名称 (22) 5.通过HASH VALUE 查询出该语句的执行计划 (23) 6.查询存储过程 (23) 7.查询对象属于哪个用户 (23) 8.查询表的分析时间 (23) 9.查询对象(表)的类型 (23) 十六.查询脚本 (24) 1.查询等待事件 (24) 2.查询大表已经索引超过2G 的对象 (24) 3.查看锁 (25) 十七.基本的SQL语句 (25) 1.对表的操作 (25) 2.常用的函数 (26) 十八.安装手册 (27) 十九.错误总结 (27) 1. ORA-00257: 归档程序错误 (27) 二十.故障处理 (29) 1.日志挖掘 (29) 2.行链接行迁移 (30) 3.逻辑备份(exp/imp) (35) 4.关闭和启动数据库的步骤 (36) 二十一.METALINK操作 (37) 1.开二级别SR (37) 2.OPATCH 下载地址 (37)

Oracle数据库基本知识点

1、数据库基本语句 (1)表结构处理 创建一个表:cteate table 表名(列1 类型,列2 类型); 修改表的名字 alter table 旧表名 rename to 新表名 查看表结构 desc 表名(cmd) 添加一个字段 alter table 表名 add(列类型); 修改字段类型 alter table 表名 modify(列类型); 删除一个字段 alter table 表名 drop column列名; 删除表 drop table 表名 修改列名 alter table 表名 rename column 旧列名 to 新列名; (2)表数据处理 增加数据:insert into 表名 values(所有列的值); insert into 表名(列)values(对应的值); 更新语句:update 表 set 列=新的值,…[where 条件] 删除数据:delete from 表名 where 条件 删除所有数据,不会影响表结构,不会记录日志, 数据不能恢复--》删除很快: truncate table 表名 删除所有数据,包括表结构一并删除: drop table 表名 去除重复的显示:select distinct 列 from 表名 日期类型:to_date(字符串1,字符串2)字符串1是日期的字 符串,字符串2是格式 to_date('1990-1-1','yyyy-mm-dd')-->返回日期的 类型是1990-1-1 (3)查询语句 1)内连接 select a.*,b.* from a inner join b on a.id=b.parent_id

Oracle数据库基础题库【含答案】

1、判断题,正确请写写"T",错误请写写"F", 1、oracle数据库系统中,启动数据库的第一步是启动一个数据库实例。( T ) 2、Oracle服务器端的监听程序是驻留在服务器上的单独进程,专门负责响应客户机的连接请求。( F) 3、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务,非集群)。( T) 4、系统全局区SGA 是针对某一服务器进程而保留的内存区域,它是不可以共享的。( F ) 5、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信息。( F ) 8、数据字典中的内容都被保存在SYSTEM表空间中。( T ) 9、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等, WHERE 后面的条件中也可以有聚集函数。( F ) 10、"上海西北京" 可以通过like ‘%上海_’查出来。( F ) 11、表空间是oracle 最大的逻辑组成部分。Oracle数据库由一个或多个表空间组成。一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。( T ) 12、表空间分为永久表空间和临时表空间两种类型。( T ) 13、truncate是DDL操作,不能 rollback。( T ) 14、如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用WHERE语句。( F ) 15、Oracle数据库中字符串和日期必须使用双引号标识。( F ) 16、Oracle数据库中字符串数据是区分大小写的。( T ) 17、Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特殊操作时候保证操作能正常进行。( F ) 18、为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字段列表的末尾。( T ) 20、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接。( T ) 21、自然连接是根据两个表中同名的列而进行连接的,当列不同名时,自然连接将失去意义。( T ) 23、PL/SQL代码块声明区可有可无。( T ) 24、隐式游标与显式游标的不同在于显式游标仅仅访问一行,隐式的可以访问多行。( F )

oracle命令行大全

SQL*PLUS命令的使用大全 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus 语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。 下面就介绍一下一些常用的sql*plus命令: 1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 2. 对当前的输入进行编辑 SQL>edit 3. 重新运行上一次运行的sql语句 SQL>/ 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 6.显示一个表的结构 SQL> desc table_name 7. COL命令: 主要格式化列的显示形式。 该命令有许多选项,具体如下: COL[UMN] [{ column|expr} [ option ...]] Option选项可以是如下的子句: ALI[AS] alias CLE[AR] FOLD_A[FTER] FOLD_B[EFORE] FOR[MA T] format

Oracle数据库期末复习知识点整理

基础知识 表3.2 Oracle数据类型

表3.3 XSB的表结构

操作表 创建表 CREATE TABLE [schema.] table_name ( column_namedatatype [DEFAULT expression] [column_constraint][,…n] [,…n] ) [PCTFREE integer] [PCTUSED integer] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace_name] [STORGE storage_clause] [CLUSTER cluster_name(cluster_column,…n)] [ENABLE | DISABLE ] [AS subquery] 【例】使用CRETE TABLE命令为XSCJ数据库建立表XSB,表结构参照表3.3。 打开SQL*Plus工具,以system方案连接数据库,输入以下语句: CREATE TABLE XSB ( XH char(6) NOT NULL PRIMARY KEY, XM char(8) NOT NULL, XB char(2) DEFAULT '1' NOT NULL, CSSJ date NOT NULL, ZY char(12) NULL, ZXF number(2) NULL, BZ varchar2(200) NULL ); 修改表 ALTER TABLE [schema.] table_name [ ADD(column_namedatatype [DEFAULT expression][column_constraint],…n) ] /*增加新列*/ [ MODIFY([ datatype ] [ DEFAULT expression ] [column_constraint],…n) ] /*修改已有列的属性*/ [ STORAGE storage_clause ] *修改存储特征*/ [ DROP drop_clause ] /*删除列或约束条件*/ 【例】使用ALTER TABLE语句修改XSCJ数据库中的表。

Oracle基础知识大全,

课程目标: 1. 了解数据库系统在项目开发中的地位 2. 了解目前主流数据库系统 3. 熟练掌握查询命令 4. 熟练掌握数据操作方式 5. 熟练使用数据库内置函数 6. 掌握pl/sql程序设计语法结构 7. 掌握视图 8. 掌握存储过程 9. 掌握用户自定义函数 10. 掌握触发器 了解: 1.数据库组件: 1.1 实施应用集群 1.2 Oracle OLAP 1.3 数据挖掘 1.4 应用程序接口 1.5 网络组件 1.6 SQL Plus 1.7 企业管理器OEM

2. 几个版本间的差异: 2.1 增加了服务器参数文件SPFILE 2.2 使用了OMF免去了手工管理数据库文件的繁琐 2.3 支持多种数据库块大小 2.4 会话可以自动调整PGA的大小 2.5 引入了列表分区 课程内容: 1. 操作数据之前的准备工作: 1.1. 要保证有一个数据库: 1.2. 要保证创建一个表空间 create tablespace hbjr datafile 'E:\dbs\hbjr.dbf' size 100M; 1.3. 要创建一个用户,用户默认的表空间就是你创建的表空间 create user hbjr identified by orcl default tablespace hbjr; //授权限: grant dba to hbjr; 1.4. 用户/密码登录:

2. 表名/列字段名起名规范: 2.1 使用常规字母和数字 2.2 长度不要超过30 2.3 表名/列名不能重复 2.4 不能使用oracle的保留字 3. 数据类型 3.1 char:定长,存储单位--字节(bite) 3.2 varchar2:变长,存储单位--字节 3.3 nchar:定长,存储单位--字符 3.4 nvarchar2:变长,存储单位--字符 3.5 date:日期类型,7个字节,存储着--世纪,年,月,日,时,分,秒 3.6 timestamp:日期类型,11个字节,存储着--世纪,年,月,日,时,分,秒,毫秒 3.7 number:数据类型(数值类型) 3.8 clob:大字段类型,适合存储纯文本信息(例如:*.txt 文件)

Oracle数据库技术课程学习大纲详细

《现代数据库技术》教学大纲 课程名称:《现代数据库技术》 课程编号:学时数:56 学分数:3.5 适应专业:计算机与信息学院所有专业 一、本课程的地位、任务和作用 现代数据库技术是计算机在数据处理应用领域中的主要内容和坚实基础;也是今后若干年内研究和应用的最活跃的分支之一。因此,信息管理、软件开发、计算机等专业的学生,特别是以应用为目标的学生都必须学习和具备数据库原理与应用的知识。本课程通过介绍Oracle数据库基本操作、体系结构与数据库基本管理使学生初步掌握大型数据库的基本原理,了解大型数据库的管理方法。了解大型数据库的管理方法,使学生熟练掌握Oracle数据库系统下的SQL语言运用及PL/SQL程序设计。 本课程是一门理论和实践相结合的课程,要求学生在完成本课程的学习以后,能够结合自己所熟悉的某一门高级语言和Oracle,开发出一个小型的数据库应用系统。 二、本课程的相关课程 本课程的先修课程为《计算机组成原理》,《离散数学》,《数据结构》,《计算机网络》及《数据库原理》等课程。 三、本课程的基本内容及要求 教学内容: 第一章数据库概述(2学时) 1、教学内容: 1.1数据库基础知识 1.2关系数据库系统 1.3 Oracle基础知识 (1)Oracle的发展历史 (2)Oracle的特点 第二章O racle体系结构(6学时) 1、教学内容: 2.1 Oracle 体系结构概述 2.2Oracle的存储结构 (1)物理存储结构 (2)逻辑存储结构 2.3Oracle的实例 (1)Oracle内存结构

(2)Oracle进程 2.4数据字典 2、教学重点:Oracle的物理结构、oracle实例、Oracle的逻辑结构 3、教学难点:数据库实例与进程 第三章O racle11g的安装(2学时) 1、教学内容: 3.1 Oracle 11g环境介绍 3.2Oracle 11g for Windows的安装 (1)安装Oracle 11g服务器 (2)Oracle 11g与Windows (3)安装Oracle 11g客户端 3.3 Oracle 11g 的卸载 2、教学重点:学会Oracle的安装 第四章O RACLE数据库管理工具及网络配置(2学时) 1、教学内容: 4.1 SQL*Plus命令 (1)设置SQL*Plus 运行环境 (2)常用SQL*Plus命令 (3)格式化查询结果 4.2 Oracle企业管理器 4.3 数据库配置助手 4.4 启动与关闭oracle实例 2、教学重点:学会使用SQL*Plus 第五章S QL语言基础(5学时) 1、教学内容: 5.1SQL简介 5.2SQL的基本语法 5.3数据查询语言 5.4数据操纵语言 5.5数据定义语言 5.6数据控制语言 5.7常用函数 5.8 事务处理 2、教学重点:数据查询语言、数据操纵语言、数据定义语言、数据控 制语言 3、教学难点:SQL的基本语法 第六章P L/SQL编程(8学时)(课本第6,7章) 1、教学内容: 6.1PL/SQL基础 (1)变量及声明 (2)数据类型 (3)表达式 (4)PL/SQL程序块结构 6.2PL/SQL控制结构

Oracle-SQL简单查询语句处理

Oracle-SQL简单查询语句处理笔记一 数据处理及进展–数据:是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据处理:是指对各种形式的数据进行收集、储存、加工和传播的一系列活动的综合。 其目的是从大量的、原始的数据中抽取、推导出对人们有价值的信息。 数据处理的3个阶段: ?人工管理阶段 ?文件系统阶段 ?数据库系统阶段 关系型数据库 ?数据模型–是数据库系统中,用于抽象、表示、处理现实世界中数据的一种形式架构。 ?数据模型三层次 概念模型:是现实世界到信息世界的第一层抽象,常用E-R 图表示。逻辑模型:是用户从数据库所看到的模型,是具体的DBMS 所支持的数据模型,常用的包括层次模型、网状模型、关系模型。

物理模型:是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且 V1.0 还与操作系统和硬件有关 关系型数据库 ?关系模型 关系模型有关系数据结构、关系操作集合和关系完整性约束三部分组成的。 关系数据结构:在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。 在用户看来,关系就是一张由行和列组成的二维数据表。 关系操作:包括:选择、投影、连接、增加、删除、修改等。 关系完整性约束:包括实体完整性、参照完整性和用户定义的完整性。 算术运算符? 算术运算符优先级 乘除优先于加减 相同优先权的表达式按照从左至右的顺序依次计算 括弧可以提高优先权,并使表达式的描述更为清晰 空值NULL

?空值NULL –空值是指一种无效的、未赋值、未知的或不可用的值。 空值不同于零或者空格。 列别名 好处:方便查看 用来重新命名列的显示标题,如果SELECT语句中包含计算列,通常使用列别名来重新定义列标题。 ?使用列别名的方法 方式1:列名列别名 方式2:列名 AS 列别名 ?以下三种情况列别名两侧需要添加双引号 列别名中包含有空格 列别名中要求区分大小写 列别名中包含有特殊字符 连接操作符使用 || 去连接,相当于java中的 + 号呢。 消除重复行使用DISTINCT 关键字 习题整理一:简单的查询语句(查询oracle已经创建的表格,使用用户scott普通用户登陆) 说明:

数据库基础知识试题

数据库基础知识试题 部门____________ 姓名__________ 日期_________ 得分__________ 一、不定项选择题(每题分,共30分) 1.DELETE语句用来删除表中的数据,一次可以删除( )。D A .一行 B.多行 C.一行和多行 D.多行 2.数据库文件中主数据文件扩展名和次数据库文件扩展名分别为( )。C A. .mdf .ldf B. .ldf .mdf C. .mdf .ndf D. .ndf .mdf 3.视图是从一个或多个表中或视图中导出的()。A A 表 B 查询 C 报表 D 数据 4.下列运算符中表示任意字符的是( )。B A. * B. % C. LIKE 5.()是SQL Server中最重要的管理工具。A A.企业管理器 B.查询分析器 C.服务管理器 D.事件探察器 6.()不是用来查询、添加、修改和删除数据库中数据的语句。D A、SELECT B、INSERT C、UPDATE D、DROP 7.在oracle中下列哪个表名是不允许的()。D A、abc$ B、abc C、abc_ D、_abc 8.使用SQL命令将教师表teacher中工资salary字段的值增加500,应该使用的命 令是()。D A、Replace salary with salary+500 B、Update teacher salary with salary+500 C、Update set salary with salary+500 D、Update teacher set salary=salary+500 9.表的两种相关约束是()。C

oracle 经典SQL语句大全

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1

ORACLE数据库基础测试题oracle数据库复习题

ORACLE数据库基础测试题 提示:本题为ORACLE数据库基础测试题,适合初学者对基础知识进行测试,以便查漏补缺。 1、 DDL指得就是:()。 A、数据定义语言 B、数据操作语言 C、数据查询语言 D、数据控制语言 正确答案:A解析: 2、 下列创建表语句正确得就是:(). A、create table emp(id number(4),); B、createtable emp(id number(4)); C、alter table emp(id number(4)) ; D、alter tableemp(id number(4),) ;

正确答案:B解析: 3、 下列Oracle函数中能够返回两个字符串连接后得结果得就是:()。 A、initcap B、instr C、trim D、concat 正确答案:D解析: 4、 下列SQL语句得查询结果就是:()。selectround(45、925,0),trunc(45、925)fromdual; A、4545 B、4645 C、4546 D、46 46 正确答案:B解析:

5、 关于函数nvl(d1,d2)得用法说法正确得就是:()。 A、表示如果d1为null则d2必须为null B、表示如果d1为null则忽略d2 C、表示如果d1不为null则用d2替代 D、表示如果d1为null则用d2替代 正确答案:D解析: 6、 显示emp表得所有行,所有列,下列SQL语句正确得就是:()。 A、select*fromemp; B、select all、*from emp; C、selectallfromemp; D、select/* from emp; 正确答案:A解析: 7、 查询职员得姓名及其直接领导,如果没有直接领导得职员,则显示为“NoManager",下列SQL语句正确得就是:()。

Oracle查询语句基本命令一

oracle查询语句大全--基本命令大全一 1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权grant connect,resource,dba,sysdba to username; 3.connect username/password//进入。 4.select table_name,column_name from user_tab_columns where table_name='mview_log';//查询表中的表名,字段名等等。 5. 如何执行脚本SQL文件? SQL>@PATH/filename.sql; 6.Oracle oledb 提供者在command中执行多条SQL语句与SQL SERVER有少许差别,SQL Server只需使用";"分割多条SQL语句,而Oracle需要遵守ORACLE调用规范,即除分号分割外,还需以begin /end;包围语句体. 使用C#描述应如下所示: https://www.360docs.net/doc/ff693371.html,mandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) V ALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) V ALUES (2, \'2\'); end;"; 7.查询用户下的表的信息select distinct table_name from user_tab_columns; 8.如何搜索出前N条记录?Select a.*,rownum from (select * from cardkind order by cardkind ) a where rownum show user 3、查看系统拥有哪些用户SQL> select * from all_users; 4、新建用户并授权 SQL> create user a identified by a;(默认建在SYSTEM表空间下) SQL> grant connect,resource to a; 5、连接到新用户SQL> conn a/a

Oracle数据库知识总结

AD1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 7. COL命令: 主要格式化列的显示形式。 1). 改变缺省的列标题 COLUMN column_name HEADING column_heading For example: Sql>select * from dept; DEPTNO DNAME LOC ---------- ---------------------------- --------- 10 ACCOUNTING NEW YORK sql>col LOC heading location sql>select * from dept; DEPTNO DNAME location --------- ---------------------------- ----------- 10 ACCOUNTING NEW YORK 2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上: Sql>select * from emp Department name Salary ---------- ---------- ---------- 10 aaa 11 SQL> COLUMN ENAME HEADING ’Employee|Name’ Sql>select * from emp Employee Department name Salary ---------- ---------- ---------- 10 aaa 11 note: the col heading turn into two lines from one line. 3). 改变列的显示长度: FOR[MAT] format Sql>select empno,ename,job from emp; EMPNO ENAME JOB ---------- ---------- --------- 7369 SMITH CLERK

相关文档
最新文档