第4章 数据表操作_第1页
第4章 数据表操作_第2页
第4章 数据表操作_第3页
第4章 数据表操作_第4页
第4章 数据表操作_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4讲数据表操作本章学习导航本章学习导航本章学习要点(1)使用OEM创建、修改、查看和删除数据表。(2)使用SQLDeveloper创建、修改、查看和删除数据表。(3)使用PL/SQL创建、修改、查看和删除数据表。(4)添加、删除和修改数据表中的记录。(5)数据完整性概述。(6)非空、默认、唯一、检查、主键和外键约束操作。(7)管理序列和同义词。

(*)使用PL/SQL编程4.1数据库概述数据表基础数据表(Table)是数据在Oracle数据库中的逻辑存储单元,按指定关系模式将数据存储在对应的数据表中。4.1数据库概述Oracle基本数据类型数据类型的作用在于指明存储数值时需要占据的内存空间大小和进行运算的依据。Oracle的数据类型分为标量(Scalar)类型、复合(Composite)类型、引用(Reference)类型和LOB(LargeObject)类型4种类型

。4.1数据库概述Oracle基本数据类型(1)CHAR(n)该数据类型用于定义固定长度的字符串,其中n用于指定字符串的最大长度,n必须是正整数且不超过32767。(2)VARCHAR2(n)该数据类型用于定义可变长度的字符串,其中n用于指定字符串的最大长度,n必须是正整数且不超过32767。(3)NUMBER(precision,scale)该数据类型用于定义固定长度的整数和浮点数,其中precision表示精度,用于指定数字的总位数;scale表示标度,用于指定小数点后的数字位数,默认值为0,即没有小数位数。4.1数据库概述Oracle基本数据类型(4)DATE该数据类型用于定义日期时间类型的数据,其数据长度为固定7个字节,分别描述年、月、日、时、分、秒。

(5)TIMESTAMP该数据类型也用于定义日期时间数据,但与DATE仅显示日期不同,TIMESTAMP类型数据还可以显示时间和上下午标记,如“15-9月-200711:09:32.213AM”。

(6)BOOLEAN该数据类型用于定义布尔型(逻辑型)变量,其值只能为TRUE(真)、FALSE(假)或NULL(空)。需要注意的是,该数据类型是PL/SQL数据类型,不能应用于表列。4.1数据库概述方案的概念方案,就是一系列数据库对象的集合,是数据库中存储数据的一个逻辑表示或描述。Oracle11g数据库中并不是所有的数据库对象都是方案对象,方案对象有表、索引、触发器、数据库链接、PL/SQL包、序列、同义词、视图、存储过程、存储函数等,非方案对象有表空间、用户、角色、概要文件等。在Oracle11g数据库中,每个用户都拥有自己的方案,创建了一个用户,就创建了一个同名的方案,方案与数据库用户是对应的。用户在数据库中创建了一个方案对象后,这个方案对象默认地属于这个用户的方案。课堂案例1

—使用OEM创建GOODS表掌握Oracle中应用OEM创建数据表的方法和基本步骤案例学习目标进入OEM表编辑页面、列的数据类型的选择、OEM创建表的基本步骤。案例知识要点课堂案例1

—使用OEM创建GOODS表案例完成步骤添加标题文字(1)启动OEM后,依次选择“方案”、“表”。进入“表”页面。(2)单击“创建”按钮,进入“创建表:表组织”页面,选择默认的“标准(按堆组织)”方式。(3)单击“继续”按钮,进入“表一般信息”页面。指写表名为GOODS,方案为SCOTT,表空间为TS_EBUY。并依次填写GOODS表中的每一列的名称和数据类型。(4)单击“确定”按钮,完成新表的创建。并返回到对应的方案页面。

添加标题文字教师演示讲解课堂案例2——使用OEM修改GOODS表掌握Oracle中应用OEM修改数据表的方法。案例学习目标进入表的编辑页面、列数据类型的修改、列的宽度的修改、添加新列、删除已有列。案例知识要点课堂案例2——使用OEM修改GOODS表案例完成步骤添加标题文字(1)启动OEM后,依次选择“方案”、“表”,进入“表”页面,指定要操作的方案(如SCOTT)后,单击“确定”按钮,即显示出指定方案中包含的表

。(2)选择指定的表(如GOODS),单击“编辑”按钮,进入表的编辑页面。在该页面中可以完成对表名、列名、列类型等的修改

