预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共34页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

工作室www.v512.com第七章DDL与数据库对象数据库对象是数据库中信息存储、组织和管理的基本单位,具体包括表、约束、视图、索引、序列、存储过程、触发器、数据库用户等多种,常用Oracle数据库对象如图7-1所示,本章将分别加以介绍。表7-1常用Oracle数据库对象对象描述表存放数据的基本数据库对象,由行(记录)和列(字段)组成约束条件执行数据校验,保证数据完整性的系列规则视图表中数据的逻辑显示索引根据表中指定的字段建立起来的顺序,用于提高查询性能序列一组有规律的整数值同义词对象的别名说明:数据库用户管理参见第九章数据库管理基础,存储过程、触发器等参见第十章PL/SQL开发。7.1表关系数据库中的表结构与我们日常生活中经常使用的数据表对应,数据表由0~多行(Row)数据组成,每行包含1~多个数据列(Column),形成规则的矩阵结构。每行数据也称为一条记录(Record),用于记录一组有意义的信息组合,例如员工信息表中emp中每行记录描述了生活中一名员工的相关信息,包括编号、姓名、职位、工资等;记录行中的数据列又称为字段(Field)或属性(Property),其对应的是记录行中的一个信息分量,如员工姓名、职位等。表中数据列的名字也称字段名,通常应体现其含义,如enmae、job等。7.1.1创建表本节是从语法层面讲解如何在数据库中建表,在实际数据库应用开发中,建表前要先进行数据库设计,包括建立数据模型、并可使用建模等,详见本书第八章。要在数据库中创建表,需要具备一定的前提条件:首先,数据库用户应拥有具备创建表的权1工作室www.v512.com限;其次,数据库中应有可用的存储空间。其基本语法格式如下:CREATETABLE[schema.]table(columndatatype[DEFAULTexpr][,...]);其中,schema为方案名,用于指定在哪个方案下创建新表,如缺省则将表建在当前方案(与当前Oracle用户同名的方案)下;table用于指定新建表的名字,同一方案下的数据库对象不允许出现重名;column为字段名,datatype为相应的字段类型,关键字DEFAULT后的表达式expr用于指定该字段的缺省值。创建表时必须指定表名、字段名和字段类型。例如:--创建测试表test1CREATETABLEscott.test1(eidNUMBER(10),nameVARCHAR2(20),hiredateDATEDEFAULTSYSDATE,salaryNUMBER(8,2)DEFAULT1500);说明:数据表中可以包含1~多个字段,但不允许1个字段都没有。如果当前用户为SCOTT,则此时表名前的"scott."可以省略;否则,当前用户应拥有在SCOTT方案中建表的权限(参见本书第九章)。CRAETETABLE为DDL语句,一经执行不可撤消。使用缺省值关于缺省值的使用,需要注意:在向表中添加记录时如未显式指定某个字段的值,则该字段会被赋为此缺省值,如果在定义表时未设置过该字段的缺省值,则会被赋值为NULL。--插入数据到test1表,测试缺省值作用效果INSERTINTOtest1VALUES(101,'张三','28-9月-2005',4800);INSERTINTOtest1VALUES(102,'李四',NULL,NULL);INSERTINTOtest1(eid,name)VALUES(103,'王五');--查询表中数据SELECT*FROMtest1;上述语句的允许返回结果如图7-1所示。图7-1缺省值使用效果此外,也可在插入或更新记录时,使用DEFALUT关键字指定某个字段取缺省值,例如:INSERTINTOtest1VALUES(104,'赵六',DEFAULT,NULL);UPDATEtest1SETsalary=DEFAULTWHEREsalaryISNULL;2工作室www.v512.comSELECT*FROMtest1;做为练习,请读者自行测试其运行效果。使用子查询创建表在创建表的同时,可以将子查询的结果直接插入其中,其语法格式如下:CREATETABLE[schema.]table(column[,...])ASsubquery;其中,column用于指定新建表的各字段名,subquery为用于提供数据的子查询。新建表与子查询结果的字段名列表必须匹配(字段数目相同),且新建表的字段名列表可以缺省,此时会缺省使用子查询中结果中的字段名或别名,例如:CREATETABLEmyemp(编号,姓名,年薪)ASSELECTempno,ename,sal*12FROMemp;CREATETABLEmyemp2ASSELECTempno,ename,sal*12annsalFROMemp;说