用SQL语言访问Oracle数据库

来源:互联网 发布:靠谱助手网络连接失败 编辑:程序博客网 时间:2024/06/03 13:01
 
SQL初步介绍
在Oracle的日常使用和管理中,通常会使用SQL进行表的建立,记录的增、删、改等操作。如果有足够的权限,可通过SQL语言完成数据库的所有工作
一般将SQL语言分为以下三种类型:
DDL:数据定义语言
DCL:数据控制语言
DML:数据操纵语言
其中,DDL用来定义数据库结构,它包含以下SQL语句:
CREATE TABLE:创建数据库表
ALTER TABLE:更改表结构、添加、删除、修改列长度
DROP TABLE:删除表
CREATE INDEX:在表上建立索引
DROP INDEX:删除索引
DCL用来控制对数据库的访问,它包含以下SQL语句:
GRANT:授权访问权限
REVOKE:撤销访问权限
COMMIT:提交事务处理
ROLLBACK:事务处理回退
LOCK:对数据库的特定部分进行锁定
DML用来查询和更新数据记录,它包括以下SQL语句:
INSERT:插入记录
UPDATE:更新记录
DELETE:删除记录
SELECT:选择记录
SQL*Plus
在Oracle数据库中,执行SQL语句的主要工具是SQL*Plus。SQL*Plus是Oracle公司为执行SQL语句以及编写、处理PL/SQL语言程序而提供的一种开发环境。在SQL*Plus中,SQL语句不区分大小写。
DESC[RIBE]命令显示表结构
在建立了表之后,为了验证建立是否正确,可利用命令DESC命令来显示表结构。
建立和执行SQL脚本文件
SQL脚本以.sql为扩展名
在SQL>提示符下输入命令:edit 脚本文件路径,可以打开记事本编辑相应的脚本文件
在SQL>提示符下输入命令:@ 脚本文件路径,可以执行SQL脚本文件,这里的@相当于START命令,把脚本文件的内容输入SQL缓冲区并执行
用SELECT语句检索数据
SQL的主要功能之一是实现数据的查询,所谓查询就是取得满足特定条件的元组。查询语句SELECT可以从一个表或同时从多个表中选择特定的数据
SELECT语句的一般组成部分:
SELECT(必须)告诉Oracle要检索什么信息,可以用列名或*,*代表所有列
FROM(必须)指定要从其中检索数据的表名,可以指定一个过多个表名
WHERE(可选)给出检索数据时的条件以及如何把多个表连接起来
ORDER BY(可选)规定如何排列检索出的数据
GROUP BY(可选)规定如何汇总检索出的数据
HAVING(可选)规定与统计结果有关的条件
 
