文档库 最新最全的文档下载
当前位置:文档库 › oracle完全学习手册

oracle完全学习手册

oracle完全学习手册
oracle完全学习手册

Oracle体系结构

Oracle数据库从存储结构上可以分为物理存储结构与逻辑存储结构,从

实例结构上可以分为内存结构与进程结构。

Oracle的物理存储结构是由存储在磁盘中的操作系统文件所组成的,Oracle在运行时需要使用这些文件。一般,Oracle数据库在物理上主要由3 种类型的文件组成,分别是数据文件(*.dbf)、控制文件(*.ctl)和重做日志文件(*.log)。

数据文件

数据文件(Data File)是指存储数据库数据的文件。数据库中的所有数

据最终都保存在数据文件中,例如,表中的记录和索引等。如果数据文件中的某些数据被频繁访问,则这些数据会被存储在内存的缓冲区中。读取数据时,Oracle系统会首先从内存的数据缓冲区中查找相关数据信息,如果找不到,则从数据库文件中把数据读取出来,存放到内存的数据缓冲区中,供查询使用;存储数据时,修改后的数据信息,也是先存放在内存的数据缓冲区中,在满足写入条件(例如执行提交操作)时,由Oracle的后

台进程DBWn将数据写入数据文件。

特点

数据文件一般有以下几个特点:

一个表空间由一个或多个数据文件组成。

一个数据文件只对应一个数据库。而一个数据库通常包含多个数据文件。

数据文件可以通过设置其参数,实现其自动扩展的功能。

如果想要了解数据文件的信息,可以查询数据字典dba_data_files和

v$datafile。

数据字典介绍

Oracle数据字典(Data Dictionary)是存储在数据库中的所有对象信息

的知识库,Oracle数据库管理系统使用数据字典获取对象信息和安全信

息,而用户和数据库系统管理员则用数据字典来查询数据库信息。

Oracle数据字典保存有数据库中对象和段的信息,例如表、视图、索引、

包、存储过程以及与用户、权限、角色、审计和约束等相关的信息。

与数据库组件相关的数据字典

SQLPlus连接数据库

SQL*Plus工具

SQL*Plus工具主要用于数据查询和数据处理。利用SQL*Plus可以将

SQL和Oracle专有的PL/SQL结合起来进行数据查询和处理。

SQL*Plus工具可以实现以下功能:

连接数据库,完成数据库管理。

对数据表可以执行插入、修改、删除、查询操作、以及执行SQL、PL/SQL块。

查询结果的格式化、运算处理、保存、打印以及输出Web格式。

显示任何一个表的字段定义,并与终端用户交互。

运行存储在数据库中的子程序或包。

启动/停止数据库实例。

SQL*Plus连接与断开数据库

1.启动SQL*Plus,连接到默认数据库

2.从命令行连接数据库

3.使用SQL*Plus命令连接与断开数据库

在SQL*Plus中输入SQL语句时,一旦执行该语句,则SQL*Plus会将该

语句保存到缓冲区中,该语句不再获得焦点,也就不能再接受编辑操作。

如果还需要对缓冲区中的语句进行编辑操作,则可以使用SQL*Plus语句实

现。

Oracle数据库提供了一些SQL*Plus语句,这些语句由相应的命令实

现,例如APPEND(可以简写为A)命令。如下表所示。

创建简单报表

报表

所谓报表就是用表格、图表等格式来动态显示数据。计算机上的报表的

主要特点是数据动态化,格式多样化,并且实现报表数据和报表格式的完

全分离,用户可以只修改数据,或者只修改格式。

为报表设置页眉和页脚

BREAK 命令和COMPUTE 命令

在执行查询操作或创建报表时,可以使用BREAK 和COMPUTE 命令,用 来对输出的结果进行统计计算。其中使用BREAK 命令,可以让SQL*Plus 根 据列值的范围分隔输出结果,可以使得重复的列值不进行显示;COMPUTE 子句可以让SQL*Plus 计算一列的值,并在最后输出显示。用法如下: BRE[AK] [ ON column_name ] SKIP n

COMP[UTE] function LABEL label OF column_name ON break_column_name 语法说明如下:

column_name 表示对哪一列执行操作。

SKIP n 表示在指定列的值变化之前插入n 个空行。 function 表示执行的操作,例如SUM (求和)

、MAXIMUM (最大值)、MINIMUM (最小值)、AVG (平均值)、COUNT (非空值的列数)、NUMBER (行数)、VARIANCE (方差)以及STD (均方差)等。 LABEL 指定显示结果时的文本信息。 格式化列的显示效果

COLUMN 命令可以对列的显示效果,包括列标题和列数据,进行 格式化。该命令的语法如下:

COL[UMN] [ { column_name | ALI[AS] alias } [ options ] ] 语法说明如下:

column_name 指定列名。

ALIAS alias 指定要格式化的列的别名。

options 指定用于格式化列或别名的一个或者多个选项。

DESCRIBE命令语法如下:

DESC[RIBE] { [ schema. ] object [ @connect_identifier ] }

语法说明如下:

DESC[RIBE]:DESCRIBE可以简写为DESC。

schema:指定对象所属的用户名,或者所属的用户模式名称。

object:表示对象的名称,如表名或视图名等。

@connect_identifier :表示数据库连接字符串。

使用EDIT命令编辑缓冲区内容

使用EDIT命令,可以将SQL*Plus缓冲区的内容复制到一个名为

afiedt.buf的文件中,然后启动操作系统中默认的编辑器打开这个文件,并且文件内容能够进行编辑。在Windows操作系统中,默认的编辑器是Notepad(记事本)。

ED[IT] [ file_name ]其中,file_name默认为afiedt.buf,也可以指定一个其他的文件。

使用SPOOL命令复制输出结果到文件

使用SPOOL命令实现将SQL*Plus中的输出结果复制到一个指定的文件中,或者把查询结果发送到打印机中,直到使用SPOOL OFF命令为止。

SPOOL命令的语法如下:

