资源预览内容
第1页 / 共78页
第2页 / 共78页
第3页 / 共78页
第4页 / 共78页
第5页 / 共78页
第6页 / 共78页
第7页 / 共78页
第8页 / 共78页
第9页 / 共78页
第10页 / 共78页
亲,该文档总共78页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1电子信息学院:苟电子信息学院:苟 旭旭 gouxuscu.edu.cngouxuscu.edu.cn管理和使用Oracle的表Oracle商用数据库技术与实践 The Technology and Practice of Oracle Database本讲主要内容2表的基本知识创建表Oracle 的数据类型Oracle表的管理表索引Oracle的分区表表设计举例Table的特点3表(table)是任何关系型数据库的基本数据结构;在关系数据库中,表是一系列二维数组的集合,用 来代表和储存数据对象之间的关系;它由纵向的列和横向的行组成,每列包含的对象某 个特定类型的信息,每行包含了某个对象所有信息;对于特定的数据库表,列的数目一般事先固定,各 列之间可以由列名来识别;而行的数目可以随时、动态变化,每行通常都可以 根据某个(或某几个)列中的数据来识别,称为候 选键;Table的特点4举例:每列表示学生数据的某一类信息每行表示某个学生的所有相关数据学号可以作为某行数据(某个学生)的候选键或主 键(primary key,PK)学号学号姓名姓名性别性别专业代码专业代码电话电话年级年级emailemail08976547Tomm0764322006tommail.com07345687Peterm03421685412523200706989089Maryf038512854128212008marymail.comTable的特点5数据库中几乎所有的信息都存储最终都存储在表 中;表的结构一般反应了逻辑对象的结构.举例:如学生数据表反应了学生学籍基本数据结构;表与表之间的关系体现了逻辑对象之间的联系和 关系,是数据模型的主要体现;举例:学生数据表和院系数据表之间的关系Table的要素6表名,是数据表相互区别的标志;列名,表内各行数据的区分标志;列的数据类型,即定义该列可以接受的数据基本 类型和范围;完整性约束,是关系型数据库的一个基本原则, 是指数据库中数据的正确性和相容性,表示数据 库仅包括正确的和可接受的信息;表的存储表和列命名规则表名和列名:必须以字母开头必须在 130 个字符之间必须只能包含 AZ, az, 09, _, $, 和 #必须不能和用户定义的其他对象重名必须 不能是Oracle 的保留字表的完整性约束18域完整性、空值和复杂域限制一个列可接受值的范围,如列的数据类型;是否允许非空,即非空约束;检查约束定义一复杂域的完整性规则,如可选值范围, 举例:性别,中国电话区号;表的完整性约束29实体完整性确保表所有行都是唯一的;消除了存在重复记录的可能;表的主键(primary key,PK),唯一性检查;单列主键和复合列主键;表的候选主键(unique key,UK),实现唯一性检查举例:学生的学号就是表的主键,唯一性检查,单一主键年级+专业号组合主键(复合列主键)年级年级专业代码专业代码专业名专业名2008070212应用物理2007070212应用物理2007052164电子信息2006052164电子信息表的完整性约束310参照完整性(或关系完整性)定义在不同列和表之间建立关系,确保在子表中外键的 每个值符合父表的主键或候选键;在输入或删除记录时,引用完整性保持表之间已定义的 关系;如购物订单和订单内容列表之间的关系;参照行为:级联更新、级联删除,级联设置订单号订单号顾客名顾客名下单时间下单时间3211Tom200909013212Peter20090201订单号订单号商品号商品号商品名商品名数量数量3211AA键盘33212BB鼠标436553655CCCC电源线电源线2 23211DD硬盘1Oracle的5种完整性约束11CheckNOT NULLUniquePrimaryForeign key本讲主要内容12表的基本知识创建表Oracle 的数据类型Oracle表的管理表索引Oracle的分区表表设计举例SQL语法13SQL基本语法:CREATE TABLE table_name(column_name datatype null|not null,column_name datatype null|not null.)SQL语法举例14create table test(id number not null,name varchar2(20) not null,grade char(4) default 2006);- Add comments to the columns comment on column test.idis 学号;comment on column test.nameis 姓名;comment on column test.gradeis 年级;推荐使用客户端软件15推荐使用图形化工具PL/SQL Developer本讲主要内容16表的基本知识创建表Oracle 的数据类型Oracle表的管理表索引Oracle的分区表表设计举例数据类型17数据类型(datatype)是列(column)或存储过 程中的一个属性;Oracle的数据类型可以分:表的数据类型和PL/sql 支持数据类型,两者有区别又有联系;本章主要介绍Oracle表的数据类型;9i支持的数据类型18Char: 用于描述定长的字符型数据,长度):数据类型是一种有固定长度;最大长度定义2000(2K)字节;存储在数据类型为,如果某个数据比定义长度短, 那么将用空格在数据的右边补到定义长度;如果长度大于定义长度将会触发错误信息。举例:char(10)中存储abc,有7个空格补全Character :varchar223规则:VARCHAR2()是一种可变长度的、有最大长度的字母数字型数据;Varchar2字段长度可达到4000字节,Varchar2类型的 变量长度可达到32676字节;一个空的varchar2(2000) 和一个空的varchar2(2)字段 所占用的空间是一样的;Varchar2和char数据类型根据尾部的空格有不同的比 较规则。对Char型数据,尾部的空格将被忽略掉,对 于Varchar2型数据尾部带空格的数据排序比没有空格 的要大些。举例:Char 型数据:Yes=Yes Varchar2型数据:Yes) 和 NVARCHAR2()从名字上看比char和varchar2多了个N。它表示 存储的是Unicode数据类型的字符。英文字符只需要一个字节存储就够了,汉字需要两 个字节存储,英文与汉字同时存在时容易造成混乱, Unicode字符集就是为了解决字符集这种不兼容的问 题而产生的,它所有的字符都用两个字节表示,即 英文字符也是用两个字节表示。可以看出使用nchar、nvarchar2数据类型时不用担 心输入的字符是英文还是汉字,较为方便,但在存 储英文时数量上有些损失。Varchar和varchar2区别27varchar2是oracle提供的独特的数据类型;工业标准(sql)的VARCHAR类型可以存储空字符串, 但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类 型不是一个标准的VARCHAR,它将在数据库中 varchar列可以存储空字符串的特性改为存储NULL值。Oracle保证在任何版本中varchar2数据类型向上和向 下兼容。但不保证varchar,这是因为varchar是标准 sql提供的数据类型,有可能随着sql标准的变化而改变; Oracle建议使用VARCHAR2而不是VARCHAR。number 数据类型28number数据类型用来存储负的和正的整数、分数和浮 点型数据;范围在-1*10-103 和9.99999*10125之间,有38位的精 确度;标识一个数据超出这个范围时就会出错;number(p,s) 存储一个有p位精确度的s位等级的数据。p表示数字中的有效位,如没指定将使用38作为精度。s表示数字小数点右边的位数,scale默认设置为0. 如果设成负数,oracle将把该数字取舍到小数点左边 的指定位数。number 数据类型29举例:number(5,2),则这个字段的最大值是99,999,如果 数值超出了位数限制就会被截取多余的位数;如:number(5,2),但在一行数据中的这个字段输入 575.316,则真正保存到字段中的数值是575.32;如:number(3,0),输入575.316,真正保存的数据 是575。numbernumber(5)number和integer30integer是number的子类型(subtype),用它来限制 子类型变量的合法取值;integer的空间是38位 number(38),只能存储整 数; ;不建议使用这个数据类型;举例:create table T( ID INTEGER)最大可以存储38位整数date 数据类型31date 数据类型用来存储日期和时间格式的数据。从公元前4712年1月1日到公元4712年12月31日的 所有合法日期;这种格式可以转换为其他格式的数据去浏览,而 且它有专门的函数和属性用来控制和计算。以下的几种信息都包含在date数据类型中:century ,year ,month ,day ,hour ,minute , second date 数据类型32举例:sql select to_char(date1,mm/dd/yyyy hh24:mi:ss) “date” from date_table;date 06/20/2003 16:55:14 06/26/2003 11:16:36Date 和timestamp*33date的时间颗粒度位秒;timestamp是oracle扩展的数据类型,具备更高的精度, 达到billions(十亿)分之一秒;interval day to second:这是一个12字节的定宽数据类 型,用于存储一个时段,这个类型将时段存储为天/小 时/分钟/秒数,还可以有最多9 位的小数秒。interval year to month:这是一个5 字节的定宽数据 类型,用于存储一个时间段,这个类型将时段存储为 年数和月数。可以在日期运算中使用这种时间间隔使一个date 或 timestamp 类型增加或减少一段时间。timestamp介绍*34timestamptimestamp with local time zonetimestamp with time zone说明:timestamp with local time zone会随着用户所在时区 (sessiontimezone)而变化,是一个是参照用户的时区, 即session的时区;而timestamp with time zone则不随用户所在时区的 变化而变,是参照数据库的时区;数据类型 lob35lob(large object) 数据类型存储非结构化数据,比 如二进制文件,图形文件,或其他外部文件;lob 可以存储到4g字节大小;blob, nclob, 和clob 数据可以存储到不同的表空间 中;数据类型 lob36lob(large object) 类型bfile : 二进制文件,存储在数据库外的操作系统文件, 只读的。把此文件当二进制处理,是oracle的外部 lob类型;blob:二进制大对象。存储在数据库里的大对象,一 般是图像声音等文件;clob:字符型大对象。一般存储大数量文本信息。存 储单字节,固定宽度的数据;nclob :字
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号