Oracle数据库概念和PL/SQL语句块格式

Oracle数据库概念

Oracle数据库,有以下几个重要的概念:

  • Oracle服务器
    由数据库实例和数据库文件组成,即数据库管理系统 DBMS

  • Oracle实例
    由一些内存区和后台程序组成。
    内存结构:数据库高速缓存、重做日志缓存、共享池、流池、可选内存区。
    后台程序:
    SMON 系统监控进程
    PMON 进程监控
    CKPT 检查点进程
    DBWR 数据库写进程
    LGWR 日志写进程

    ARCn 归档进程
    OTHERS 其他进程

    注意:要访问数据库,必须先启动实例,启动实例时,先分配内存,然后在启动后台进程,上面红色的5个进程必须启动,否则实例无法创建。
    Linux上可以查看进程:

    ps -ef | grep _ORCL
    
  • Oracle物理结构
    指数据库中一系列操作系统文件,主要有三类:数据文件(Data File);控制文件(Control File);重做日志文件(Redo File)
    查询数据文件,可以去dba_data_files表中查。

PL/SQL语句块

PL/SQL 语句块基本结构:

块头区
IS
	声明区
BEGIN
	执行区
  EXCEPTION
  	异常区
  END

块头区

格式:

Program_type program_name ([parameter_name IN / OUT/ IN OUT type specs, ] ....)
[RETURN datatype]

Program_type: FUNCTION、PROCEDURE、PACKAGE
参数分三类:IN参数,表示将参数传递给程序单元;OUT参数,该参数返回给该程序的调用者;IN OUT为双向参数
specs: 可以包含关键字 NOT NULL
对于FUNCTION,必须返回数值,函数可以在其执行部分的任意位置使用RETURN 关键字;

声明区

格式:

Var_name [CONSTRAINT] datatype [(constraint)] [:= value];

:= 为赋值运算符
例子:

## 声明一个变量
Var_name VARCHAR(20);
## 声明一个带约束的变量
Var_name VARCHAR(20) NOT NULL;
## 声明一个常量且赋初始值
Var_name CONSTANT VARCHAR(20) := 'TEST';
## 声明一个变量且使用DEFAULT关键字为变量赋值
Var_name INTEGER DEFAULT 3.1415926;

执行区

即程序逻辑部分

异常区

格式:

EXCEPTION
	WHEN exception_name1
	THEN
		hand error1;
	WHEN exception_name2
	THEN
		hand error2;
	WHEN others
	DEFAULT error handling;

例子:

CREATE OR REPLACE FUNCTION p_test(f float)
IS
	var_name varchar2(20);
	exception1 EXCEPTION;
BEGIN
	statement1;
BEGING
	statement2;
Raise exception1;
	EXCEPTION
	WHEN exception1
		THEN
		hand error1;
END
	statement3;
EXCEPTION
	WHEN others
	error handling;
END

匿名PL/SQL语句块

就是没有块头区,直接从声明区开始
例如:

DECLARE
	var_first_name varchar2(20);
	var_last_name varchar2(20);
BEGIN
	select first_name, last_name
	into var_first_name, var_last_name 
	from employee
	where employee_id = 16;
	DBMS_OUTPUT.PUT_LINE('var_first_name is : '||var_first_name );
	DBMS_OUTPUT.PUT_LINE('var_last_name is : '||var_last_name );
EXCEPTION
	WHEN NO_DATA_FOUND THEN
	DBMS_OUTPUT.PUT_LINE('no data find');
END;

DBMS_OUTPUT.PUT_LINE将数据库服务器返回的数据显示在SQL*PLUS上面。

也可以使用替代变量增加程序的灵活性,替代变量的符号是:“&”或“&&”,改写上面的例子如下:

DECLARE
	var_first_name varchar2(20);
	var_last_name varchar2(20);
	var_employee_id number :=&b_employee_id
BEGIN
	select first_name, last_name
	into var_first_name, var_last_name 
	from employee
	where employee_id = var_employee_id;
	DBMS_OUTPUT.PUT_LINE('var_first_name is : '||var_first_name );
	DBMS_OUTPUT.PUT_LINE('var_last_name is : '||var_last_name );
EXCEPTION
	WHEN NO_DATA_FOUND THEN
	DBMS_OUTPUT.PUT_LINE('no data find');
END;

运行程序时,会先提示输入替代变量的值。

SQL*PLUS工具

对于PL/SQL程序,分号表示语句结束,而使用’.'号,表示整个语句块的结束,也可以省略。
按回车键后,语句块不会执行,必须使用“/”符号执行PL/SQL语句块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、 概念介绍: 数据库DATABASE、表TABLE、列COLUMN、行ROW、关键字PRIMARY KEY、索引INDEX 二、 数据类型: LONG RAM:超长大型数据(照片、图形、描述等不定长数据)。 DATE:包含日期和时间。 INTEGER:有符号全长二进制整数(31位精度)。 SMALLINT:有符号半长二进制整数(15位精度)。 DECIMAL (p[,q]): 有符号的封装了的十进制小数,最多有 p 位数,并假设有 q 位在小数点右边。 如果省略 q ,则认为是 0。 FLOAT:有符号双字浮点数。 CHAR(n): 长度为 n 的定长字符串。 VARCHAR(n): 最大长度为 n 的变长字符串。 CHAR (5) 和 VARCHAR2(5)的区别是 CHAR不足5位后面自动加上空格,VARCHAR2不加 三、 列的非空属性NOT NULL: 如果一个列具有非空属性,则在给该表增加、修改数据时必须保证该列有内容,否则会出错。 如果一个列允许为空,该列可以不放任何内容,即空值(在SQL中书写为NULL),空值不是空格。 如果一个列内容为空值,则该列不等于任何值(包括空值)。 例如:列SAGE1、SAGE2的内容为空,列SAGE3内容为20,则下面的逻辑表达式全部为NULL:SAGE1=SAGE2、SAGE1SAGE2、SAGE1=SAGE3、SAGE3>SAGE1。下面的逻辑表达式全部为真:SAGE1 IS NULL、SAGE3 IS NOT NULL。下列表达式全为空:sage1+100,sage2+sage3 四、 特殊约定: 1. 所有SQL语句以分号结束不是以回车换行结束。 2. 中扩号代表选项,就是其中的内容可有可无。 3. 下面讲的列名在很多情况下也可以是表达式。 4. 表名格式:[用户名.]表名,例如:user001.student,如果不注名用户,则说明是当前登陆的用户的表。 五、 建表或视图语句CREATE 格式: CREATE TABLE 表名 (列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL]); CREATE VIEW 视图名 AS SELECT ……; CREATE TABLE 表名 AS SELECT ……; Create table as 经常在修改一个表前备份该表,而且运行速度很快且不用提交 例如:Select table a_student as select * from student; Create table as 还可以用来复制表结构 例如:假设有三个表

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值