第3章数据库的操作.ppt
《第3章数据库的操作.ppt》由会员分享,可在线阅读,更多相关《第3章数据库的操作.ppt(67页珍藏版)》请在麦多课文档分享上搜索。
1、2018年10月12日,第1页,第3章数据库的操作,教学目标 1.掌握对表中数据的操作 2.掌握索引的创建与维护 3.掌握同义词的创建与使用 4.理解数据完整性,2018年10月12日,第2页,教学目标,1.理解数据完整性 2.掌握表数据的操作 3.掌握索引与同义词 的创建与使用,2018年10月12日,第3页,3.1操作表数据,3.1.1向表中输入数据 创建表后,下一步就是要对其进行数据输入。 Oracle数据库中数据输入的方法有以下几种:1.用INSERT INTO VALUES语句直接向原表插入数据,2018年10月12日,第4页,语法格式:INSERT INTO table_namec
2、olumn_listVALUES(constant1,constant2,)该语句的功能是向由table_name指定的表中加入一行,由VALUES指定的各 列值。(1) 在插入时,列值表必须与列名表顺序和数据类型一致。 (2) VALUES中描述的值可以是一个常量、变量或一个表达式。 (3) 如果列值为空,则值必须置为NULL。如果列值指定为该列的默认值,则用DEFAULT。 (4) 在对表进行插入行时,若新插入的行中所有可取空值的列值均取空值,则 就可以在INSERT语句中通过列表指出插入的行值中所包含非空的列,而在 VALUES中只要给出这些列的值即可。,2018年10月12日,第5页,
3、【例3.1】向XSCJ数据库的表XS中插入如下的一行:061101 王林 计算机 男 19870201 50 可以使用如下的PL/SQL语句:INSERT INTO XS(XH,XM,ZYM,XB,CSSJ,ZXF) VALUES(061104, 王林3, 计算机, 男,TO_DATE(19860210,YYYYMMDD),50);,2018年10月12日,第6页,【例3.2】建立了表test。CREATE TABLE test(xm char(20) NOT NULL,zy varchar(30) DEFAULT(计算机),nj number NOT NULL);用INSERT向test表中
4、插入一条记录:INSERT INTO test(xm,nj)VALUES(王林,3);则插入到test表中的记录为:王林 计算机 3,2018年10月12日,第7页,2.用查询语句从一个表向另一个表插入一批行 【例3.3】用如下的CREATE语句建立表XS1:CREATE TABLE XS1( num char(6) NOT NULL,name char(8) NOT NULL,speiality char(10) NULL); 用如下的INSERT语句向XS1表中插入数据:INSERT INTO XS1SELECT XH,XM,ZYMFROM XSWHERE ZYM=计算机;,2018年10
5、月12日,第8页,从Oracle 10g开始新增了MERGE语句,使用这 个语句可以实现对表的更新或插入。 语法格式:MERGE INTO table_nameUSING table_name ON (join_condition)WHEN MATCHED THEN UPDATE SETWHEN NOT MATCHED THEN INSERT() VALUES()Joni_condition:连接条件。,2018年10月12日,第9页,【例3.4】 检查表XS_JSJ中的数据是否和表XS的数据相匹配,如果匹配则使用 INSERT子句执行插入数据行。首先在表XS_JSJ使用INSERT语句添加一
6、行数据:INSERT INTO XS_JSJ(XH,XM,ZYM,XB,CSSJ,ZXF,bz) VALUES(101112, 霍甲, 计算机, 女,TO_DATE(19860130, YYYYMMDD),36, 已修完);使用MERGE语句XS_JSJ表中新增的数据插入表XS中:MERGE INTO XS aUSING XS_JSJ bON(a.XH=b.XH)WHEN NOT MATCHED THEN INSERTValues(b.xh,b.xm,b.zym,b.xb,b.cssj,b.zxf,b.bz);用SELECT语句进行查询,可以发现表中已经增加一条姓名为霍甲的学生记录。,2018
7、年10月12日,第10页,3.1.2删除表记录,1. 使用 DELETE删除数据在PL/SQL语言中,删除行可以使用DELETE语句。语法格式:DELETE FROM table_nameview_nameWHERE condition该语句的功能为从table_name指定的表或view_name指定的视图中删除满足condition 查询条件的行,若省略该条件,表示删除所有的行,2018年10月12日,第11页,【例3.5】将XSCJ数据库的XS表中总学分小于39的行删除,使用如下的PL/SQL 语句。DELETE FROM XSWHERE ZXF39;,2018年10月12日,第12页,
8、2. 使用TRUNCATE TABLE语句删除表数据如果确实要删除一个大表里的全部记录, 可以用TRUNCATE命令, 它可以释放 占用的数据块表空间。此操作不可回退。语法格式:TRUNCATE TABLE table_name其中table_name为要删除数据的表名。由于TRUNCATE TABLE语句删除表 中的所有数据,且不能恢复,所以使用时要谨慎。,2018年10月12日,第13页,TRUNCATE TABLE在功能上与不带WHERE子句 的DELETE语句相同,二者均删除表中的全部行。 但TRUNCATE TABLE执行速度比DELETE快。对于由外键(FOREIGN KEY)约束
9、引用的表不能使 用TRUNCATE TABLE删除数据。另外, TRUNCATE TABLE也不能用于索引视图的表。,2018年10月12日,第14页,3.1.3修改表记录,语法格式:UPDATE table_nameview_nameSET column_name=expression,nWHERE condition 该语句table_name指定的表或view_name指定的视 图中满足condition 查询条件的记录中由SET指定的 各列的列值设置为SET指定的新值。若不使用WHERE 子句,则更新所有记录的指定列值。,2018年10月12日,第15页,【例3.6】 将XSCJ数据库
10、的XS表中学号为“061101”的学生备注列值改为“三好学生”,使用如下PL/SQL语句:UPDATE XSSET BZ=三好学生WHERE XH=061101;,2018年10月12日,第16页,例3.7】将XS表中的所有学生的总学分都增加10。UPDATE XSSET ZXF=ZXF+10;,2018年10月12日,第17页,【例3.8】将姓名为“罗林琳”的同学的专业改为“通信工程”,备注改为“转专业学习”,学号改为“061241”。UPDATE XSSET ZYM= 通信工程,BZ=转专业学习,XH= 061241WHERE XM= 王林;,2018年10月12日,第18页,【例3.9】
11、对XS表进行修改,将姓名为“李明”的学生的总学分加4,备注改为“提前修完数据结构,并获得学分”。UPDATE XSSET ZXF=ZXF+ 4,BZ= 提前修完数据结构,并获得学分WHERE XM=李明;,2018年10月12日,第19页,3.3.3 SQL*plus编辑器的编辑命令,在SQL*PLUS中键入SQL命令时,Oracle将在缓冲区中保留最后一次执行的命令(可能是一行,也可能是多行),这样,如果命令输入错误,可以对缓冲区中的命令进行编辑再执行,不用重新输入原来的命令。SELECT XH,XM,ZYMFROM XSWHERE ZYM=计算机;,2018年10月12日,第20页,1.L
12、ist命令,1)list命令列出缓冲区内容 SQLl 2)执行下面语句,列出第2行缓冲区内容。同时第2行变成当前行。 SQLl 2 3)执行下面语句,列出第2行到第3行间的缓冲区内容。SQLl 2 3 4)*表示当前行,在list命令中可以使用这个符号,执行下面命令来列出当前行。 SQLl *,2018年10月12日,第21页,也可以和数字组合使用,执行下面命令来显示从第2行到当前行 SQLl 2 * 5)last,表示最后一行 SQLl 2 last,2018年10月12日,第22页,2.append命令,功能:向当前行追加内容。 例: 先选中第一行为当前行,如下所示: SQLl 1 然后,
13、追加XB列: SQLa,XB SQLl SQL/,2018年10月12日,第23页,3.Change 命令,用此命令可以替换当前行的一部分,也可全部替换。 SQLc/计算机/ 通信工程/ 4. Input命令 这个命令可以在当前行后面插入一个新行。 SQLI and XB =男 5.del命令 此命令用来删除一行,如不带参数,则删除当前行。 SQLdel 6. SQLclear screen 清空当前屏幕。,2018年10月12日,第24页,3.2 索引,在oracle 10g 中索引是一种供服务器在表中快速查找一个行的数据库结构。,2018年10月12日,第25页,3.2.1索引的分类,索引
14、按存储方法分类,可以分为2类:B*树索引和位图索引。 (1) B*树索引。B*树索引的存储结构类似书的索引结构,有分支和叶两种类型 的存储数据块,分支块相当于书的大目录,叶块相当于索引到的具体的书页。 (2) 位图索引。位图索引储存主要用来节省空间,减少ORACLE对数据块的访 问,它采用位图偏移方式来与表的行ID号对应,采用位图索引一般是重复值太多 的表字段。 索引按功能和索引对象还有以下类型:(1) 唯一索引。唯一索引意味着不会有两行记录相同的索引键值。(2) 非唯一索引。不对索引列的值进行唯一性限制的所以称为非唯一索引。(3) 分区索引。所谓分区索引是指索引可以分散地存在于多个不同的表空
15、间 中,其优点是可以提高数据查询的效率。(4) 未排序索引。未排序索引也称为正向索引。Oracle 10g数据库中的行是按 升序排序的,因此创建索引时不必指定对其排序而使用默认的顺序。 (5) 逆序索引。逆序索引也称为反向索引。该索引同样保持索引列按顺序排 列,但是颠倒已索引的每列的字节。(6) 基于函数的索引。基于函数的索引是指索引中的一列或者多列是一个函数 或者表达式,索引根据函数或者表达式计算索引列的值。,2018年10月12日,第26页,3.2.2使用索引的原则,在正确使用索引的前提下,索引可以提高检索相应的表的 速度。当用户考虑在表中使用索引时,应遵循下列一些基本的原则:(1) 在表
16、中插入数据后创建索引(2) 索引正确的表和列(3) 合理安排索引列(4) 限制表中索引的数量,2018年10月12日,第27页,3.3.3创建索引,创建索引有三种方法:随数据库表创建、使用 Oracle 10g管理控制台工具单独创建和使用SQL 命令创建索引。,2018年10月12日,第28页,1.随数据库表一起创建索引在创建数据库表时,如果表中包含有关键字,则 Oracle 10g自动为关键字所包含的列建立索引。 如果不特别指定,系统将默认为该索引定义一个 名字。这种方法创建的索引是非排序索引,既正 向索引,以B*树形式存储。,2018年10月12日,第29页,2. 在OEM中创建索引【例3
17、.11】为XS表的姓名列创建索引。,2018年10月12日,第30页,3. 利用SQL命令建立索引使用SQL命令可以灵活方便地创建索引。在使用SQL命令创建索引时,必须满足下列条 件之一:(1) 索引的表或簇必须在自己的方案中;(2) 必须在要索引的表上具有INDEX权限;(3) 必须具有CREATE ANY INDEX权限。,2018年10月12日,第31页,创建索引的SQL命令语法格式如下所示:CREATE INDEX 索引名称ON 表名(字段名称1, 字段名称2)TABLESPACE 表空间INITRANS integerMAXTRANS integerNOSORTREVERSE,201
18、8年10月12日,第32页,【例3.12】为KC表的课程名列创建索引。CREATE INDEX kc_name_idxON KC(KCM) TABLESPACE USERS;【例3.13】为XS表的姓名列创建索引,指定索引的物理和存储特征值,数据库中的行以升序保存。CREATE INDEX xs_xm_idxON XS (XM)TABLESPACE “INDX“ INITRANS 2 MAXTRANS 255 NOSORT;,2018年10月12日,第33页,3.3.4维护索引,在OEM中维护索引在OEM中维护索引的操作,除了一些特殊的信 息不能再修改,其他与创建索引的操作相同。,2018年1
19、0月12日,第34页,2. 利用ALTER INDEX命令维护索引语法格式:ALTER INDEX schema.index_nameINITRANS integerMAXTRANS integerPCTFREE integer /*建立索引的物理和存储特征值*/STORAGE storage_clause /*为索引建立存储特征*/RENAME TO new_index_name,2018年10月12日,第35页,【例3.14】修改例3.12中创建的索引kc_name_idx。ALTER INDEX XM_inxINITRANS 2 MAXTRANS 128;【例3.15】重命名索引kc_n
20、ame_idx。ALTER INDEX XM_INXRENAME TO kc_idx;,2018年10月12日,第36页,3.3.5删除索引,索引的删除既可以通过OEM删除,也可以通过执行SQL命令删除。1. 利用OEM删除索引在如图3.4所示的界面中,选中要删除的索引,单击“删除”,系统弹出确认界 面,单击“是”按钮后,就成功删除该索引了。2. 利用SQL命令删除索引语法格式:DROP INDEX index_name其中,schema是包含索引的方案。index_name是要删除的索引名称。【例3.16】删除XSCJ数据库中表XS的一个索引名为XS_NAME_IDX的索引。DROP IND
21、EX XS_NAME_IDX;,2018年10月12日,第37页,3.3同义词,3.4.1创建同义词1. 利用OEM创建同义词【例3.17】为表XS创建同义词XS。,2018年10月12日,第38页,2. 利用CREATE SYNONYM命令创建同义词语法格式:CREATE PUBLIC SYNONYM schema.synonym_nameFOR schema.object dblink【例3.18】创建同义词。(1) 为XSCJ数据库的XS_KC表创建公用同义词XS_KC。CREATE PUBLIC SYNONYM XS_KCFOR SYSTEM.KC;(2) 为XSCJ数据库XS表创建远
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 操作 PPT
