Oracle第1页COPYRIGHT©ShaYan基本语法启动服务netstart服务名→启动服务(DOS中使用)。→常用服务:OracleOracle_SYTNSListener—此服务用于接收从客户端发出的请求,然后将请求传递给Oracle服务器;→常用服务:OracleServiceSHAYAN—此服务用于启动数据库;→常用服务:OracleOracle_SYAgent—此服务用于执行作业、监控Oracle服务或对象的性能;→常用服务:OracleOracle_SYServer—此服务用于启动OracleHTTP服务器;→常用服务:OracleOracle_SYManagementServer—此服务用于维护管理控制台对各个被管理服务器节点之间的集中的、智能的、→常用服务:OracleOracle_SYManagementServer—分布式的控制。netstop服务名→停止服务(DOS中使用)。使用工具sqlplus→使用SQL*Plus工具(DOS中使用)。http://localhost:7778/isqlplus→使用iSQL*Plus工具(浏览器中使用)。备份导出实用程序exp→运行导出实用程序(DOS中使用)。exphelp=y→显示导出实用程序的参数说明(DOS中使用)。恢复导入实用程序imp→运行导入实用程序(DOS中使用)。imphelp=y→显示导入实用程序的参数说明(DOS中使用)。用户管理系统的超级用户是sysCREATEUSER用户名IDENTIFIEDBY密码DEFAULTTABLESPACE表空间名TEMPORARYTABLESPACE表空间名→创建用户。→DEFAULTTABLESPACE—指定此用户的默认表空间(若没有指定则将SYSTEM设为默认表空间);→TEMPORARYTABLESPACE—指定此用户的临时表空间(若没有指定则将TEMP设为临时表空间)。DROPUSER用户名CASCADE→删除用户。→CASCADE—若此用户拥用模式对象则必须使用此参数。ALTERUSER用户名IDENTIFIEDBY密码→修改用户的密码。GRANTCONNECTTO用户名→允许用户连接数据库并在数据库中创建表或其它对象。GRANTRESOURCETO用户名→允许用户使用数据库中的表。GRANTCREATEANYTABLETO用户名→允许用户创建表。GRANTDROPANYTABLETO用户名→允许用户删除表。GRANTUPDATEANYTABLETO用户名→允许用户修改表。GRANTSELECTANYTABLETO用户名→允许用户查看表。GRANTCREATEANYSEQUENCETO用户名→允许用户创建序列。GRANTDROPANYSEQUENCETO用户名→允许用户删除序列。GRANTALTERANYSEQUENCETO用户名→允许用户修改序列。GRANTSELECTANYSEQUENCETO用户名→允许用户查看序列。GRANTCREATEANYDIRECTORYTO用户名→允许用户创建目录。GRANTDROPANYDIRECTORYTO用户名→允许用户删除目录。GRANTSELECTANYDIRECTORYTO用户名→允许用户查看目录。CONN用户名/密码→切换到指定用户。CONNsys/密码ASSYSDBA→切换到超级用户。SHOWUSER→显示当前登录的用户。系统命令SETTIMINGON|OFF→显示|不显示操作所用的时间。SETSERVEROUTPUTON|OFF→允许|不允许在屏幕上显示输出结果。数据库的数据类型数值型NUMBER浮点数、数字的总位数为38位、小数位数不确定NUMBER(n)整数、数字的整数位数为n位(1~38)、小数位数为0位NUMBER(n,m)定点数、数字的总位数为n位(1~38)、小数位数为m位(-84~127、负数表示没有小数部分且整数部分四舍五入到指定的位数)字符串型CHAR(n)长度≤2000、存储大小是固定的(如果值小于指定长度则用空格填充)VARCHAR2(n)长度≤4000、存储大小是变化的(如果值小于指定长度则实际长度为值的长度)LONG长度≤2GB、存储大小是变化的(一个表中只允许有一个字段为此类型、且不能定义约束和建立索引、过程不能接受此类型的参数)二进制型RAW(n)长度≤2000、存储大小是固定的LONGRAW长度≤2GB、存储大小是变化的(一个表中只允许有一个字段为此类型、且不能定义约束和建立索引、过程不能接受此类型的参数)日期时间型DATE公元前4712年01月01日~公元9999年12月31日(存储年、月、日)TIMESTAMP公元前4712年01月01日~公元9999年12月31日(存储年、月、日、时、分、秒、毫秒)大对象型CLOB长度≤4GB、存储字符串数据BLOB长度≤4GB、存储二进制数据BFILE长度≤4GB、存储二进制文件运算符加+减-乘*除/幂**字符串连接||等于=不等于!=大于>大于等于>=小于<小于等于<=逻辑反NOT逻辑与AND逻辑或OR通配符一个字符_多个字符%Oracle第2页COPYRIGHT©ShaYanPL/SQL数据类型数值型NUMBER浮点数、数字的总位数为38位、小数位数不确定NUMBER(n)整数、数字的整数位数为n位(1~38)、小数位数为0位NUMBER(n,m)定点数、数字的总位数为n位(1~38)、小数位数为m位(-84~127、负数表示没有小数部分且整数部分四舍五入到指定的位数)BINARY_INTEGER整数、-2147483647~+2147483647PLS_INTEGER整数、-2147483647~+2147483647(运算速度比NUMBER、BINARY_INTEGER快)字符串型CHAR(nBYTE|CHAR)长度≤32767字节|字符、存储大小是固定的VARCHAR2(nBYTE|CHAR)长度≤32767字节|字符、存储大小是变化的LONG长度≤32760字节、存储大小是变化的二进制型RAW(n)长度≤32767字节、存储大小是固定的LONGRAW长度≤32760字节、存储大小是变化的日期时间型DATE公元前4712年01月01日~公元9999年12月31日(存储年、月、日)TIMESTAMP(n)公元前4712年01月01日~公元9999年12月31日(存储年、月、日、时、分、秒、毫秒)(毫秒的位数为n、0~9)布尔型BOOLEANTRUE、FALSE、NELL(只能对此类型的变量进行逻辑操作)大对象型CLOB长度≤4GB、存储字符串数据BLOB长度≤4GB、存储二进制数据BFILE长度≤4GB、存储二进制文件变量变量名数据类型;→声明变量(一个语句只能声明一个变量)。变量名表名.字段名%TYPE;→声明变量,此变量的数据类型与指定表的某个字段的数据类型一致。变量名表名%ROWTYPE;→声明变量,此变量可以储存表中某一行的数据。→(可以使用变量名.字段名的方式来获取此变量中的某一个字段的数据。)变量名:=值;→为变量赋值。变量名:=&提示文本;→程序执行的过程中人工输入值,然后将这个值赋给变量。常量常量名CONSTANT数据类型:=值;→声明常量。从表中读取数值、字符串、二进制、日期时间、布尔型的数据SELECT字段名,…INTO变量名,…FROM表名WHERE表达式;→将查询结果存储到变量中(查询结果只能是一行、且一个变量只存储一个字段的值)。从表中读取CLOB型的数据SELECTCLOB字段名INTOCLOB变量名FROM表名WHERE表达式;DBMS_LOB.READ(CLOB变量名,n,m,字符串变量名);→将CLOB字段的值存储到CLOB变量中。→从CLOB变量中的字符串的第m个位置开始取n个字符,并将这些字符存储到指定的字符串变量中。向表中插入BLOB型的数据…BBLOB;FBFILE;…INSERTINTO表名(BLOB字段名)VALUES(EMPTY_BLOB())RETURNBLOB字段名INTOB;F:=BFILENAME(‘目录别名’,‘\文件名’);DBMS_LOB.OPEN(F,DBMS_LOB.FILE_READONLY);DBMS_LOB.LOADFROMFILE(B,F,DBMS_LOB.GETLENGTH(F));DBMS_LOB.CLOSE(F);COMMIT;…→声明BLOB型变量。→声明BFILE型变量。→将指定文件中的二进制数据存储到BLOB字段中。向表中插入BFILE型的数据CREATEDIRECTORY目录别名AS‘路径\目录名’;INSERT…VALUES(BFILENAME(‘目录别名’,‘\文件名’));→为指定的目录创建别名。→(可以使用GRANTREAD,WRITEONDIRECTORY目录别名TO用户名;语句将指定目录的读、写→(权限授予其他用户。)→将指定的文件插入到BFILE型的字段中。块、单行注释、多行注释控制语句DECLARE声明部分;BEGIN可执行部分;EXCEPTION异常处理部分;END;--单行注释/*多行注释*/IF表达式THEN语句;ELSE语句;ENDIF;CASE表达式WHEN值THEN语句;…ELSE语句;ENDCASE;CASEWHEN表达式THEN语句;…ELSE语句;ENDCASE;LOOP语句;ENDLOOP;While表达式LOOP语句;ENDLOOP;EXIT;强制退出语句NULL;空执行语句FOR变量IN|INREVERSE值1..值2LOOP语句;ENDLOOP;GOTO标签;…标签…执行SQL语句PL/SQL可以直接使用数据操纵语句、事务控制语句,但不可以直接使用数据定义语句、数据控制语句EXECUTEIMMEDIATE‘数据定义语句|数据控制语句’;→使用数据定义语句、数据控制语句。执行动态SQL语句SELECT…WHERE字段名关系运算符&变量名|‘&变量名’;→程序执行的过程中人工输入值(此值使用指定的变量来接收),然后利用这个值执行相应的语句。NextPage…Oracle第3页COPYRIGHT©ShaYan预定义异常处理…EXCEPTIONWHEN预定义异常名THEN异常处理语句;WHENOTHERSTHEN异常处理语句;END;→当某条语句引发了预定义异常后,程序将转到为此预定义异常编写的异常处理部分执行。→预定义异常:ACCESS_INTO_NULL—未初始化对象时引发;→预定义异常:COLLECTION_IS_NULL—给未初始化的对象赋值时引发;→预定义异常:VALUE_ERROR—对象的值超出大小限制时引发;→预定义异常:INVALID_NUMBER—将字符串转换为数值时引发;→预定义异常:ZERO_DIVIDE—以零作为除数时引发;→预定义异常:CASE_NOT_FOUND—CASE语句中的选项与用户输入的数据不匹配时引发;→预定义异常:NO_DATA_FOUND—表中不存在请求的行、引用已经删除的元素时引发;→预定义异常:TOO_MANY_ROWS—执行SELECT语句后返回多行时引发;→预定义异常:DUP_VAL_ON_INDEX—试图将重复的值存储到使用了唯一索引的表中时引发;→预定义异常:CURSOR_ALREADY_OPEN—试图重新打开已经打开的游标时引发;→预定义异常:INVALID_CURSOR—执行了非法的游标运算时引发;→预定义异常:LOGIN_DENIED—用户输入的用户名、密码无效时引发;→预定义异常:STORAGE_ERROR—内存损坏、内存耗尽时引发。→常用函数:SQLCODE()—返回异常的代码;→常用函数:SQLERRM()—返回异常的信息。自定义异常处理DECLARE…自定义异常名EXCEPTION;BEGIN…RAISE自定义异常名;EXCEPTIONWHEN自定义异常名THEN异常处理语句;END;→声明自定义异常。→人工引发自定义异常。→当人工引发了