SPO[OL] [ file_name [ CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT ] file_name 指定一个操作系统文件。

CREATE 创建一个指定的file_name文件。

REPLACE 如果指定的文件已经存在,则替换该文件。

APPEND 将内容附加到一个已经存在的文件中。

OFF 停止将SQL*Plus中的输出结果复制到file_name文件中,并关

闭该文件。

OUT 启动该功能,将SQL*Plus中的输出结果复制到file_name文件。使用GET命令读取文件内容到缓冲区

使用GET命令的语法如下:

GET [ FILE ] file_name [ LIST | NOLIST ]

语法说明如下:

file_name 表示一个指定文件,将该文件的内容读入SQL*Plus缓冲

区中。

LIST 列出缓冲区中的语句。

NOLIST 不列出缓冲区中的语句。

设置一行显示的字符数量

使用LINESIZE命令可以设置一行数据可以容纳的字符数量,默认数量为80。如果LINESIZE的值比较小,那么表中一行数据,有可能在屏幕上需要分多行显示;如果LINESIZE的值设置大一些,一行数据就可以在屏幕的一行中进行显示了。

LINESIZE命令的语法如下:

SET LINESIZE n

其中,n表示屏幕上一行数据可以容纳的字符数量,有效范围是1 –

32767。

设置一页显示多少行数据

使用PAGESIZE命令,可以设置每一页的大小,从而控制每一页显示的数据量。PAGESIZE命令的语法如下:

SET PAGESIZE n

其中,参数n表示每一页大小的正整数,最大值可以为50,000,默认值为14。页并不是仅仅由输出的数据行构成的,而是由SQL*Plus显示到屏幕上的所有输出结果构成,包括标题和空行等。

使用SAVE命令

将缓冲区内容保存到文件

使用SAVE命令可以将当前缓冲区的内容保存到文件中,这样,即使缓冲区中的内容被覆盖,也保留有前面的执行语句。SAVE命令的语法如下:SAV[E] [ FILE ] file_name [ CRE[ATE] | REP[LACE] | APP[END] ]

语法说明如下:

file_name 表示将SQL*Plus缓冲区的内容保存到由file_name指定的

文件中。

CREATE 表示创建一个file_name文件,并将缓冲区中的内容保存到

该文件。该选项为默认值。

APPEND 如果file_name文件已经存在,则将缓冲区中的内容,追加

到file_name文件的内容之后;如果该文件不存在,则创建该文件。

REPLACE 如果file_name文件已经存在,则覆盖file_name文件的内

容;如果该文件不存在,则创建该文件。

使用SPOOL命令复制输出结果到文件

使用SPOOL命令实现将SQL*Plus中的输出结果复制到一个指定的文件中,或者把查询结果发送到打印机中,直到使用SPOOL OFF命令为止。

SPOOL命令的语法如下:

SPO[OL] [ file_name [ CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT ] file_name 指定一个操作系统文件。

CREATE 创建一个指定的file_name文件。

REPLACE 如果指定的文件已经存在,则替换该文件。

APPEND 将内容附加到一个已经存在的文件中。

OFF 停止将SQL*Plus中的输出结果复制到file_name文件中,并关

闭该文件。

OUT 启动该功能,将SQL*Plus中的输出结果复制到file_name文件。

使用START命令读取并运行文件内容

START命令可以读取文件中的内容到缓冲区中,然后在SQL*Plus中运

行这些内容。START命令的语法如下:

STA[RT] { url | file_name }

语法说明如下:

url 用来指定一个URL地址,例如http://host.domain/script.sql。

file_name 指定一个文件。该命令将file_name文件的内容读入

SQL*Plus缓冲区中,然后运行缓冲区中的内容。

使用&符号表示临时变量

在Oracle数据库中,可以使用变量来编写通用的SQL语句,在运行SQL 语句时,为变量输入值,就会在SQL语句中将变量替换成这些值。

临时变量只在使用它的SQL语句中有效,变量值不能保留。临时变量也被称为替换变量。在SQL语句中,如果在某个变量前面使用了&符号,那么就表示该变量是一个临时变量。执行SQL语句时,系统会提示用户为该变量提供一个具体的数据。

使用&&符号表示临时变量

在SQL语句中,如果希望重新使用某个变量并且不希望重新提示输入

值,那么可以使用&&符号来定义临时变量。

SET VERIFY和SET DEFINE命令

在使用临时变量时,还可以使用SET VERIFY命令和SET DEFINE命

令,其中:

SET VERIFY [ ON | OFF ] 用来指定是否输出原值和新值信息。

SET DEF[INE] 用于指定一个除字符&之外的字符,作为定义变量的字符。

已定义变量

已定义变量是指具有明确定义的变量,该变量的值会一直保留到被显式地删除、重定义或退出SQL*Plus为止。

在SQL语句中,可以在使用变量之前对变量进行定义,然后在同一个

SQL语句中可以多次使用这个变量。定义变量,可以使用DEFINE或

ACCEPT命令;删除变量,可以使用UNDEFINE命令。

使用DEFINE命令

使用ACCEPT命令也可以定义变量,并且定制一个用户提示,用于提示用户输入指定变量的数据。在定义变量时,可以明确地指定该变量是

NUMBER还是DATE等数据类型。为了安全性的原因,还可以将用户输入的信息隐藏起来。

ACCEPT命令的语法如下:

ACC[EPT] variable [ data_type ] [ FOR[MAT] format ] [ DEF[AULT]

default ][ PROMPT text | NOPR[OMPT] ] [ HIDE ]

语法说明如下:

variable 用于一个指定接收值的变量。如果该名称的变量不存在,

那么SQL*Plus自动创建该变量。

data_type 指定变量的数据类型,可以使用的类型有CHAR、

NUM[BER]、DATE、BINARY_FLOAT和BINARY_DOUBLE。默认的数据类

型为CHAR。而DATE类型的变量实际上也是以CHAR变量存储的。

FORMAT 指定变量的格式,包括A15(15个字符)、9999(一个4

位数字)和DD-MON-YYYY(日期)。

DEFAULT 用来为变量指定一个默认值。

PROMPT 用于表示在用户输入数据之前显示的文本消息。

HIDE 表示隐藏用户为变量输入的值。

修改表空间中数据文件的自动扩展性

在创建表空间时,可以设置数据文件的自动扩展性。在为表空间增加新的数据文件时,也可以设置新数据文件的自动扩展性。而对于已创建的表空间中的已有数据文件,则可以使用ALTER DATABASE语句修改其自动扩展性,其语法如下:

ALTER DATABASE DATAFILE file_name AUTOEXTEND OFF | ON

[ NEXT number K | M MAXSIZE UNLIMITED | number K | M ]

修改表空间中数据文件的状态

数据文件的状态主要有3种:ONLINE、OFFLINE和OFFLINE DROP。

设置数据文件状态的语法如下:

ALTER DATABASE

DATAFILE file_name ONLINE | OFFLINE | OFFLINE DROP

其中,ONLINE表示联机状态,此时数据文件可以使用;OFFLINE表示

脱机状态,此时数据文件不可使用,用于数据库运行在归档模式下的情况;OFFLINE DROP则会删除数据文件,与OFFLINE一样用于设置数据文

件不可用,但它用于数据库运行在非归档模式下的情况。

将数据文件设置为OFFLINE状态时,不会影响到表空间的状态;但是将表空间设置为OFFLINE状态时,属于该表空间的所有数据文件都被设置为OFFLINE状态。

移动表空间中的数据文件

数据文件是存储于磁盘中的物理文件,它的大小受到磁盘大小的限制。

如果数据文件所在的磁盘空间不够,则需要将该文件移动到新的磁盘中保存。

【例】移动myspace表空间中数据文件myspace02.dbf的步骤如下:

(1)修改myspace表空间的状态为OFFLINE,如下:

ALTER TABLESPACE myspace OFFLINE;

(2)在操作系统中,将磁盘中的myspace02.dbf文件移动到新的目录中,例如移动到F:\oraclefile目录中。文件的名称也可以修改,例如修改为myspace03.dbf。

(3)使用ALTER TABLESPACE语句,将myspace表空间中

myspace02.dbf文件的原名称与路径修改为新名称与路径,如下:

ALTER TABLESPACE myspace

RENAME DATAFILE 'E:\app\Administrator\oradata\orcl\myspace02.dbf'

TO 'F:\oraclefile\myspace03.dbf';

(4)修改myspace表空间的状态为ONLINE,如下:

ALTER TABLESPACE myspace ONLINE;

增加表空间大小

创建表空间时,必需在物理磁盘上为表空间创建数据文件。数据文件的大小决定了创建的表空间的大小。构成表空间的数据文件可以位于不同的物理磁盘上,表空间的大小就等于不同物理磁盘上所有数据文件的大小之和。

如果在使用表空间的过程中,出现表空间不足的情况,那么就需要增加表空间的大小,具体实现时,可以采用增加数据文件的大小,也可以增加一个新的数据文件来增大表空间。

修改表空间中数据文件的大小

修改数据文件需要使用ALTER DATABASE语句,其语法如下:

ALTER DATABASE DATAFILE file_name RESIZE newsize K | M;

语法说明如下:

file_name 数据文件的名称与路径。

RESIZE newsize 修改数据文件的大小为newsize。

增加表空间的数据文件

增加表空间的大小,除了可以修改其对应的数据文件的大小以外,还可以选择为其增加新的数据文件。增加新的数据文件需要使用ALTER TABLESPACE语句,其语法如下:

ALTER TABLESPACE tablespace_name

ADD DATAFILE

file_name SIZE number K | M

[ AUTOEXTEND OFF | ON

[ NEXT number K | M MAXSIZE UNLIMITED | number K | M ]

+* , …+;

重命名表空间

在需要的情况下,可以对表空间的名称进行修改。修改表空间的名称,不会影响到表空间中的数据。但不能修改系统表空间system与sysaux 的名称。

重命名表空间的语法如下:

ALTER TABLESPACE tablespace_name RENAME TO new_tablespace_name;

注意:如果表空间的状态为OFFLINE,则无法重命名该表空间。

删除表空间

删除表空间需要使用DROP TABLESPACE语句,其语法如下:

DROP TABLESPACE tablespace_name

[ INCLUDING CONTENTS [ AND DATAFILES ] ]

语法说明如下:

INCLUDING CONTENTS

表示删除表空间的同时,删除表空间中的所有数据库对象。如果表空间中有数据库对象,则必须使用此选项。

AND DATAFILES

表示删除表空间的同时,删除表空间所对应的数据文件。如果不使用此选项,则删除表空间实际上仅是从数据字典和控制文件中将该表空间的有关信息删除,而不会删除操作系统中与该表空间对应的数据文件。

切换日志文件组

日志文件组是循环使用的,当一组日志文件被写满时,Oracle系统自动切换到下一组日志文件。在需要的时候,数据库管理员也可以手动切换日志文件组。切换日志文件组需要使用如下语句:

ALTER SYSTEM SWITCH LOGFILE ;

清空日志文件组

如果日志文件组中的日志文件受损,将导致数据库无法将受损的日志文件进行归档,这会最终导致数据库停止运行。此时,在不关闭数据库的情况下,可以选择清空日志文件组中的内容。

清空日志文件组语法如下:

LTER DATABASE CLEAR LOGFILE GROUP group_number ;

注意:

被清空的日志文件组不能处于CURRENT状态,也就是说不能清空数

据库当前正在使用的日志文件组。

当数据库中只有两个日志文件组时,不能清空日志文件组。

创建日志文件组

语法如下:

ALTER DATABASE database_name

ADD LOGFILE [GROUP group_number]

(file_name *, file_name *, …++)

[SIZE size] [REUSE];

语法说明如下:

GROUP group_number 为日志文件组指定组编号。

file_name 为该组创建日志文件成员。

SIZE number 指定日志文件成员的大小。

REUSE 如果创建的日志文件成员已存在,可以使用REUSE关键字覆盖已存在的文件。但是该文件不能已经属于其他日志文件组,否则

无法替换。

创建日志文件

创建日志文件,一般是指向日志文件组中添加日志成员,需要使用ALTER DATABASE … ADD LOGFILE MEMBER语句。

例如,向日志文件组GROUP 4中添加一个新的日志文件:

alter database add logfile member

'f:\oraclefile\logfile\redo03.log'

to group 4;

归档日志

Oracle利用重做日志文件记录对数据库的操作,但是重做日志文件组是循环使用的,当所有的日志文件都被填满时,系统自动切换到第一组日志文件,当然数据库管理员也可以使用命令手工切换。而在循环使用日志文件时,日志文件中已经存在的日志内容将会被覆盖。为了完整地记录数据库的全部操作,Oracle提出了归档日志的概念。

如果是非归档日志模式,则切换日志文件时,日志文件中原有内容将被新的内容覆盖;如果是归档日志模式,则切换日志文件时,系统会首先对日志文件进行归档存储,之后才允许向文件中写入新的日志内容。Oracle日志模式

Oracle数据库有两种日志模式:

非归档日志模式(NOARCHIVELOG)

在非归档日志模式下,如果发生日志切换,则日志文件中原有内容将被新的内容覆盖;

归档日志模式(ARCHIVELOG)

在归档日志模式下,如果发生日志切换,则Oracle系统会将日志文件通过复制保存到指定的地方,这个过程叫“归档”,复制保存下来的日志文件叫“归档日志”,然后才允许向文件中写入新的日志内容。

设置数据库模式

在安装Oracle Database 11g时,默认设置数据库运行于非归档模式,这样可以避免对创建数据库的过程中生成的日志进行归档,从而缩短数据库的创建时间。在数据库成功运行后,数据库管理员可以根据需要修改数据库的运行模式。

如果要修改数据库的运行模式,可以使用如下语句:

ALTER DATABASE ARCHIVELOG | NOARCHIVELOG ;

其中,ARCHIVELOG表示归档模式;NOARCHIVELOG表示非归档模式。

删除日志文件

删除日志文件的语法如下:

ALTER DATABASE DROP LOGFILE MEMBER logfile_name ;

删除日志文件需要注意如下几点:

该日志文件所在的日志文件组不能处于CURRENT状态,需要执行一次手工日志切换,将该日志文件组的状态修改为INACTIVE。

该日志文件所在的日志文件组中必须还包含有其他日志成员。

如果数据库运行在归档模式下,则应该在删除日志文件之前,确定

它所在的日志文件组已经被归档,否则会导致数据丢失。

状态值

日志组的状态:

ACTIVE、CURRENT、INACTIVE、UNUSED

日志文件的状态:

VALID、INVALID、STALE

删除日志文件组

删除日志文件组的语法如下:

ALTER DATABASE DROP LOGFILE GROUP group_number ;

删除日志文件组需要注意如下几点:

一个数据库至少需要两个日志文件组。

日志文件组不能处于CURRENT状态。

如果数据库运行在归档模式下,应该确定该日志文件组已经被归档。

设置归档目标

归档目标就是指存放归档日志文件的目录。一个数据库可以有多个归档目标。在创建数据库时,默认设置了归档目标,可以通过

db_recovery_file_dest参数查看。

设置归档目标的语法形式如下:

ALTER SYSTEM SET

log_archive_dest_N = ' { LOCATION | SERVER } = directory ' ;

其中,directory表示磁盘目录;LOCATION表示归档目标为本地系统的目录;SERVER表示归档目标为远程数据库的目录。

设置归档日志名称

通过参数log_archive_format,可以设置归档日志名称格式。语法形式:ALTER SYSTEM SET log_archive_format = ' fix_name%S_%R.%T '

SCOPE = scope_type ;

语法说明如下:

fix_name%S_%R.%T

其中,fix_name是自定义的命名前缀;%S表示日志序列号;%R表示联机重做日志(RESETLOGS)的ID值;%T表示归档线程编号。

log_archive_format参数的值必须包含%S、%R和%T匹配符。

SCOPE = scope_type

SCOPE有3个参数值:MEMORY、SPFILE和BOTH。其中,MEMORY

表示只改变当前实例运行参数;SPFILE表示只改变服务器参数文件

SPFILE中的设置;BOTH则表示两者都改变。

重新定义日志成员

重新定义日志成员,是指为日志成员组重新指定一个日志成员。

例如:GROUP 4文件组中包含一个redo01.log文件,现在移除该文件,改为包含redo01_new.log。

CHECK约束

CHECK约束是指检查性约束,使用CHECK约束时,将对输入的每一个数据进行检查,只有符合条件的记录才会保存到表中,从而保证数据的有效性和完整性。

CHECK约束具有以下4个特点:

在CHECK约束的表达式中,必须引用表中的一个或者多个列;并且表达式的运算结果是一个布尔值。

在一个列中,可以定义多个CHECK约束。

对于同一列,可以同时定义CHECK约束和NOT NULL约束。

CHECK约束既可以定义在列级别中,也可以定义在表级别中。

创建表时,为表定义CHECK约束,需要使用CHECK(约束条件)语句。

例如,创建表STUDENT3,为STUDENTAGE列指定CHECK约束,如下:SQL> create table student3(

2 studentid number(4) not null primary key,

3 studentcode varchar2(10) unique,

4 studentname varchar2(20),

5 studentage number(3) constraint stu3_ck check(studentage > 0),

6 studentaddress varchar2(40)

7 );

表已创建。

FOREIGN KEY约束

FOREIGN KEY约束是指外键约束,用于引用本表或另一个表中的一列或一组列。引用列与被引用列可以在同一个表中,这种情况称为“自引用”。

被引用的列或列组应该具有主键约束或惟一约束。

引用列的取值只能为被引用列的值或NULL值。

可以为一个列或一组列定义FOREIGN KEY约束。

如果引用列中存储了被引用列的某个值,则不能直接删除被引用列

中的这个值,否则会与第二条相矛盾。如果一定要删除,需要先删

除引用列中的这个值,然后再删除被引用列中的这个值。

学生班级

添加FOREIGN KEY约束

在创建表时,为列添加FOREIGN KEY约束,形式如下:

column_name1 data_type [ CONSTRAINT constraint_name ]

REFERENCES table_name2 (column_name2)或

CREATE TABLE table_name (column_name data_type ,* … , +

[ CONSTRAINT constraint_name ] FOREIGN KEY (column_name1)

REFERENCES table_name2 (column_name2)* , … +)

其中,REFERENCES关键字用于定义column_name1列指向其他表或本表)中的column_name2列。

也可以为已创建的表中的列添加FOREIGN KEY约束,如下:

ALTER TABLE table_name1 ADD [ CONSTRAINT constraint_name ]

FOREIGN KEY (column_name1) REFERENCES table_name2 (column_name2); NOT NULL约束

NOT NULL约束是指非空约束,用于要求向表中添加记录时必须为被约

束的列提供数据,否则将出现错误。NOT NULL约束只能在列级别上定

义,一个表中可以定义多个NOT NULL约束。

添加NOT NULL约束

在创建表时,为列添加NOT NULL约束,形式如下:

column_name data_type

[ CONSTRAINT constraint_name ] NOT NULL

其中,CONSTRAINT constraint_name表示为约束指定名称。

也可以为已创建的表中的列添加NOT NULL约束,这时就需要使用

ALTER TABLE … MODIFY语句,形式如下:

ALTER TABLE table_name MODIFY column_name

[ CONSTRAINT constraint_name ] NOT NULL;

删除NOT NULL约束

如果需要删除表中的列上的NOT NULL约束,依然是使用ALTER

TABLE … MODIFY语句,形式如下:

TABLE table_name MODIFY column_name NULL;

PRIMARY KEY约束

PRIMARY KEY约束是指主键约束,用于惟一标识一行记录。在一个表

中只能定义一个PRIMARY KEY约束,该约束可以定义在单独的列上,也可

以定义在多个列上(表级约束)。定义了PRIMARY KEY约束的列或列组合

不能有重复值,也不能有NULL值。

添加PRIMARY KEY约束

在创建表时,为列添加PRIMARY KEY约束,形式如下:

column_name data_type [ CONSTRAINT constraint_name ]

PRIMARY KEY或CREATE TABLE table_name (

column_name data_type ,* … , +

* CONSTRAINT constraint_name + PRIMARY KEY (column_name)* , … +)

也可以为已创建的表中的列添加PRIMARY KEY约束,形式如下:

ALTER TABLE table_name ADD [ CONSTRAINT constraint_name ]

PRIMARY KEY (column_name);

删除PRIMARY KEY约束

删除列上的PRIMARY KEY约束,需要使用ALTER TABLE … DROP语

句,不过形式上只能采取指定约束名的方式,如下:

ALTER TABLE table_name DROP CONSTRAIN constraint_name;

如果在添加约束时使用CONSTRAINT子句为其指定了约束名,那么这里

就可以直接使用该名称。而如果没有使用CONSTRAINT子句,则约束名由Oracle自动创建,此时就可以通过连接数据字典user_cons_columns和

user_constraints来查看约束名称。

UNIQUE约束

UNIQUE约束是指惟一约束,用于要求列中不允许出现重复值。可以为

单独的列添加一个UNIQUE约束,也可以为多个列添加一个UNIQUE约束

(属于表级约束)。如果为多个列添加一个UNIQUE约束,只需要保证这多

个列的值不全部相同即可。

添加UNIQUE约束

在创建表时,为列添加UNIQUE约束,形式如下:

column_name data_type [ CONSTRAINT constraint_name ] UNIQUE

CREATE TABLE table_name (column_name data_type ,* … , +

* CONSTRAINT constraint_name + UNIQUE (column_name)* , … +)

也可以为已创建的表中的列添加UNIQUE约束,这时就需要使用ALTER TABLE … ADD语句,形式如下:

ALTER TABLE table_name

ADD [ CONSTRAINT constraint_name ] UNIQUE (column_name);

删除UNIQUE约束

删除列上的UNIQUE约束,可以使用ALTER TABLE … DROP语句,形

式如下:

ALTER TABLE table_name DROP UNIQUE (column_name);

如果约束有名称,也可以使用指定名称的方式删除该约束,语句形式为如下:

ALTER TABLE table DROP CONSTRAINT constraint_name;

视图USER_CONSTRAINTS

通过查询数据字典视图USER_CONSTRAINTS,可以了解当前用户模式中所有约束

视图USER_CONS_COLUMNS

增加列

为表增加列的语法形式如下:

ALTER TABLE table_name ADD column_name data_type;

【例】为表person增加email列,如下:

SQL> ALTER TABLE person ADD email VARCHAR2(20);

表已更改。

修改列的名称

修改表中的列的名称的语法如下:

ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name; 【例】将person表中的birthday列的名称修改为age,如下:

SQL> ALTER TABLE person RENAME COLUMN birthday TO age;

表已更改。

修改列的数据类型

修改表中的列的数据类型的语法如下:

ALTER TABLE table_name MODIFY column_name new_data_type;

【例】将person表中的age列的数据类型修改为NUMBER(4),如下:SQL> ALTER TABLE person MODIFY age NUMBER(4);

表已更改。

删除列

删除表中的列时可以分为一次删除一列和一次删除多列。一次删除一列

的语法形式如下:

ALTER TABLE table_name DROP COLUMN column_name;

一次删除多列的语法形式如下:

ALTER TABLE table_name DROP (column_name , …);

对比两种语法可以看出,删除一列时需要使用COLUMN关键字,而删除

多列时则不需要。

创建表

创建表需要使用CREATE TABLE语句,其语法如下:

CREATE TABLE [ schema. ] table_name(

column_name data_type [ DEFAULT expression ]

[ [ CONSTRAINT constraint_name ] constraint_def ]

* , … +

)[ TABLESPACE tablespace_name ];

语法说明

schema 指定表所属的用户名,或者所属的用户模式名称。

table_name 创建的表的名称。

column_name 表中的列的名称,可以有多个列,多个列之间使用逗号(,)隔开。同一个表中的列的名称必须惟一。

data_type 列的数据类型。

Oracle数据库课程设计报告学生成绩管理系统

Oracle数据库课程设计 题目学生成绩管理系统 _______ 班级10级软工数据库一班 姓名________ 谢铮________________ 学号_______ 105151640043 扌旨导老0帀 ____ 刘杨涛 ________

2013年1月5日 目录 一、前言 (2) 二、需求分析 (3) 三、系统设计 (5) 四、数据库设计 (7) 五、编程步骤 (19) 六、测试 (25) 七、课程设计总结 (33) 八、参考资料 (34) 九、附录 (34)

学生成绩管理是一个学校必不可少的部分,随着计算机和计算机知识的普及,学生成绩管理系统得到了更大的发展空间,通过对学生成绩管理系统的开发,可以提高校务人员的工作效率。 本次课程设计以java web 技术设计学生成绩管理系统为前台,使用oracle 数据库作为后台数据存储。 学生成绩管理是一个学校不可缺少的部分,一个良好的学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。学生成绩管理系统对学校加强学生成绩管理有着极其重要的作用.由于各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生成绩数据显得更为复杂,传统的手工成绩管理不仅工作量大,而且容易出现问题,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。已不能适应时代的发展。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。例:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件。 因此,开发设计这样一套学生成绩管理软件成为很有必要的事情.

oracle中常用函数大全

oracle中常用函数大全 1、数值型常用函数 函数返回值样例显示 ceil(n) 大于或等于数值n的最小整数select ceil(10.6) from dual; 11 floor(n) 小于等于数值n的最大整数select ceil(10.6) from dual; 10 mod(m,n) m除以n的余数,若n=0,则返回m select mod(7,5) from dual; 2 power(m,n) m的n次方select power(3,2) from dual; 9 round(n,m) 将n四舍五入,保留小数点后m位select round(1234.5678,2) from dual; 1234.57 sign(n) 若n=0,则返回0,否则,n>0,则返回1,n<0,则返回-1 select sign(12) from dual; 1 sqrt(n) n的平方根select sqrt(25) from dual ; 5 2、常用字符函数 initcap(char) 把每个字符串的第一个字符换成大写select initicap('mr.ecop') from dual; Mr.Ecop lower(char) 整个字符串换成小写select lower('MR.ecop') from dual; mr.ecop replace(char,str1,str2) 字符串中所有str1换成str2 select replace('Scott','s','Boy') from dual; Boycott substr(char,m,n) 取出从m字符开始的n个字符的子串select substr('ABCDEF',2,2) from dual; CD length(char) 求字符串的长度select length('ACD') from dual; 3 || 并置运算符select 'ABCD'||'EFGH' from dual; ABCDEFGH 3、日期型函数 sysdate当前日期和时间select sysdate from dual;

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)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。

ORACLE 内置函数大全

SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 2.CHR 给出整数,返回对应的字符; SQL> select chr(54740) zhao,chr(65) chr65 from dual; ZH C -- - 赵 A 3.CONCAT 连接两个字符串; SQL> select concat('010-','')||'转23' 高乾竞电话from dual; 高乾竞电话 ---------------- 010-转23 4.INITCAP 返回字符串并将字符串的第一个字母变为大写; SQL> select initcap('smith') upp from dual; UPP ----- Smith 5.INSTR(C1,C2,I,J) 在一个字符串中搜索指定的字符,返回发现指定的字符的位置; C1 被搜索的字符串 C2 希望搜索的字符串 I 搜索的开始位置,默认为1 J 出现的位置,默认为1 SQL> select instr('oracle traning','ra',1,2) instring from dual; INSTRING --------- 9 6.LENGTH 返回字符串的长度; SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst; NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL

完美Oracle数据库知识学习文档总汇

? ?ORACLE 一.DDL(数据定义语言) Oracle自动在语句执行前后都加上commit, 则DDL之前的没提交改变被隐式提交, 不能回滚. 数据类型 1.合法表示符(标示符) 1-30个字符,以字符(可以# $ _ )开始,数据库链接可以包含(@ , )两个特殊符号. 不能包含引号,不能是保留字. 特殊情况: 数据库名称最多8个字符, 数据库链接最多128个字符, 把列名放入引号可以使用保留字作为列名. ORACLE数据库的端口默认是1521 2.NUMBER Number(precision[,scale]) precision: 有效位数总数, 1---38 , 包括小数位 scale: 小数位数,没有小数可以省略小数和小数点; 省略此参数表示一个整数;当 scale> precision,则会在有效位之前加0 3.CHAR char(size) size: 1---2000字节, 值不足size时,会自动在值后面补充空格. char(size [CHAR|BYTE]) 指出基于字符或字节,9i以上版本 考虑数据库参数 NLS_LENGTH_SEMATICS (show parameters nls_length_semantics 可以看当前设置). 4.NCHAR 与char差别在于它规定的是最大字符个数.支持Unicode可变长度的字符集. 最大也是2000字节容量. 5.VarChar2 与char差别仅仅是:不会自动在值后面补充空格.最大4000字节,默认基于字节. 6.NVarChar2 存储可变长度且基于字符数量的数据. 7.RAW

学习oracle数据库的总结(图文整理)

1、在开发环境中连接到数据库,进行基本的select查询操作; 2、熟悉plsql的使用; 3、熟悉sqlplus相关命令(登录、查询、导入导出等) 登录sqlplus: 第一:使用dos窗口登录sqlplus Sqlplus 用户名/密码@数据库实例名 Sqlplus system/密码@数据库实例名as sysdba 第二:使用oracle自带的一个sqlplus登录,提供界面,显得更简单一些。 显示当前用户名:show user; 创建一个用户:create user 用户名identified by 密码; 给用户赋予登录的权限:grant connect to 用户名;(此时才可以使用这个用户来登录这个数据库。)给其赋予dba的权限。 修改用户的密码:alter user 用户名identified by 新密码; 查询: Select * from t_user; Select id from t_user; Select name from t_user; Select birthday from t_user; Select id,name from t_user; 导入导出: 导出表: (注意,导出表的exp命令不是在sqlplus下使用的,是在dos窗口下使用的命令。) exp userid=test/sa@test tables=(qx) file=d:\e1223.dmp exp userid=test/sa@test tables=(t_user,qx) file=f:\test.dmp 导出方案: Exp userid=test/sa@test owner=test file=f:\test2.dmp 导出数据库: Exp userid=test/sa@test full=y inctype=complete file=f:\all.dmp 导入表: 下面以一个例子来说明: 看下面的图,我的用户名test,密码sa,数据库实例名test,所有的表都在这里 现在我执行导出表JD的操作:exp userid=test/sa@test tables=(jd) file=f:\jd.dmp 在我的f盘下就出现了这么一个.dmp文件

Oracle函数大全

附录Ⅱ Oracle11g SQL函数 函数名 返回 类型 说明 字符串函数 ASCII(s) 数值 返回s首位字母的ASCII码 CHR(i) 字符 返回数值i的ASCII字符 CONCAT(s1,s2) 字符 将s2连接到字符串s1的后面 INITCAP(s) 字符 将每个单词首位字母大写其它字母小写 INSTR(s1,s2[,i[,j]]) 数值 返回s2在s1中第i位开始第j次出现的位置 INSTRB(s1,s2[,i[,j]]) 数值 与INSTR(s)函数相同,但按字节计算 LENGTH(s) 数值 返回s的长度。 LENGTHb(s) 数值 与LENGTH(s)相同,但按字节计算。 lower(s) 字符 返回s的小写字符 LPAD(s1,i[,s2]) 字符 在s1的左侧用s2字符串补足到总长度i LTRIM(s1,s2) 字符 循环去掉在s2中存在的s1左边字符 RPAD(s1,i[,s2]) 字符 在s1的右侧用s2字符串补足到总长度i RTRIM(s1,s2) 字符 循环去掉在s2中存在的s1右边字符 REPLACE(s1,s2[,s3]) 字符 用s3替换出现在s1中的s2 REVERSE(s) 字符 返回s倒排的字符串 SUBSTR(s,i[,j]) 字符 从s的第i位开始截得长度j的子字符串 SUBSTRB(s,i[,j]) 字符 与SUBSTR相同,但i,j按字节计算。 SOUNDEX(s) 返回与s发音相似的词 TRANSLATE(s1,s2,s3) 字符 将s1中与s2相同的字符以s3代替 TRIM(s) 字符 删除s的首部和尾部空格 UPPER(s) 字符 返回s的大写 正则表达式函数 REGEXP_LIKE() 布尔 功能与LIKE的功能相似 REGEXP_INSTR() 数值 功能与INSTR的功能相似 REGEXP_SUBSTR() 字符 功能与SUBSTR的功能相似 REGEXP_REPLACE() 字符 功能与REPLACE的功能相似 数字函数 ABS(i) 数值 返回i的绝对值 ACOS(i) 数值 反余玄函数,返回-1到1之间的数 ASIN(i) 数值 反正玄函数,返回-1到1之间的数 ATAN(i) 数值 反正切函数,返回i的反正切值

oracle培训计划

oracle培训计划 篇一:oracle学习计划 10天学习oracle计划 20XX年05月02日星期五11:56 oracle10G十天学习计划 共计10天(每天按6小时计算) 三、预期目标: 1.安装oracledatabase10g并配置数据库 2.管理oracle例程 3.管理数据库存储结构 4.创建和管理用户帐户 5.执行备份和恢复数据库 6.监控数据库、解决使用数据库时出现的问题和维护数据库 7.配置oraclenetservices 8.在数据库和文件之间移动数据 9.使用Rman创建和管理备份集和映像副本 10.将数据库恢复到过去某一时刻的状态 11.使用oracle安全备份来备份和恢复数据库 12.使用oracle闪回技术恢复数据库 13.检测块损坏情况并采取相应的措施修复损坏的块

14.使用各种数据库advisor来监控和提高数据库的性能 15.使用资源管理器来控制数据库资源的使用情况 16.使用调度程序来简化管理任务 17.复查数据库日志文件以便进行诊断 18.为数据库和单独的会话自定义基于语言的行为 19.管理VLdB;实施安全数据库 四、培训指导思想: 以oracle公司的官方培训教材为基础,结合客户的实际需求,适当增加客户感兴趣的内容,删除一些理论性强而客户又很少用到的内容。 五、具体授课安排: 时间授课内容主要实验 第一天内容一:简介(数据库体系结构) 1.描述课程目标 2.研究oracle10g数据库体系结构 内容二:安装oracle数据库软件 1.解释dBa核心任务和工具 2.计划oracle安装 3.使用最佳的灵活的体系结构 4.使用oracleUniversalinstaller(oUi)安装软件 内容三:创建oracle数据库 1.使用数据库配置助手(dBca)创建数据库 2.使用dBca创建数据库设计模板

oracle函数列表

PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数; 组函数 本文将讨论如何利用单行函数以及使用规则。SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数。这些函数均可用于SELECT,WHERE、ORDER BY等子句中,例如下面的例子中就包含了TO_CHAR,UPPER,SOUNDEX等单行函数。 SELECT ename,TO_CHAR(hiredate,'day,DD-Mon-YYYY')FROM empWhere UPPER(ename) Like 'AL%'ORDER BY SOUNDEX(ename) 单行函数也可以在其他语句中使用,如update的SET子句,INSERT的V ALUES子句,DELET的WHERE子句,认证考试特别注意在SELECT语句中使用这些函数,所以我们的注意力也集中在SELECT语句中。 NULL和单行函数 在如何理解NULL上开始是很困难的,就算是一个很有经验的人依然对此感到困惑。NULL值表示一个未知数据或者一个空值,算术操作符的任何一个操作数为NULL值,结果均为提个NULL值,这个规则也适合很多函数,只有CONCA T,DECODE,DUMP,NVL,REPLACE在调用了NULL参数时能够返回非NULL值。在这些中NVL函数时最重要的,因为他能直接处理NULL值,NVL有两个参数:NVL(x1,x2),x1和x2都式表达式,当x1为null时返回X2,否则返回x1。 下面我们看看emp数据表它包含了薪水、奖金两项,需要计算总的补偿 column name emp_id salary bonuskey type pk nulls/unique nn,u nnfk table datatype number number numberlength 11.2 11.2 不是简单的将薪水和奖金加起来就可以了,如果某一行是null值那么结果就将是null,比如下面的例子: update empset salary=(salary+bonus)*1.1 这个语句中,雇员的工资和奖金都将更新为一个新的值,但是如果没有奖金,即salary + null,那么就会得出错误的结论,这个时候就要使用nvl函数来排除null值的影响。 所以正确的语句是: update empset salary=(salary+nvl(bonus,0)*1.1 单行字符串函数 单行字符串函数用于操作字符串数据,他们大多数有一个或多个参数,其中绝大多数返回字符串 ASCII()

中南大学oracle数据库期末考试试题及复习资料

中南大学oracle数据库期末考试试题及答案 一、选择题 A1、以下()内存区不属于SGA。 A.PGA B.日志缓冲区 C.数据缓冲区 D.共享池 D2()模式存储数据库中数据字典的表和视图。 A.DBA B.SCOTT C.SYSTEM D.SYS C3、在Oracle中创建用户时,若未提及DEFAULT TABLESPACE关键字,则Oracle就将()表空间分配给用户作为默认表空间。 A.HR B.SCOTT C.SYSTEM D.SYS A4、()服务监听并按受来自客户端应用程序的连接请求。 A.OracleHOME_NAMETNSListener B.OracleServiceSID C.OracleHOME_NAMEAgent D.OracleHOME_NAMEHTTPServer B5、()函数通常用来计算累计排名、移动平均数和报表聚合等。 A.汇总 B.分析 C.分组 D.单行 B6、()SQL语句将为计算列SAL*12生成别名Annual Salary A.S ELECT ename,sal*12 …Annual Salary? FROM emp; B. B.SELECT ename,sal*12 “Annual Salary” FROM emp; C.C.SELECT ename,sal*12 AS Annual Salary FROM emp; D.D.SELECT ename,sal*12 AS INITCAP(“Annual Salary”) FROM emp; B7、锁用于提供( )。 A.改进的性能 B.数据的完整性和一致性 C.可用性和易于维护 D.用户安全 C8、( )锁用于锁定表,允许其他用户查询表中的行和锁定表,但不允许插入、更新和删除行。 A.行共享 B.行排他 C.共享 D.排他 B9、带有( )子句的SELECT语句可以在表的一行或多行上放置排他锁。 A.FOR INSERT B.FOR UPDATE C.FOR DELETE D.FOR REFRESH C10、使用( )命令可以在已分区表的第一个分区之前添加新分区。 A.添加分区 B.截断分区 C.拆分分区 D.不能在第一个分区前添加分区 C11、( )分区允许用户明确地控制无序行到分区的映射。 A.散列 B.范围 C.列表 D.复合 C12、可以使用()伪列来访问序列。 A.CURRVAL和NEXTVAL B.NEXTVAL和PREVAL C.CACHE和NOCACHE D.MAXVALUE和MINVALUE A13、带有错误的视图可使用()选项来创建。 A.FORCE B.WITH CHECK OPTION C.CREATE VIEW WITH ERROR D.CREATE ERROR VIEW B14、在联接视图中,当()时,该基表被称为键保留表。 A.基表的主键不是结果集的主键 B.基表的主键是结果集的主键 C.基表的主键是结果集的外键 D.基表的主键不是结果集的外键 D15、在列的取值重复率比较高的列上,适合创建()索引。 A.标准 B.唯一 C.分区 D.位图 C16、要以自身的模式创建私有同义词,用户必须拥有()系统权限

Oracle常用函数

数值函数

日期函数 SELECT TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS AM DY') FROM dual; SELECT TO_CHAR(sysdate,'YYYY"年"MM"月"DD"日"') FROM dual; 其他函数

5.高级查询(多表联合查询) 例子: SELECT job 职务 , SUM(sal) 工资总和 FROM emp WHERE job != 'PRESIDENT' GROUP BY job HAVING SUM(sal)>4500 ORDER BY SUM(sal); 分析函数 以下三个分析函数用于计算一个行在一组有序行中的排位,序号从1开始 ROW_NUMBER返回连续的排位,不论值是否相等 RANK具有相等值的行排位相同,序数随后跳跃 DENSE_RANK 具有相等值的行排位相同,序号是连续的 例子: SELECT deptno, ename, sal, comm, RANK() OVER (PARTITION BY deptno ORDER BY sal DESC, comm) RANK FROM emp; SELECT ename, job, deptno, sal, ROW_NUMBER() OVER (ORDER BY sal DESC) AS SAL_RANK FROM SCOTT.EMP; SELECT d.dname, e.ename, e.sal, DENSE_RANK() OVER (PARTITION BY e.deptno ORDER BY e.sal DESC) AS DENRANK FROM emp e, dept d WHERE e.deptno = d.deptno;

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数据库学习总结(一)

oracle数据库———学习总结 基础: 一、ORACLE中字段的数据类型 1、字符型 1)char 范围最大2000个字节定长 char(10) '张三' 后添空格6个把10个字节补满'张三' 性别char(2) '男' 2)varchar2 范围最大4000个字节变长 varchar2(10) '张三' 在数据库中'张三' 2、数字number 范围10的-38次方到10的38次方 可以表示小数也可以表示整数 number(4) 最大表示4位整数-9999 到9999 number(5,2) 表示5位有效数字2位小数的一个小数-999.99 到999.99 3、日期date 包含年月日和时分秒7个字节 4、图片blob 二进制大对象图像/声音4G 二、如何建表 学生表student create table student( --学生表 xh number(4), --学号 xm varchar2(10), --姓名 sex char(2), --性别 birthday date, --日期 sal number(7,2) --奖学金 ); 三、字段的添加、删除、修改 1、添加字段(学生所在班级classid) alter table student add (classid number(2)); 2、修改字段的长度 alter table student modify (xm varchar2(12)) ; 3、修改字段的类型(不能有记录的) alter table student modify (xh varchar2(5)); 4、删除一个字段 alter table student drop column sal; 5、删除表 drop table student; 6、表的名字修改 rename student to stu; 7、字段如何改名字 --先删除 a)alter table student drop column sal;

