转载:Oracle SQL 语言从入门到精通

 
  数据库对象包括表、视图、索引、同义词、簇、触发器、函数、过程、包、数据库链、快照等(表空间、回滚段、角色、用户)。数据库通过对表的操作来管理存储在其中的数据。
  
   SQL*PLUS 界面:
  登录:输入 SQLPLUS 回车;输入正确的 ORACLE 用户名并回车;输入用户口令并回车,显示提示符: SQL>
  退出:输入 EXIT 即可。
   2 )命令的编辑与运行:
  在命令提示符后输入 SQL 命令并运行,以分号结束输入;以斜杠结束输入;以空行结束输入;
  利用 SQL 缓冲区进行 PL/SQL 块的编辑和运行;
  利用命令文件进行 PL/SQL 块的编辑和运行。
  
  数据库查询
  用 SELECT 语句从表中提取查询数据。语法为
   SELECT [DISTINCT] {column1,column2,…} FROM tablename WHERE {conditions} GROUP BY {conditions} ORDER BY {expressions} [ASC/DESC];
  说明: SELECT 子句用于指定检索数据库的中哪些列, FROM 子句用于指定从哪一个表或视图中检索数据。
   SELECT 中的操作符及多表查询 WHERE 子句。 (LIKE,IS,…)
   WHERE 子句中的条件可以是一个包含等号或不等号的条件表达式,也可以是一个含有 IN NOT IN BETWEEN LIKE IS NOT NULL 等比较运算符的条件式,还可以是由单一的条件表达通过逻辑运算符组合成复合条件。
   ORDER BY 子句
   ORDER BY 子句使得 SQL 在显示查询结果时将各返回行按顺序排列,返回行的排列顺序由 ORDER BY 子句指定的表达式的值确定。
  连接查询
  利用 SELECT 语句进行数据库查询时,可以把多个表、视图的数据结合起来,使得查询结果的每一行中包含来自多个表达式或视图的数据,这种操作被称为连接查询。
  连接查询的方法是在 SELECT 命令的 FROM 子句中指定两个或多个将被连接查询的表或视图,并且在 WHERE 子句告诉 ORACLE 如何把多个表的数据进行合并。根据 WHERE 子句中的条件表达式是等还是不等式,可以把连接查询分为等式连接和不等式连接。
  子查询
  如果某一个 SELECT 命令(查询 1 )出现在另一个 SQL 命令(查询 2 )的一个子句中,则称查询 1 是查询 2 的子查询。
  
  基本数据类型( NUMBER,VARCHAR2,DATE O
   RACEL 支持下列内部数据类型:
   VARCHAR2 变长字符串,最长为 2000 字符。
   NUMBER 数值型。
   LONG 变长字符数据,最长为 2G 字节。
   DATE 日期型。
   RAW 二进制数据,最长为 255 字节。
   LONG RAW 变长二进制数据,最长为 2G 字节。
   ROWID 二六进制串,表示表的行的唯一地址。
   CHAR 定长字符数据,最长为 255
  
  常用函数用法:
  一个函数类似于一个算符,它操作数据项,返回一个结果。函数在格式上不同于算符,它个具有变元,可操作 0 个、一个、二个或多个变元,形式为:
  函数名(变元,变元,
  函数具有下列一般类形:
  单行函数
  分组函数
  单行函数对查询的表或视图的每一行返回一个结果行。它有数值函数,字符函数,日期函数,转换函数等。
  分组函数返回的结果是基于行组而不是单行,所以分组函数不同于单行函数。在许多分组函数中可有下列选项:
   DISTRNCT 该选项使分组函数只考虑变元表达式中的不同值。
   ALL 该选项使分组函数考虑全部值,包含全部重复。
  全部分组函数(除 COUNT * )外)忽略空值。如果具有分组函数的查询,没有返回行或只有空值(分组函数的变元取值的行),则分组函数返回空值。
  
  
   5 数据操纵语言命令:
  数据库操纵语言( DML )命令用于查询和操纵模式对象中的数据,它不隐式地提交当前事务。它包含 UPDATE INSERT DELETE EXPLAIN PLAN SELECT LOCK TABLE 等命令。下面简单介绍一下:
   1) UPDATE tablename SET {column1=expression1,column2=expression2,…} WHERE {conditions};
  例如: S QL>UPDATE EMP
   SET JOB =’MANAGER’
   WHERE ENAME=’MAPTIN’;
   SQL >SELECT * FROM EMP;
   UPDATE 子句指明了要修改的数据库是 EMP, 并用 WHERE 子句限制了只对名字 (ENAME) ’MARTIN’ 的职工的数据进行修改 ,SET 子句则说明修改的方式 , 即把 ’MARTION’ 的工作名称 (JOB) 改为 ’MARAGER’.
  
   2) INSERT INTO tablename {column1,column2,…} VALUES {expression1,expression2,…};
  例如: SQL>SELECT INTO DEPT DNAME DEPTNO
   VALUES ‘ACCOUNTING’ 10
  
   3) DELETE FROM tablename WHERE {conditions};
  例如: SQL>DELETE FROM EMP
   WHERE EMPNO = 7654;
   DELETE 命令删除一条记录 , 而且 DELETE 命令只能删除整行 , 而不能删除某行中的部分数据 .
  
  
   4 事务控制命令
  提交命令 (COMMIT): 可以使数据库的修改永久化 . 设置 AUTOCOMMIT 为允许状态 :SQL >SET AUTOCOMMIT ON;
  回滚命令 (ROLLBACK): 消除上一个 COMMIT 命令后的所做的全部修改 , 使得数据库的内容恢复到上一个 COMMIT 执行后的状态 . 使用方法是 :
   SQL>ROLLBACK;
  
  创建表、视图、索引、同义词、用户。
  、表是存储用户数据的基本结构。
  建立表主要指定义下列信息:
  列定义
  完整性约束
  表所在表空间
  存储特性
  可选择的聚集
  从一查询获得数据
  语法如下: CREATE TABLE tablename
   (column1 datatype [DEFAULT expression] [constraint],
   column1 datatype [DEFAULT expression] [constraint],
   ……
   [STORAGE 子句 ]
   [ 其他子句 …]
  例如:
   SQL>CREATE TABLE NEW_DEPT
   (DPTNO NUMBER(2),
   DNAME CHAR(6),
   LOC CHAR(13);
  更改表作用:
  增加列
  增加完整性约束
  重新定义列(数据类型、长度、缺省值)
  修改存储参数或其它参数
  使能、使不能或删除一完整性约束或触发器
  显式地分配一个范围
   2 )、视图
  视图是一个逻辑表,它允许操作者从其它表或视图存取数据,视图本身不包含数据。视图所基于的表称为基表。
  引入视图有下列作用:
  提供附加的表安全级,限制存取基表的行或 / 和列集合。
  隐藏数据复杂性。
  为数据提供另一种观点。
  促使 ORACLE 的某些操作在包含视图的数据库上执行,而不在另一个数据库上执行。
  
  
   3 )、索引
  索引是种数据库对象。对于在表或聚集的索引列上的每一值将包含一项,为行提供直接的快速存取。在下列情况 ORACLE 可利用索引改进性能:
  按指定的索引列的值查找行。
  按索引列的顺序存取表。
  建立索引: CREATE [UNIQUE] INDEX indexname ON tablename(column , 。。。 )
  例如: SQL>CREAT INDEX IC_EMP
   ON CLUSTER EMPLOYEE
  
   4 )、同义词
  同义词:为表、视图、序列、存储函数、包、快照或其它同义词的另一个名字。使用同义词为了安全和方便。对一对象建立同义词可有下列好处:
  引用对象不需指出对象的持有者。
  引用对象不需指出它所位于的数据库。
  为对象提供另一个名字。
  建立同义词:
   CREATE SYNONYM symnon_name FOR [username.]tablename;
  例如: CREAT PUBLIC SYNONYM EMP
   FOR SCOTT.EMP @SALES
  
   5 )、用户
   CREATE USER username IDENTIFIED BY password;
  例如: SQL>CREATE USER SIDNEY
   IDENTIFIED BY CARTON ;
   Oracle 扩展 PL/SQL 简介
   PL/SQL 概述。
   PL/SQL Oracle SQL 规范的扩展,是一种块结构语言,即构成一个 PL/SQL 程序的基本单位(过程、函数和无名块)是逻辑块,可包含任何数目的嵌套了快。这种程序结构支持逐步求精方法解决问题。一个块(或子块)将逻辑上相关的说明和语句组合在一起,其形式为:
   DECLARE
   --- 说明
   BEGIN
   --- 语句序列
   EXCEPTION
   --- 例外处理程序
   END
  它有以下优点 :
  支持 SQL;
  生产率高 ;
  性能好 ;
  可称植性 ;
  与 ORACLE 集成 .
  
   PL/SQL 体系结构
   PL/SQL 运行系统是种技术,不是一种独立产品,可认为这种技术是 PL/SQL 块和子程序的一种机,它可接收任何有效的 PL/SQL 块或子程序。如图所示:
  
  
  
  
  
  
  
   PL/SQL 机可执行过程性语句,而将 SQL 语句发送到 ORACLE 服务器上的 SQL 语句执行器。在 ORACLE 预编译程序或 OCI 程序中可嵌入无名的 PL/SQL 块。如果 ORACLE 具有 PROCEDURAL 选件,有名的 PL/SQL 块(子程序)可单独编译,永久地存储在数据库中,准备执行。
  
  
   PL/SQL 基础:
   PL/SQL 有一字符集、保留字、标点、数据类型、严密语法等,它与 SQL 有相同表示,现重点介绍。
   1 )、数据类型:如下表所示
  数据类型 子类型
  纯量类型 数值 BINARY_INTEGER NATURAL,POSITIVE
   NUMBER DEC,DECIMAL,DOUBLE PRECISION,PLOAT,INTEGER,INT,NUMERIC,REAL,SMALLINT
  字符 CHAR CHARACTER,STRING
   VARCHAR2 VARCHAR
   LONG
   LONG RAW
   RAW
   RAWID
  逻辑 BOOLEAN
  日期 DATE
  组合 类型 记录 RECORD
  表 TABLE
  
   2 )、变量和常量
  在 PL/SQL 程序中可将值存储在变量和常量中,当程序执行时,变量的值可以改变,而常量的值不能改变。
  
   3 )、程序块式结构:
   DECLARE
  变量说明部分;
   BEGIN
  执行语句部分;
   [EXCEPTION
  例外处理部分; ]
   END;
  
  控制语句:
  分支语句:
   IF condition THEN
   Sequence_of_statements;
   END IF;
  
   IF condition THEN
   Sequence_of_statement1;
   ELSE
   Sequence_of_statement2;
   END IF;
  
   IF condition1 THEN
   Sequence_of_statement1;
   ELSIF condition2 THEN
   Sequence_of_statement2;
   ELSIF condition3 THEN
   Sequence_of_statement3;
   END IF;
  
  
  循环语句:
   LOOP
   Sequence_of_statements;
   IF condition THEN
   EXIT;
   END IF;
   END LOOP;
   WHILE condition LOOP
   Sequence_of_statements;
   END LOOP;
  
   FOR counter IN lower_bound..higher_bound LOOP
   Sequence_of_statements;
   END LOOP;
  
  子程序:
  存储过程:
   CREATE PROCEDURE 过程名 ( 参数说明 1 ,参数说明 2 。。。 ) IS
   [ 局部说明 ]
   BEGIN
  执行语句;
   END 过程名;
  
  存储函数:
   CREATE FUNCTION 函数名 ( 参数说明 1 ,参数说明 2 。。。 )
   RETURN 类型 IS
   [ 局部说明 ]
   BEGIN
  执行语句;
   END 函数名;
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值