(3)修改完成后,单击“应用”按钮,保存修改结果。添加标题文字教师演示讲解4.2.3使用OEM查看和删除表OEM查看表添加标题文字(1)启动OEM后,进入指定方案(如SCOTT)的“表”页面。(2)选择要查看的表后,单击“查看”按钮,即可查看到表的一般信息。添加标题文字教师演示讲解

4.2.3使用OEM查看和删除表OEM删除表添加标题文字(1)在指定方案的“表”页面,选择要删除的表(如:GOODS),单击“使用选项删除”按钮,进入“确认”页面。(2)单击“是”按钮,根据指定的选项完成对指定表的删除操作。添加标题文字教师演示讲解

课堂案例3——使用SQLDeveloper创建Users表掌握Oracle中应用SQLDeveloper创建数据表的一般步骤和方法。案例学习目标SQLDeveloper的启动、SQLDeveloper的登录、SQLDeveloper中数据类型的选择、SQLDeveloper中创建表的步骤、SQLDeveloper中数据表列的操作方法。案例知识要点课堂案例3——使用SQLDeveloper创建Users表案例完成步骤添加标题文字(1)启动SQLDeveloper并建立和Oracle11g数据库的连接,以指定的方案(如方案名:SCOTT,密码:123456)登录SQLDeveloper后。在SQLDeveloper的左边树型结构中,依次选择“eBuy”、“Tables”,右键单击“Tables”项,从快捷菜单中选择“NewTable”

添加标题文字教师演示讲解课堂案例3——使用SQLDeveloper创建Users表案例完成步骤添加标题文字(2)打开“CreateTable”对话框,指定新建数据表的名称(如Users);选择默认的用户方案(SCOTT)。(3)添加数据表列。首先单击“AddColumn”按钮,再设置列的名称、数据类型、数据类型的长度、是否允许列值非空和该列是否为主键后,将为新表增加一个数据列。按照这种方法,依次为Users数据表添加数据列

添加标题文字教师演示讲解课堂案例3——使用SQLDeveloper创建Users表案例完成步骤添加标题文字(4)指定列数据类型。在SQLDeveloper创建表的普通状态下,数据列只能选择VARCHAR2、CLOB、INTEGER、NUMBERt和DATE五种数据类型,如果要使用更多的数据类型,请选中Advanced复选框。(5)单击“确定”按钮,完成数据表的创建,在SQLDeveloper中的Tables项下将新增Users项。(6)在为数据表添加数据列之后,选择“SQL”选项卡,用户可以查看创建数据表的DDL脚本。添加标题文字教师演示讲解4.3.2使用SQLDeveloper修改表修改表添加标题文字在SQLDeveloper左边栏的Tables项中右击需要修改的数据表,从快捷菜单中选择“Edit”,将打开“EditTable”对话框,用户可以完成对数据表的修改操作。修改完成后单击“确定”按钮,保存修改结果。添加标题文字教师演示讲解

4.3.3使用SQLDeveloper查看和删除表查看表添加标题文字在SQLDeveloper的Tables选项中单击需要查看的表,在右边栏内将出现该表的详细情况,包括该表所属的列、数据、约束、授权和主键等各种信息

。添加标题文字教师演示讲解

4.3.3使用SQLDeveloper查看和删除表删除表添加标题文字(1)删除数据表时,首先从Tables项中右击需要删除的数据表,然后从快捷菜单中依次选择“Table”和“Drop”

。(2)在打开的的删除对话框中,单击“应用”按钮。添加标题文字教师演示讲解

课堂案例4——使用PL/SQL管理表掌握Oracle中应用PL/SQL语句创建数据表、修改数据表、删除数据表的方法。案例学习目标