Oracle数据库技术课程报告

课程报告(20 15 -20 16 学年第 1 学期)

报告题目(与Oracle有关的某一方面知识介绍,一级标题,三号字,宋体,居中,加粗) 一、目的与要求(二级标题,四号字,宋体,顶格,加粗) (正文小四号字,宋体) 二、设计内容等(字数3000字以上) 1、(三级标题,小四号字,宋体,顶格,加粗) (正文小四号字,宋体) 参考文献(至少列出三个,标题五号,宋体,加粗,居中) 参考文献内容(五号、宋体;英文用五号,Times New Roman) 其他格式要求: (A4纸):左边距:25mm,右边距:25mm,上边距:30mm,下边距:25mm,页眉边距:23mm,页脚边距:18mm 字符间距:标准 行距:倍 左侧装订 可加附页。此处要求写报告时删去。 上交时间:12月4日。

oracle数据库性能优化 一、目的与要求: oracle数据库性能优化对于保证系统安全,信息安全,业务正常运作具有重要影响。全文首先简要介绍了oracle数据库及特点,然后对数据库性能的评价指标做出一般性概述。随后从CPU利用和内存分配这两方面阐述了数据库性能优化的主要方向。最后介绍了oracle数据库应用系统性能优化技术,即sql语句优化,oracle内存调整,oracle 表空间调整。 信息化系统都基于数据库而运行,而数据库系统性能又最大程度的决定着应用系统的性能。大多数数据库系统在运行一段时间后都会存在一定的性能问题,主要涉及数据库硬件、数据库服务器、数据库内存、应用程序、操作系统、数据库参数等方面。因此,基于数据库系统的性能调整与优化对于整个系统的正常运行起着至关重要的作用。 二、设计内容: 1 oracle数据库及特点 oracle是一个功能极其强大的数据库系统。它起始于七十年代末的关系型数据库技术。这种类型数据库的关键是怎样理解数据间的关系,然后构造反映这些关系的信息库。oracle成功的将关系型数据库转移到桌面计算机上,提供了一个完整的客户/服务器体系结构的商用DBMs。同时它利用SQL*NET软件层,与多种操作系统支持通信协议相配合,为oracle关系型数据库提供分布式环境,可以实现单点更新,多点查询。Oracle数据库已经被用于各种大型信息系统中,特别是诸如银行,保险,烟草,石油等大数据量,对安全性要求较高的企业。其特点主要体现在: 1)支持大数据库、多用户的高性能事务处理Oracle支持最大数据库(几百TB),可充分利用硬件设备。支持大量用户同时在同一数据上执行各种应用,并使数据争用最小,保证数据的一致性[1]。 2)硬件环境独立。Oracle具有良好的硬件环境独立性,支持各种类型的大型,中型,小型和微机系统。 3)遵守数据存取语言、操作系统、用户接口和网络通信协议的工业标准。 4)较好的安全性和完整控制。Oracle有用户鉴别、特权)、角色、触发器、日志、后备等功能,有效地保证了数据存取的安全性和完整性以及并发控制和数据的回复。 5)具有可移植性、可兼容性与可连接性oracle不仅可以在不同型号的机器上运行,而且可以在同一厂家的不同操作系统支持下运行。具有操作系统的独立性。 2 数据库系统性能评价指标 主要从以下几个方面进行: 1)系统吞吐量。吞吐量是指单位时间内数据库完成的SQL语句数目,以每秒钟的事务量(tps)表示。提高系统吞吐量可以通过减少服务时间在同样的资源环境下做更多的工作或通过减少总的响应时间使工作做得更快这两种方法来实现。 2)用户响应时间。响应时间是指用户从提交SQL语句开始到获得结果集的第一行所需要的时间,是应用做出反应的时间,以毫秒或秒表示。响应时间可以分为系统服务时间(CPU时间)和用户等待时间两项。也就是说,要获得满意的用户响应时间有两个

