您好,欢迎访问三七文档
第四课建立和管理表作者:吴进学习目标了解表的基本概念1理解表的结构2掌握表的创建、修改和删除34数据范式从数据库表中除去冗余数据的过程称为规范化。如果使用得当,规范化是得到高效的数据表逻辑结构最好和最容易的方法。规范化数据时,应执行以下操作:将数据库的结构精简为最简单的形式从表中删除冗余列标识所有依赖于其它数据的数据规范化过程有几个阶段。它们被称为:第一范式(1NF)第二范式(2NF)第三范式(3NF)第四范式(4NF)第五范式(5NF)对于所有的实际应用,3NF已经足够。高效范式的任务删除表中重复的列达到1NF。删除表中不完全依赖于主键的数据为2NF。删除不属于该表的数据(即完全依赖于其它列或外键的数据项),以使数据符合3NF。向表中放回一定数量的冗余数据,通过避免使用跨表联接来提高性能。数据库设计异常从概念的角度出发,将所有的信息放在一个关系中很方便,因为这样查询数据库可能会比较容易。但是这些关系具有下列不必要的特性:见备注。1NF第一范示(1NF)满足关系性质的表称为满足第一范式。此时,关系不能有多值或复合属性。这是1NF所必需的。当且仅当一个关系的所有基础域包含原子值时,则称该关系满足1NF。第一范式仅处理关系的基本结构,不解决冗余信息或异常信息。2NF第二范式(2NF)第二范式用于解决已满足1NF的关系所标识的问题。第二范示的目标是确保关系中的所有信息只是关于一个实体的信息。如果一个关系满足1NF,并且所有非主键属性完全依赖于该关系的任一主键,则该关系满足2NF。例子解说见备注:3NF第三范式(3NF)虽然使关系满足2NF可以删除许多可能出现的异常,但不能完全删除所有的异常,还需要进一步的规范化。定义3NF:如果关系R满足2NF,并且R的任一非主键属性都不传递依赖于R的其它任何非主键属性,则称为R满足第三范示。传递依赖:假设属性A、B、C是R的三个属性,如果AB,且BC,我们可得出这就是AC.发生了传递依赖。表的结构用户表和数据字典是Oracle数据库中的两种类型的表用户表由用户创建数据字典由Oracle服务器创建和维护数据字典包括有关数据库的信息表、列和行列称为字段行又称为记录每个字段具有字段名、字段长度、约束、默认值属性命名表时需要遵循的规则•表名首字符应该为字母•不能使用保留字•表名长度不超过30字符•同一用户下表名不能重复•可以使用下划线、数字、字母,但不能使用空格和单引号•不区分大小写,系统自动转换为大写创建新表创建表属于DDL语言CREATETABLEEMPLOYEE(empidchar(4)notnull,empnamevarchar2(15)notnull,empaddressvarchar2(20),zipchar(10),empphonechar(15));创建临时表Oracle可以建立临时表临时表用来保存一个会话(SESSION)的数据或者一个事务中需要的数据当会话退出或者用户提交和回滚事务的时候,临时表的数据自动清空,但是临时表的结构以及元数据还存储在用户的数据字典中会话特有的临时表和事务特有的临时表事务特有的临时表只在事务生命周期中存在Createglobaltemporarytableclasses(class_idnumber(5),class_namevarchar2(8),class_memovarchar2(200))oncommitdeleterows;事务特有的临时表Insertintoclassesvalues(1,’1’,’1’);Select*fromclasses;Commit;Select*fromclasses;会话特有的临时表用户退出,自动清除临时表中数据Createglobaltemporarytablestudent(stu_idnumber(5),class_idnumber(5),stu_namevarchar2(8),stu_menovarchar2(200))oncommitpreserverows;会话特有的临时表insertintostudentvalues(1,1,'1','1');Select*fromstudent;Commit;Select*fromstudent;--更换一个用户后Select*fromstudent;特性和性能临时表只在当前连接内有效临时表不建立索引,所以如果数据量比较大或进行多次查询时,不推荐使用在Oracle中,全局临时表并不会删除,实际上你只需要建立一次,以后直接应用就行了,这与sqlserver和Sybase不一样。实际上在断开数据库连接时,临时表中数据自动清空。增加列AltertableemployeeaddDepartmentCodechar(6);修改列Altertableemployeemodifyempnamevarchar2(40);Altertabledepartmentmodify(Deptnochar(6),Notevarchar2(80));删除列Altertableemployeedropcolumnempphone;--有的时候数据正在使用,并发时,可以先把字段设置为unused,等没有人使用的时候再进行删除。AltertableemployeeSetunused(zip);AltertableemployeeDropunusedcolumns;重命名表Renameold_nametonew_name;Renameemployeetoemp;Altertableemployeerenametoemp;清空与删除表Deletefromemp;Truncatetableemp;TRUNCATE与DELETE的区别•TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令,DELETE将被撤销,而TRUNCATE则不会被撤销•TRUNCATE是一个DDL语言,象其他所有的DDL语言一样,它将被隐形提交,不能对TRUNCATE使用ROLLBACK命令•TRUNCATE将重新设置所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。•TRUNCATE不能触发任何DELETE触发器•当表被清空后,表和表的索引将重新设置成初始大小,而DELETE则不能删除表•Droptableemployee;查看有关表信息视图名称内容DBA_TABLESALL_TABLESUSER_TABLESDBA视图描述数据库中的所有关系表;ALL视图描述用户可访问的所有表;USER视图局限于用户拥有的表DBA_TAB_COLUMNSALL_TAB_COLUMNSUSER_TAB_COLUMNS这些视图描述数据库中的表视图和簇的列DBA_ALL_TABLESALL_ALL_TABLESUSER_ALL_TABLES这些视图描述数据库中的所有关系表和对象表DBA_TAB_COMMENTSALL_TAB_COMMENTSUSER_TAB_COMMENTS这些视图显示表和视图的注释查看有关表信息视图名称内容DBA_COL_COMMENTSALL_COL_COMMENTSUSER_COL_COMMENTS这些视图列出显示表的列和视图的列的注释DBA_EXTERNAL_TABLESALL_EXTERNAL_TABLESUSER_EXTERNAL_TABLES这些视图列出数据库的外部表的特殊属性DBA_EXTERNAL_LOCATIONSALL_EXTERNAL_LOCATIONSUSER_EXTERNAL_LOCATIONS这些视图列出外部表的数据源DBA_TAB_HISTOGRAMSALL_TAB_HISTOGRAMSUSER_TAB_HISTOGRAMS这些视图描述表和视图上的直方图DBA_TAB_COL_STATISTICSALL_COL_STATISTICSUSER_COL_STATISTICS这些视图提供从相关的视图中提取出来的列的统计数据和直方图信息查看有关表信息视图名称内容DBA_TAB_COL_STATISTICSALL_COL_STATISTICSUSER_COL_STATISTICS这些视图提供从相关的视图中提取出来的列的统计数据和直方图信息DBA_TAB_MODIFICATIONSALL_TAB_MODIFICATIONSUSER_TAB_MODIFICATIONS这些视图描述自从上次对它们收集统计数据之后已经被更改过的表DBA_UNUSER_COL_TABSALL_UNUSER_COL_TABSUSER_UNUSER_COL_TABS这些视图列出具有未使用列的表DBA_PARTIAL_DROP_TABSALL_PARTIAL_DROP_TABSUSER_PARTIAL_DROP_TABS这些视图列出部分的完成SROPCOLUMN操作的表如何从数据字典中查看一个表中所有列的信息--查询表信息SELECT*FROMALL_OBJECTSWHEREOWNER='SCOTT'ANDOBJECT_NAME='EMP';--查询列信息SELECTOBJ#,COL#,NAMEFROMSYS.COL$WHEREOBJ#in(SELECTobject_idFROMALL_OBJECTSWHEREOWNER='SCOTT'ANDOBJECT_NAME='EMP');使用OEM实践操作登陆(SYS)-管理-建表使用OEM实践操作可以通过显示SQL选项生成DDL语句课后练习•通过SYS利用OEM建立自己用户下的表,表结构来自scott用户下的emp,dept表,并导入数据。•将建立的表生成SQL语句。
本文标题:T4_建立和管理表
链接地址:https://www.777doc.com/doc-3313604 .html