CREATETABLE语句、ALTERTABLE语句、DROPTABLE语句、PL/SQL的执行。案例知识要点课堂案例4——使用PL/SQL管理表案例完成步骤-创建数据表添加标题文字教师演示讲解(1)编写SQL脚本(2)运行创建CUSTOMER表的脚本输入到SQLDeveloper的“EnterSQLStatement”区域,单击图标或按F5键运行脚本,执行PL/SQL语句课堂案例4——使用PL/SQL管理表案例完成步骤-修改数据表添加标题文字教师演示讲解1.添加列【例4-2】考虑到需要了解商品的生产厂商的信息,要在SCOTT用户方案的GOODS表中添加一个长度为20个字符,名称为g_Producer,类型为varchar的新的一列。ALTERTABLESCOTT.GOODSADDg_Producervarchar(20)课堂案例4——使用PL/SQL管理表案例完成步骤-修改数据表添加标题文字教师演示讲解2.修改列【例4-3】考虑到出生日期的实际长度和数据操作的方便性,要将SCOTT用户方案中的GOODS表中的g_ProduceDate数据类型改为char型,且宽度为10。ALTERTABLESCOTT.GOODSMODIFYg_ProduceDatechar(10)课堂案例4——使用PL/SQL管理表案例完成步骤-修改数据表添加标题文字教师演示讲解3.删除列使用ALTERTABLE语句删除列时,可以使用DROPCOLUMN关键字。【例4-4】如果不考虑商品的生产厂商信息,要在SCOTT用户方案中的GOODS表中删除已有列g_Producer。ALTERTABLESCOTT.GOODSDROPCOLUMNg_Producer使用ALTERTABLESCOTT.GOODSCASCADE;可以删除与指定列相关联的约束课堂案例4——使用PL/SQL管理表案例完成步骤-查看删除表添加标题文字教师演示讲解1.查看表【例4-5】使用DESCRIBE命令查看用户方案SCOTT下的商品表USERS。DESCRIBESCOTT.Users;2.删除表使用PL/SQL删除表的基本语法格式为:DROPTABLE[用户方案.]<表名>;【例4-6】使用DROPTABLE命令删除用户方案为SCOTT下的商品表GOODS。DROPTABLESCOTT.GOODS;【例4-7】使用DROPTABLE命令删除用户方案SCOTT中的商品表GOODS,并删除商品表的所有外键约束。DROPTABLESCOTT.GOODS CASCADECONSTRAINS;课堂案例5——使用SQLDeveloper操作数据记录掌握在SQLDeveloper中操作数据记录的方式。案例学习目标在SQLDeveloper中添加数据、在SQLDeveloper中修改数据、在SQLDeveloper中删除数据。案例知识要点课堂案例5——使用SQLDeveloper操作数据记录案例完成步骤添加标题文字教师演示讲解课堂案例6——使用PL/SQL操作数据记录学习使用PL/SQL语句插入记录、修改记录和删除记录的语句。案例学习目标INSERT语句插入记录、UPDATE语句修改记录、DELETE语句删除记录。案例知识要点课堂案例6——使用PL/SQL操作数据记录案例完成步骤添加标题文字教师演示讲解1.插入数据记录在PL/SQL中,使用INSERTINTO语句实现在表中插入数据记录的操作,其语法格式为:INSERTINTO[用户方案].<表>[(<列1>[,<列2>…])]VALUES(<值1>[,<值2>…]);(1)插入所有列(2)插入指定列课堂案例6——使用PL/SQL操作数据记录案例完成步骤添加标题文字教师演示讲解2.更新数据记录在PL/SQL中,使用UPDATE语句实现更新表中数据记录的操作,其语法格式为:UPDATE[用户方案].<表>SET<列1>=<表达式1>[,<列2>=<表达式2>…][WHERE条件表达式];(1)修改单条记录(2)修改多条记录课堂案例6——使用PL/SQL操作数据记录案例完成步骤添加标题文字教师演示讲解3.删除数据记录在PL/SQL中,使用DELETEFROM语句实现删除表中数据记录的操作,其语法格式为:DELETE[FROM][用户方案].<表>[WHERE条件表达式;](1)删除指定记录

(2)删除所有记录PL/SQl简介PL/SQL是过程语言(ProceduralLanguage)与结构化查询语言(SQL)结合而成的编程语言PL/SQL是对SQL的扩展支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构可用于创建存储过程、触发器和程序包,给SQL语句的执行添加程序逻辑与Oracle服务器和Oracle工具紧密集成,具备可移植性、灵活性和安全性支持SQL,在PL/SQL中可以使用:数据操纵命令事务控制命令游标控制SQL函数和SQL运算符支持面向对象编程(OOP)可移植性,可运行在任何操作系统和平台上的Oralce数据库更佳的性能,PL/SQL经过编译执行安全性,可以通过存储过程限制用户对数据的访问用户将整个语句块发送给OracleOracleProcedureBegin

