以下为《Oracle基础知识-入门篇》的无排版文字预览,完整内容请下载
Oracle开发入门培训
专业术语
数据库(database): 它是包含用户数据、元数据和控制结构的一个或多个磁盘上的物理文件的集合。如数据文件,控制文件,参数文件,日志文件等。
实例(instance):它由后台进程以及后台进程使用的共享内存区域组成。例如操作系统进程或线程。它用于执行访问、存储、监视和恢复与数据库相关的用户数据、元数据和控制文件。
SQL:SQL是一种声明式的语言,用于访问、操作数据库的语言,并不是一种具有流程控制的程序设计语言。
PL/SQL:PL /SQL是一种高级数据库程序设计语言,是对SQL语言存储过程语言的扩展,使SQL具有了过程化编程的特性。
用户,角色,权限,表空间
表空间逻辑架构
数据库的逻辑存储单位可分为表空间(Tablespace),段(Segment),区(Extent)以及数据块(Data Block)。
/
表空间(Tablespace):由段某某,可包含一个到多个段。表空间是最大的逻辑存储单位,对应一个或多个数据文件。
段(Segment):由区构成,它是分配给特定的数据库对象的一组区。段可以包含来自多个数据文件的区段,但每一个段只能属于一个表空间。段可分为表段,索引段,回滚段,临时段等。
区(Extent):是数据库存储空间分配的一个逻辑单位,它由连续数据块所组成。***,永远不会跨文件存在。
数据块(Data Block):是数据库中最小的逻辑存储单元,标准块大小为8K 。11G支持2K到32K的块大小。在此区间内可以自定义块大小,但建议块大小是2的倍数。
表空间分类
表空间可分为永久表空间、临时表空间,UNDO表空间。
永久表空间
永久表空间用于持久化存储数据。语法如下:
create tablespace PBB_TRAINING datafile 'D:\app\Oracle\tablespace\pbb_training.dbf'
size 50m autoextend on next 20m;
其中
PBB_TRAINING
是表空间的名称
D:\app\Oracle\tablespace\pbb_training.dbf
是表空间存储在计算机上的物理路径
SIZE 50M
是表空间的初始大小
autoextend on
表示该表空间可以自动扩张
next 20m
表示该表空间每次自动 扩张时增加的大小。
除了以上参数外,表空间还有很多的参数,例如MAXSIZE等等,这里不再一一举例。
查询表空间信息可通过以下语句查询
SELECT * FROM DBA_DATA_FILES T WHERE T.TABLESPACE_NAME = 'PBB_TRAINING'
/
临时表空间
临时表空间用于临时存储执行过程中的中间数据,例如排序和分组过程中就需要使用到临时表空间。语法如下:
create temporary tablespace TEMP_PBB_TRAINING
TEMPFILE 'D:\app\Oracle\tablespace\temp_pbb_training.dbf'
SIZE 100M AUTOEXTEND ON NEXT 20M;
查询临时表空间命令如下:
/
撤销表空间(UNDO表空间)
UNDO表空间用于保存数据修改前的副本,用于撤销变更。例如进行UPDATE后的ROLLBACK。
注:一般使用默认UNDO表空间即可,不需要额外建立UNDO表空间
用户
创建用户的 命令如下:
create user TUSER identified by TEST_USER;
通过以上命令就能建立***_USER的TUSER用户,但是请注意一般情况下我们不会建立这样的用户,因为通过以上命令建立的用户将使用默认的表空间和临时表空间。
/
默认表空间为USER,默认临时表空间为TEMP,临时表空间可以默认用TEMP,但是表空间不建议用USER。(如果本地磁盘充足,仍然建议单独建立新的临时表空间) 所以一般我们常用的建用户命令如下:
create user PBB_TRAINING identified by PBB_TRAINING
default tablespace PBB_TRAINING
temporary tablespace TEMP_PBB_TRAINING;
角色和权限
当我们建立用户后这时候还不能进行登陆,如果直接登陆会报以下错误。这是因为我们缺少必要的权限。
/
我们可以给用户赋予权限,也可以给用户赋予角色,
为了能登陆Oracle那么首先需要赋予
create session权限
grant CREATE SESSION to PBB_TRAINING;
或者赋予connect角色
grant connect to PBB_TRAINING;
一般为了简化权限处理,我们会赋予角色。
为了实现基本的数据库功能我们需要赋予两个角色,分别是connect和resource
grant connect to PBB_TRAINING;
grant resource to PBB_TRAINING;
通过赋予以上两个权限我们就拥有了基本的连接数据,并创建数据库对象的权限
如果要查询角色包含哪些权限,可通过以下查询获取
select t.* from dba_sys_privs t where grantee='RESOURCE'
/
注意:为了实现该查询你需要拥有DBA角色或者拥有该对象的查询权限。
SQL语句的分类
Oracle 中SQL语句大致可分为DDL数据定义语言,DML数据操作语言,DQL数据查询语言以及DCL数据控制语言和TCL事务控制语言。
数据定义语言DDL
DDL(Data Definition Language)是一种数据定义语言,主要用来创建、修改,删除数据库对象。主要包含:CREATE、ALTER、DROP、TRUNCATE等命令
在DDL语句中需要特别注意两点
DDL语句会触发COMMIT,当执行一个DDL语句的时候,实际上相当于执行了三个命令。
commit;
执行DDL语句;
commit
所以执行DML语句前,你需要确保你的事务已经按照你的要求提交或者回滚,同时DML语句是不需要再次加commit语句来确保DDL语句的提交。
Truncate,虽然作用是清空表数据,但是请记住,它是DDL语句。拥有DDL的特性。
数据操作语言DML
DML(Data Manipulation Language)是一种数据操作语言,主要对表对象的数据的操作,包含INSERT、UPDATE、DELETE、MERGE
数据查询语言DQL
DQL(Data Query Language) 是一种查询语言,主要用来检索数据。例如:SELECT
数据控制语言DCL
DCL(Data Control Language)是数据控制语言,主要用于控制权限。例如GRANT(授予)和REVOKE(撤销)等
事务控制语言TCL
TCL(Transaction Control Language)是事务控制语言,主要用于维护数据的一致性,例如COMIIT,SAVEPOINT,ROLLBACK等。
SQL语句的基本语法
INSERT语句
INSERT语句用于插入新的数据。单行数据插入的标准写法如下:
INSERT INTO 表名(列1,列2,列3……) values (值1,值2,值3……)
使用上述语句可插入一条数据。有时候我们可能希望插入多行数据,那么这时候可采用将VALUES部分替换为查询的方式进行处理,标准写法如下:
INSERT INTO 表名(列1,列2,列3……) SELECT 列A,列B,列C……FROM 表名 [WHERE条件]
注意:在程序中经常有INSERT INTO TABLE(…) SELECT … FROM DUAL的写法这种是不允许出现的,这是一种非常不好的书写习惯,单行数据的插入一定要用values字句,而不能应该用FROM DUAL。
UPDATE语句
UPDATE用于更新表中的数据。标准写法如下:
UPDATE 表名 SET 列=值,列1=值1…… [WHERE条件]
如果省略了WHERE条件则会进行全表更新。
注意:UPDATE 表名 SET 列=(select … from dual) WHERE …这种是不允许出现的,这是一种非常不好的书写习惯。
DELETE语句
DELETE语句用于删除表中的数据。标准写法如下:
DELETE FROM 表名 [WHERE条件]
如果省略了WHERE条件则会进行全表删除。
SELECT语句
SELECT语句用于检索表中的数据。标准的SELECT语法如下:
SELECT 字段…… FROM 表…… [WHERE条件]
表连接
连接类型
后续例子会用到以下两表数据
JOIN_DEMO_TA:
/
JOIN_DEMO_TA:
/
内连接
内连接查询将会返回与连接条件相匹配的数据。
例如:
以下是内连接的标准写法:查询会将A,B两表F1相同的数据查询出来。
SELECT A.F1,B.F1 FROM JOIN_DEMO_TA A INNER JOIN JOIN_DEMO_TB B ON A.F1 = B.F1
以下SQL也属于隐式的内连接与上面的SQL等价。
SELECT A.F1,B.F1 FROM JOIN_DEMO_TA A,JOIN_DEMO_TB B WHERE A.F1 = B.F1
两个SQL的查询结果如下:
/
内连接又可分为等值连接,非等值连接以及自然连接
等值连接:指在连接条件中使用等于号
非等值连接: 指在连接条件使用了除等于号以外的其它比较运算符,例如>、=、0 ) t where t.l_zqnm = 1
另外对于某个对象从来没有收集过统计信息,那么ORACLE可能会采用动态采样的技术,动态的收集表和索引的信息。
执行计划
执行计划就是描述SQL执行的过程。在CBO中要查看SQL是否有性能问题,那么首先就需要阅读执行计划从执行计划中才能发现问题所在。
执行顺序的原则是:从上到下,从右向左
由上至下:相同级别的节点,靠上的优先执行,靠下的后执行从右向左:在某个节点下还存在多个子节点,从最靠右的子节点开始执行
select * from tzqxx a ,tzqxx b where a.l_zqnm = b.l_zqnm and a.l_zqnm between 1 and 100
/
游标中SQL当前使用的执行计划获取方法如下:
select * from table(dbms_xplan.display_cursor('SQL_ID',CHIL 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 ,write on directory EXT_TABLE to PBB_TRAINING;
建立外部表的命令如下:
create table DEMO_EXT_TABLE(
f1 VARCHAR2(100),
f2 VARCHAR2(100),
f3 VARCHAR2(100),
f4 VARCHAR2(500)
)
organization external
(type ORACLE_LOADER
default directory EXT_TABLE
access parameters(
records delimited by newline
badfile EXT_TABLE :'data.bad'
logfile EXT_TABLE :'data.log'
fields terminated by ','
missing field values are null
(f1,f2,f3,f4)
)
location ('data.txt')
)
建立后外部表可以像内部表一样通过SELECT语句进行查询
/
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《Oracle基础知识-入门篇》的无排版文字预览,完整内容请下载
Oracle基础知识-入门篇由用户“leewon0831”分享发布,转载请注明出处