oracle存储过程函数汇总().docx

oracle存储过程函数汇总() Character function return character value These functions all received is the character parameter type group (except CHR) and returns the character value? In addition to the special instructions, the function returns VARCHAR2 most numerical types? The restrictions on the return type of the character function are the same as those for the basic database type? The maximum value of character variable storage: The VARCHAR2 value is limited to 2000 characters (ORACLE 8 to 4000 characters) The CHAR value is limited to 255 characters (0RACLE8 2000) The long type is 2GB The Clob type is 4GB 1,CHR Syntax: Chr (x) Function: return in the database character set with numerical equivalence with the character of X. CHR and ASCII are a pair of inverse functions? After CHR conversion character after ASCII conversion and obtained the original word

Oracle数据库心得体会

学习Oracle数据库的心得体会 对于学习Oracle数据库,应该先要了解Oracle的框架。它有物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成),逻辑结构(表空间、段、区、块),内存分配(SGA和PGA)算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写,后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程),SCN(System Change Number)。这些东西感觉都比较专业,我对它们也就是个知道,想要真真去认识我还得努力去做。虽然懂得还不是很多,起码会了基本的软件操作,老师说我们用的都是客户端,服务端看不到,也不知道服务端是什么样的,只知道客户端就挺多东西的,没有真正的去学习利用是很难掌握的。 Oracle数据库的学习使我对数据库的有了新的进步,以后再看到也就不至于什么也不懂,其实那么多数据库我觉得学好一门就行,只是他们的语言可能不大一样,学好一门后就可去认识其它的,这样应该有事半功倍的效果。就像我学习C语言,当时不能说是学习的棒,但不算差。所以我对以后的语言感觉都不是很困难,了解了https://www.wendangku.net/doc/7415088298.html,、C++还有网页中用的Html 语言、asp语言都能看懂,起码可以对别人的东西进行了一下修改。因此,我感谢Oracle数据库老师给了我有用的知识,以便我在以后学习或认识更多的内容能有新的方法和思维,也能更加有效和快速的去消化吸收新的东西。希望在今后中,Oracle能给我更多帮助,让我在我熟悉的https://www.wendangku.net/doc/7415088298.html,中运用上去,我以前的一个目标是要为学校的选课做一个选课助手来帮助大学。不过因为种种原因一直没有完成,也包括我对数据库的不了解,因为学了Oracle以后知道第一项内容是通过SQL查询后得到的,如果去把它们联系起来还不是真正明白,不过我相信我的目标能在学习Oracle后得到进展。