ProcedureCallSQLCommand

…EndPL/SQL引擎驻留在Oracle服务器中该引擎接受PL/SQL块并对其进行编译执行将PL/SQL块发送给Oracle服务器用户执行过程语句引擎将SQL语句发送给SQL语句执行器Oracle服务器PL/SQL引擎SQL

语句

执行器过程语句

执行器执行SQL语句将结果发送给用户使用PL/SQL编程常量和变量--常量常量是指在程序运行期间其值不能改变的量。

【例5-1】定义常量PI(3.14159)。--设置打开控制台输出SETSERVEROUTPUTON--声明一个变量或常量DECLAREPICONSTANTNUMBER(6,5):=3.14159;BEGIN--输出指定变量或常量的值

DBMS_OUTPUT.PUT_LINE('PI='||PI);END;

其中,PUT_LINE过程中使用的“||”用于连接输出内容的两部分

课堂案例1——使用PL/SQL编程常量和变量--变量变量是指由程序读取或赋值的存储单元,用于临时存储数据,变量中的数据可以随着程序的运行而发生变化。每个变量都必须有一个特定的数据类型,可以是系统数据类型,也可以是自定义数据类型。

【例5-2】编写计算圆面积的PL/SQL块。SETSERVEROUTPUTONDECLAREPICONSTANTNUMBER(6,5):=3.14159;--声明两个变量并赋初值

v_radiuFLOAT:=2;v_areaFLOAT;BEGINv_area:=PI*v_radiu*v_radiu;DBMS_OUTPUT.PUT_LINE('Area='||v_area);END;课堂案例1——使用PL/SQL编程条件结构-IF结构【例5-3】使用简单IF结构判断一个整数的奇偶性。SETSERVEROUTPUTONDECLAREv_numberINTEGER:=518;BEGIN

IFMOD(v_number,2)=0THENDBMS_OUTPUT.PUT_LINE(v_number||'是一个偶数');

ELSEDBMS_OUTPUT.PUT_LINE(v_number||'是一个奇数');ENDIF;END;课堂案例1——使用PL/SQL编程条件结构-IF结构【例5-4】使用复杂IF结构输出3个整数之中的最大者。课堂案例1——使用PL/SQL编程条件结构-CASE结构【例5-5】使用单一选择符进行等值比较的CASE结构将百分制成绩转换为5分制成绩。课堂案例1——使用PL/SQL编程条件结构-CASE结构【例5-6】使用多种条件进行非等值比较的CASE结构将百分制成绩转换为5分制成绩。课堂案例1——使用PL/SQL编程循环结构-While循环【例5-7】使用WHILE循环求1到100的所有正整数之和。SETSERVEROUTPUTONDECLARE iINTEGER:=1; sINTEGER:=0;BEGIN

WHILEi<=100LOOP s:=s+i; i:=i+1;

ENDLOOP; DBMS_OUTPUT.PUT_LINE('1+2+...+100='||s);END;课堂案例1——使用PL/SQL编程循环结构-Loop循环【例5-8】使用LOOP循环求1到100的所有正整数之和。SETSERVEROUTPUTONDECLARE iINTEGER:=1; sINTEGER:=0;BEGIN

LOOP s:=s+i; i:=i+1; EXITWHENi>100;

ENDLOOP; DBMS_OUTPUT.PUT_LINE('1+2+...+100='||s);END;课堂案例1——使用PL/SQL编程循环结构-For循环使用FOR循环不需要显式声明循环控制变量的类型,而由PL/SQL隐式提供。默认情况下,循环控制变量从下限值开始,每次循环结束后自动增加1,直至超过上限值为止;若指定REVERSE参数,则循环控制变量从上限值开始,每次循环结束后自动减1,直至低于下限值为止。

课堂案例1——使用PL/SQL编程循环结构-For循环【例5-9】使用不带REVERSE参数的FOR循环求1到100的所有正整数之和。【例5-10】使用带REVERSE参数的FOR循环求1到100的所有正整数之和。课堂案例1——使用PL/SQL编程循环结构-跳转语句【例5-11】借助于GOTO跳转语句输出10以内第一个能同时被2和3整除的正整数。SETSERVEROUTPUTONDECLAREnumINTEGER:=1;BEGINWHILEnum<=10LOOPIFMOD(num,2)=0ANDMOD(num,3)=0THEN