WHERE条件子句中的常用操作符:=,!=,<,>,AND,OR,IN,BETWEEN,LIKE
ORDER BY子句对数据进行排序 指定DESC为降序
GROUP BY子句对数据进行分组统计:分组查询的用途是将表中的数据按一定条件分组结合,一般分组查询的目的是得出所需的统计数据,需要和统计函数配合使用。统计函数用来处理表中一组行而不是单个行
HAVING子句的作用类似于WHERE子句,只不过WHERE子句针对单个行,而HAVING子句针对的是统计结果
用ALTER TABLE语句更改表中的列
在创建表后,如果想要增加列,可以使用ALTER TABLE命令
ALTER TABLE 表名 ADD(列名 数据类型)在表中增加列
ALTER TABLE 表名 MODIFY(列名 数据类型)改变以存在列的数据类型
数据类型介绍
数值型数据:所谓数值型数据指的是实数、整数等数据,也就是NUMBER型的数据。数值型列只包含数值型数据,用户可以对其中的数据执行所有标准的算术运算:加,减,乘,除。在Oracle中,除了这些标准运算之外,还有很多函数。
函数:函数在SQL语句中用于处理列(或直接量)的内容。在SQL语句中使用函数时,函数作用的列在显示值时将以作用后的值出现。有的函数用于数值型数据,有的函数用于字符型数据,还有一些函数用于日期时间型数据
用于测试和计算的DUAL表:DUAL是Oracle提供的一个小表,它只有一行一列。DUAL表的拥有者为SYS。在句法必须正确(即:必须包含FROM子句),而数据库中又没有其他表可用于语句时,可使用DUAL。因为Oracle的许多函数即处理列又处理直接量,利用DUAL能够帮助理解这些函数。DUAL中实际的列不起作用,这表示可以利用DUAL表对各种函数、操作进行试验以理解它们如何起作用,然后再把这些函数和操作应用到表中的实际列上
字符型数据:字符型数据是CREATE TABLE语句中定义为CHAR,VARCHAR或VARCHAR2的列存放的数据
日期型数据:Oracle中的日期型数据实际含有两个值:日期和时间。Oracle默认的日期格式为:DD-MON-YY,DD代表日,MON代表月,YY代表以两位数字表示的年。DATA数据类型以特殊的Oracle内部格式存储,这种格式不仅包括日、月、年,而且还包含时、分、秒
数据类型转换:用户常常会遇到将数据列从一种类型转换为另一种类型的情况,Oracle提供了三种主要的转换函数。TO_CHAR,TO_NUMBER,TO_DATE
从多个表中查询数据
若一个查询涉及两个或多个表,就称其为连接查询。
从概念上讲,执行连接操作的过程是,首先取表1的第一行,然后从头到尾扫表2中的每一行,查找满足连接条件的行,找到后就将表1中的第一行与表2中的满足连接条件的行拼成结果表的一行。表2中有几行满足连接条件就会在结果表中拼出几行。这里,结果表的列定义可视为等同于SELECT子句中给出的列。表2的行全部查找完毕后,再取表1中的第二行,扫描表2,逐一查找,找到后就将表1中的第二行与表2中满足连接条件的行拼成结果表中的另一行。表2中每有一行满足连接条件,就会在结果表中多得到一行。这个过程一直进行到表1中的所有行都处理完毕为止
理解这一过程对于理解连接操作很重要,连接操作有多种,但执行过程都是一样的,只是对结果的规定有所不同而已
内连接合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不相匹配的行
外连接液合并具有同一列的相关表中的行,但是,外连接的结果集中包括一个表中不与另一个表中行匹配的行,没有匹配的行时,结果集中相应的列为空。外连接的WHERE子句类似于内部连接,但连接条件中没有匹配行的表的列后面要加外连接运算符(+)
视图
视图是一种“虚表”,它建立在已有表的基础之上,试图赖以建立的这些表称为基表。向视图提供数据内容的语句为SELECT语句,可以将视图理解为存储起来的SELECT语句。视图向用户提供基表数据的另一种表现形式。
使用视图有很多好处,如简化查询,屏蔽基表以保证基表的安全、限制用户对表中数据的访问,提高数据的独立性等
建立视图的语法为:
CREATE [OR REPLACE] VIEW 视图名
 AS 查询语句
    [WITH READ ONLY]
可以对视图执行各种DML语句,就当它是一个表一样。但对于INSERT,UDATE,DELETE这样的DML语句存在一些限制
SQL*Plus环境设置
在SQL*Plus开发环境中,有许多控制SQL*Plus的输出显示方式的参数。这些参数对于控制SELECT语句的输出、形成报表、是否回显所执行的SQL语句等很有作用
1、SHOW ALL:利用SQL*Plus命令SHOW ALL,我们能知道各参数的当前设置
2、SPOOL输出:在选择大量数据时,可用SPOOL命令把它存到文件中,以便下次查询。执行此命令后,SQL*Plus会把之后屏幕上显示的所有东西都保存到指定的输出文件中,直到出现下列三种情况之一才会停止
发出另一个SPOOL<输出文件名>命令
发出SPOOL OFF命令
退出SQL*Plus
3、SET TERMOUT ON/OFF,SET ECHO ON/OFF:SET TERMOUT ON/OFF控制是否显示执行SQL语句的输出结果,默认设置为ON。SET ECHO ON/OFF控制执行SQL脚本时,是否回送执行的SQL语句,默认为OFF
事务处理和回退概念
事务处理是用户定义的一系列数据库操作,这些操作作为一个完整的工作单元,要么全部执行,要么全部不执行。至于那些操作必须同时执行,这由用户考虑,称为事务处理设计。
为保证事务处理中的数据库操作或者都执行,或者都不执行,Oracle数据库设计了一套完善的机制。在Oracle中,事务处理从提交(COMMIT)、回退(ROLLBACK)或连接到数据库之后,执行第一条操作数据库的SQL语句开始,到另一条提交(COMMIT)、回退(ROLLBACK)或退出数据库连接时结束。此外,如果在一个事务中包含DDL 语句,则在DDL语句执行的前后都会隐含地执行COMMIT语句,从而开始或结束一个事务处理。
在Oracle数据库管理系统中,对数据的处理是在内存中进行的,只有在执行了COMMIT语句后才真正写入数据库。所以,对数据进行处理时,只要未提交,就可以回退
 
原创粉丝点击