oracle常用函数使用大全

oracle常用函数使用大全 一、运算符 算术运算符:+ - * / 可以在select 语句中使用 连接运算符:|| select deptno|| dname from dept; 比较运算符:> >= = != < <= like between is null in 逻辑运算符:not and or 集合运算符:intersect ,union,union all,minus 要求:对应集合的列数和数据类型相同 查询中不能包含long 列 列的标签是第一个集合的标签 使用order by时,必须使用位置序号,不能使用列名 例:集合运算符的使用: intersect ,union,union all,minus select * from emp intersect select * from emp where deptno=10 ; select * from emp minus select * from emp where deptno=10; select * from emp where deptno=10 union select * from emp where deptno in (10,20); --不包括重复行 select * from emp where deptno=10 union all select * from emp where deptno in (10,20); --包括重复行 二.ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年显示值:07 yyy three digits 三位年显示值:007 yyyy four digits 四位年显示值:2007 Month: mm number 两位月显示值:11 mon abbreviated 字符集表示显示值:11月,若是英文版,显示nov month spelled out 字符集表示显示值:11月,若是英文版,显示november

大学oracle数据库总结(考试必备)

1.下列选项中,关于序列的描述哪一项不正确?(任何时候都可以使用序列的伪列CURRVAL返回当前序列。) 2.oracle中,用来判断列值为空的操作符是(IS NULL) 3.下列选项中,那一部分不是oracle实例的组成部分?(控制文件) 4.使用传统导出工具EXP导出SCOTT用户的所有对象时,应该选择下列哪一项?(SCHEMAS) 5.在oracle中,一个用户拥有所有数据库对象统称:(模式) 6.在oracle中,使用HAVING子句亦可以进行条件查询,以下选项说法正确的是(HAVING子句用于对已分组结果的条件查询) 7.视图头部中的RETURN语句的作用是什么?(声明返回值的数据类型) 8.有字符串数据“TEST”,分别存放到char(10)和varchar(10)类型的字段中,其实际存储长度为:(10 4) 9.下列哪一个动作不会激发一个触发器?(查询数据) 10对于下面的函数,哪个语句将成功调用?(Sum:=Calc_Sum(23,12))11.DELETE FROM S WHERE 年龄>60的语句功能:S表中年龄大于60岁的记录被加上删除标记 12.GROUP BY子句的作用是什么?(查询结果的分组条件) 13.查看下面的语句构建了哪一种索引?(复合索引) 14.下列哪个语句会终止事务(COMMIT) 1.(表空间)是oracle中可以使用的最大的逻辑存储结构,(数据块)是oracle逻辑存储结构中最小的I/O单元。 2.PL/SQL程序块主要包括3个主要部分:声明部分、可执行部分、(异常处理部分)。 3.查看操作数据表中所影响的行数,可通过游标的(%ROWCOUNT)属性实现。 4.(角色)是具有名称的一组相关权限的组合。 5.oracle数据库系统的物理存储结构主要由3类文件组成,分别为数据文件、(控制文件)、(重做日志文件)。 6.在SQL PLUS命令行下,查看EMP表的结构应使用(describe)命令。 7.自定义异常必须使用(raise)语句引发。 8.在oracle10g版本以前,对撤销信息的管理采用(回滚段),从oracle10g后采用(自动UNDO管理)方式管理撤销信息。

Oracle日期函数大全

在oracle中有很多关于日期的函数,如: 1、add_months()用于从一个日期值增加或减少一些月份 date_value:=add_months(date_value,number_of_months) 例: SQL> select add_months(sysdate,12) "Next Year" from dual; Next Year ---------- 13-11月-04 SQL> select add_months(sysdate,112) "Last Year" from dual; Last Year ---------- 13-3月 -13 SQL> 2、current_date()返回当前会放时区中的当前日期 date_value:=current_date SQL> column sessiontimezone for a15 SQL> select sessiontimezone,current_date from dual; SESSIONTIMEZONE CURRENT_DA --------------- ---------- +08:00 13-11月-03 SQL> alter session set time_zone='-11:00' 2 / 会话已更改。 SQL> select sessiontimezone,current_timestamp from dual; SESSIONTIMEZONE CURRENT_TIMESTAMP --------------- ------------------------------------ -11:00 12-11月-03 04.59.13.668000 下午 -11: 00 SQL> 3、current_timestamp()以timestamp with time zone数据类型返回当前会放时区中的当前日期timestamp_with_time_zone_value:=current_timestamp([timestamp_precision]) SQL> column sessiontimezone for a15

相关文档