GOTOdisplay;ENDIF;num:=num+1;ENDLOOP;<<display>> DBMS_OUTPUT.PUT_LINE(num);END;课堂案例1——使用PL/SQL编程常用系统函数-数学函数课堂案例1——使用PL/SQL编程常用系统函数-数学函数【例5-12】测试常用数学函数的用法。SETSERVEROUTPUTONBEGINDBMS_OUTPUT.PUT_LINE('-8的绝对值为'||ABS(-8));DBMS_OUTPUT.PUT_LINE('8的3次幂为'||POWER(8,3));DBMS_OUTPUT.PUT_LINE('8的平方根为'||SQRT(8));DBMS_OUTPUT.PUT_LINE('3.14159四舍五入到小数点后3位为'||ROUND(3.14159,3));DBMS_OUTPUT.PUT_LINE('e='||EXP(1));DBMS_OUTPUT.PUT_LINE('大于或等于-32.5的最小整数为'||CEIL(-32.5));DBMS_OUTPUT.PUT_LINE('小于或等于-32.5的最大整数为'||FLOOR(-32.5));END;课堂案例1——使用PL/SQL编程常用系统函数-字符串函数课堂案例1——使用PL/SQL编程常用系统函数-字符串函数【例5-13】测试常用字符串函数的用法。SETSERVEROUTPUTONBEGINDBMS_OUTPUT.PUT_LINE('a的ACSCII值为'||ASCII('a'));DBMS_OUTPUT.PUT_LINE('ACSCII值97对应的字符为'||CHR(97));DBMS_OUTPUT.PUT_LINE('字符串"HunanRailway"的长度为'||LENGTH('HunanRailway'));DBMS_OUTPUT.PUT_LINE('将字符串"HunanRailway"全部转换为大写形式为'||UPPER('HunanRailway'));DBMS_OUTPUT.PUT_LINE('将字符串"HunanRailway"全部转换为小写形式为'||LOWER('HunanRailway'));END;课堂案例1——使用PL/SQL编程常用系统函数-日期函数课堂案例1——使用PL/SQL编程常用系统函数-日期函数【例5-14】测试常用日期函数的用法。SETSERVEROUTPUTONBEGINDBMS_OUTPUT.PUT_LINE('当前日期时间为'||SYSDATE);DBMS_OUTPUT.PUT_LINE('当前月份的最后一天的日期为'||LAST_DAY(SYSDATE));DBMS_OUTPUT.PUT_LINE('字符串对应日期'||TO_DATE('2007-5-24','YYYY-MM-DD'));DBMS_OUTPUT.PUT_LINE('两个日期相差的月份'||MONTHS_BETWEEN('14-4月-99',SYSDATE));END;课堂案例1——使用PL/SQL编程常用系统函数-转换函数课堂案例1——使用PL/SQL编程常用系统函数-转换函数【例5-15】测试常用转换函数的用法。SETSERVEROUTPUTONBEGINDBMS_OUTPUT.PUT_LINE('转换为数据库字符集的ASCII字符串为'||ASCIISTR('湖南铁道'));DBMS_OUTPUT.PUT_LINE('将当前日期转换为字符串类型数据为'||CAST(SYSDATEASVARCHAR2));DBMS_OUTPUT.PUT_LINE('将字符串转换为ROWID数据类型为'||CHARTOROWID('AAAAFdl/#$'));DBMS_OUTPUT.PUT_LINE('字符集转换'||CONVERT('湖南铁道','US7ASCII','WE8ISO8859P1'));END;课堂案例1——使用PL/SQL编程%TYPE变量Oracle9i以后的版本提供了%TYPE定义方法。这样当数据表的字段类型修改后,PL/SQL程序中相应变量的类型也自动修改。【例5-16】使用%TYPE获取查询的商品的基本信息。SETSERVEROUTPUTONDECLARE

v_gIdGoods.g_ID%TYPE;v_gNameGoods.g_Name%TYPE;v_gPriceGoods.g_Price%TYPE;v_gNumberGoods.g_Number%TYPE;BEGINSELECTg_ID,g_Name,g_Price,g_NumberINTOv_gId,v_gName,v_gPrice,v_gNumberFROMSCOTT.GoodsWHEREg_ID='010003';dbms_output.put_line(v_gId||'/'||v_gName||'/'||v_gPrice||'/'||v_gNumber);END;

课堂案例1——使用PL/SQL编程%ROWTYPE变量与%TYPE类型类似,也可以在不确定查询列的类型的情况下,使用%ROWTYPE类型的变量存储查询的一行数据

。【例5-17】使用%ROWTYPE获取查询的商品基本信息。SETSERVEROUTPUTONDECLARE

v_GoodRecordGoods%ROWTYPE;BEGINSELECT*INTOv_GoodRecordFROMSCOTT.GoodsWHEREg_ID='010003';dbms_output.put_line(v_GoodRecord.g_ID);dbms_output.put_line(v_GoodRecord.g_Name);dbms_output.put_line(v_GoodRecord.g_Price);dbms_output.put_line(v_GoodRecord.g_Number);END;课堂案例1——使用PL/SQL编程异常处理为了提高应用程序的健壮性,开发人员必须考虑程序可能出现的各种错误,并进行相应的处理。在Oracle中,为了处理PL/SQL应用程序的各种错误,Oracle提供了三种类型的异常。(1)预定义异常:用于处理常见的Oracle错误(2)非预定义异常:用于处理预定义异常所不能处理的Oracle错误(3)自定义异常:用于处理于Oracle错误无关的其他情况课堂案例1——使用PL/SQL编程异常处理—系统预定义异常课堂案例1——使用PL/SQL编程异常处理—系统预定义异常【例5-18】对Goods表中的插入的重复商品号进行异常处理(使用预定义异常)。SETSERVEROUTPUTONBEGININSERTINTOSCOTT.GoodsVALUES('010001','诺基亚6700Slide','01',1500,0.9,20,to_date('2009-06-01','yyyy-mm-dd'),'pImage/010001.gif','热点','彩屏,1600万色,TFT,240×320像素,2.2英寸');EXCEPTIONWHENDUP_VAL_ON_INDEXTHENdbms_output.put_line('捕获到DUP_VAL_ON_INDEX异常');dbms_output.put_line('重复的商品编号');END;课堂案例1——使用PL/SQL编程异常处理—非预定义异常使用非预定义异常需要包括以下三个步骤:(1)在定义部分定义异常名;(2)在异常和Oracle错误之间建立关联(需要使用伪过程EXCEPTION_INIT);(3)在异常处理部分捕捉并处理异常。【例5-19】删除商品类别表,并处理ORA-2292错误(使用非预定义异常)。SETSERVEROUTPUTONDECLAREe_FKEXCEPTION;--1、定义部分

PRAGMAEXCEPTION_INIT(e_FK,-2292);--2、建立关联关系BEGINDELETESCOTT.TypesWHEREt_Name='通信商品';EXCEPTIONWHENe_FKTHEN--3、捕捉处理

DBMS_OUTPUT.PUT_LINE('该类别已被使用');END;课堂案例1——使用PL/SQL编程异常处理—自定义异常使用自定义异常时,需要包括以下三个步骤:(1)需要在定义部分(DECLARE)定义异常;(2)再执行部分(BEGIN)触发异常(使用RAISE语句);(3)在异常处理部分(EXCEPTION)捕捉并处理异常。

7.2存储过程概述视图特点在Oracle中,可以在数据库中定义子程序,在子程序中将一些固定的操作集中起来,由Oracle数据库服务器完成,以完成某个特定的功能。这种子程序称为存储过程(Proce-Dure)。使用存储过程具有如下的优点:(1)存储过程在服务器端运行,执行速度快;(2)存储过程执行一次后驻留在Oracle数据库服务器的高速Cache中,以后再次执行存储过程时,只需从高速Cache中调用已经编译好的代码即可,从而提高了系统性能;(3)存储过程确保了数据库的安全。使用存储过程,可以在禁止用户直接访问应用程序中的某些数据表的情况下,授权执行访问这些数据表的存储过程。(4)自动完成需要预先执行的任务。存储过程可以设置为系统启动时自动执行,而不必在系统启动后再进行手动操作,从而方便了用户的使用,可以自动完成一些需要预先执行的任务。4.6.1数据完整性概述概述添加标题文字数据完整性是指数据的精确性和可靠性。它是为防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性主要分为4类:域完整性、实体完整性、引用完整性和用户定义完整性。1.域完整性域完整性是指数据库表中的列必须满足某种特定的数据类型或约束,其中约束又包括取值范围精度等规定。表中的CHECK、FOREIGNKEY约束和DEFAULT、NOTNULL定义都属于域完整性的范畴。2.实体完整性实体完整性规定表的每一行在表中是唯一的。实体表中定义的UNIQUE、PRIMARYKEY和IDENTITY约束就是实体完整性的体现。4.6.1数据完整性概述概述添加标题文字3.引用完整性引用完整性是指两个表的主关键字和外关键字的数据应对应一致。它确保了有主关键字的表中对应其他表的外关键字的行存在,即保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。引用完整性作用表现在如下几个方面:禁止在从表中插入包含主表中不存在的关键字的数据行;禁止会导致从表中的相应值孤立的主表中的外关键字值改变;禁止删除在从表中有对应记录的主表记录。4.用户定义完整性用户定义完整性指的是由用户指定的一组规则,它不属于实体完整性、域完整性或引用完整性。

课堂案例7——数据完整性与约束学习在Oracle中使用OEM和PL/SQL语句实现各类约束以实现数据完整性的方法和操作步骤

。案例学习目标管理NOTNULL约束、管理DEFAULT约束、管理UNIQUE约束、管理CHECK约束、管理PRIMARYKEY约束、管理FOREIGNKEY约束

。案例知识要点课堂案例7——数据完整性与约束案例完成步骤-非空约束添加标题文字教师演示讲解非空约束说明列值不允许为空(NULL),当插入或修改数据时,设置了非空约束的列的值不允许为空,它必须存在具体的值,如商品编号、商品名称必须为非空。如果没有为列创建非空约束,则该列默认为允许空值。非空约束可以通过OEM或PL/SQL创建。课堂案例7——数据完整性与约束案例完成步骤-默认约束添加标题文字教师演示讲解默认约束是指表中添加新行时给表中某一列指定的默认值。使用默认约束一是可以避免不允许为空值的数据错误,二是可以加快用户的输入速度。默认约束可以通过OEM或PL/SQL创建。如果创建了称为“默认值”的对象。当绑定到列或用户定义数据类型时,如果插入时没有明确提供值,默认值便指定一个值,并将其插入到对象所绑定的列中

。课堂案例7——数据完整性与约束案例完成步骤-默认约束添加标题文字教师演示讲解默认约束是指表中添加新行时给表中某一列指定的默认值。使用默认约束一是可以避免不允许为空值的数据错误,二是可以加快用户的输入速度。默认约束可以通过OEM或PL/SQL创建。c_Genderchar(2)DEFAULT'女', --性别

课堂案例7——数据完整性与约束案例完成步骤-唯一约束添加标题文字教师演示讲解唯一约束通过确保在列中不输入重复值保证一列或多列的实体完整性,每个唯一约束要创建一个唯一索引。对于实施唯一约束的列,不允许有任意两行具有相同的索引值。如商品编号是唯一的,这样才能唯一地确定一种商品。与主键约束不同的是,Oracle允许为一个表创建多个唯一约束。唯一约束可以通过OEM或PL/SQL创建

。CONSTRAINT约束名UNIQUE(列);课堂案例7——数据完整性与约束案例完成步骤-检查约束添加标题文字教师演示讲解检查约束限制输入到一列或多列中的可能值,从而保证Oracle数据库中数据的域完整性。检查约束实际上定义了一种输入验证规则,表示一个列的输入内容必须符合该列的检查约束条件,如果输入内容不符合规则,则数据输入无效。如商品数量必须定义在[0,100]之间,输入的任何商品的数量都必须符合此规则,否则这样的数据记录不会被插入到商品表中。

课堂案例7——数据完整性与约束案例完成步骤-主键约束添加标题文字教师演示讲解主键约束主要用于实现实体完整性,对于指定了主键约束的列,要求表中的每一行有一个唯一的标识符,这个标识符就是主键。主键约束实际上是通过创建唯一索引来保证指定列的实体完整性的。主键约束可以应用于表中一列或多列(复合主键)

课堂案例7——数据完整性与约束案例完成步骤-外键约束添加标题文字教师演示讲解外键约束为表中一列或多列数据提供引用完整性,它限制插入到表中被约束列的值必须在被引用表中已经存在。实施外键约束时,要求在被引用表中定义了主键约束或唯一约束。被引用表被称为主表,主表中的主键称为引用完整性中的主键,必须引用主表进行引用完整性约束

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论