数据库对象管理

上传人:lx****y 文档编号:243367210 上传时间:2024-09-21 格式:PPT 页数:132 大小:1.41MB
返回 下载 相关 举报
数据库对象管理_第1页
第1页 / 共132页
数据库对象管理_第2页
第2页 / 共132页
数据库对象管理_第3页
第3页 / 共132页
点击查看更多>>
资源描述
Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Click to edit Master title style,数据库对象管理,在Oracle系统中,从某种程度上来讲,表是数据库中最重要、最基本的对象,是实际存储数据的地方。对数据库的许多管理和操纵,实际上就是对数据库中表的管理和操纵。完整性约束是提高数据质量的最重要和最常用的手段。索引是加快对表中数据检索的方式,也是一种重要的数据库对象。,在Oracle系统中,表是数据库中的主要对象,是真正存储信息的对象。一般而言,表具有以下特征:,代表实体,表名在数据库中是唯一的,由行和列组成,行的顺序是任意的,列的顺序是任意的,列名在表中是唯一的,表属性的特点,对于所有类型的表,Oracle都允许开发人员和管理员规定各种表属性,他们会确定如下内容:,哪一个表空间包含表;,Oracle怎样将表物理存储在磁盘上;,当从磁盘读取表数据时,Oracle怎样将它们与内存进行映射;,Oracle怎样控制表上特定操作的日志。,表管理,创建表,修改表,删除表,插入数据,修改数据,删除数据,数据类型,NUMBER可以用来表示所有的数值数据:,fieldname NUMBER (precision, scale);,VARCHAR2用来表示变长的字符串数据类型:,fieldname VARCHAR2 (max_length);,CHAR。保存固定长度字符串,最大长度为2KB。,DATE。保存固定长度的日期数据。,BLOB。保存二进制大对象,通常用来保存图像和文档等二进制数据。,CLOB。保存字符型大对象。varchar2数据类型最多只能保存4000个字符,如果要保存的字符串数据超过此范围,应使用clob数据类型。,数值类型,数值类型可以用于存储整数、浮点数以及实数。在Oracle系统中,number数据类型具有精度(precision)和范围(scale)。精度是数值中的数字总和,可以是138个数字之间的任何值。范围表示任何给定数值的小数点右边的位数。,number(8,2) 或number(缺省表示取最大取值范围),表示总位数8位,小数点后2位,在创建表时,可以使用如下的语法格式声明number列:, number(precision,scale),字符类型,字符数据类型可以用于声明包含了字母、数字数据的列,包括char、nchar、varchar2、nvarchar2、raw、long和long raw、大对象等。,char:保存固定长度字符串,最大宽度为2000B。 默认宽度1个字节。,nchar:保存固定长度字符串,用于存储unicode字符集数据。1-2000字节,varchar2:与char类似,但它可以存储可变长的字符串。1-4000个字节,nvarchar2:存储可变长的双字节字符数据。1-4000个字节,raw:存储二进制数据,传输数据不需要数据类型的转换。最大宽度2000字节。,long: 存储变长字符串。长度达到2G。,long raw:存储图像、视频、音频等较大的数据,方便网络传输,最大宽度2G。,BLOB。保存二进制大对象,通常用来保存图像和文档等二进制数据。,CLOB。保存字符型大对象。varchar2数据类型最多只能保存4000个字符,如果要保存的字符串数据超过此范围,应使用clob数据类型。最大宽度为4G,日期和时间,与1993年5月18日或2005年1月1日这样的时间点相关联的数据类型称为日期时间类型,可以使用以下数据类型创建表:,timestamp 和 date,两者区别:,timestamp类型的秒精确到6位数字,date类型没有小数部分的秒,系统提供了3种方式获取时间值,(1)SYSDATE()函数,获取当前系统时间(数据库服务器),默认格式是DD-MON-YY,(2)TO_DATE()函数,用非默认格式输入日期值,TO_DATE(,9月 16,2008,month dd,yyyy,),TO_DATE(9月 16,2008,3:30, month dd,yyyy,HH:MI AM ),(3)DATE方法,DATE2009-03-10,将字符串转换成日期值,日期格式为YYYY-MM-DD格式,create table temp,( tempdate1 date,tempdate2 timestamp,);,insert into temp(tempdate1) values(SYSDATE);,insert into temp(tempdate1) values(DATE2009-03-10);,insert into temp values(SYSDATE, SYSDATE);,表的常见形式,标准表,以堆形式组织的标准表示普通表,表中的数据存储的是未排序的集合。,堆的含义是乱七八糟。在Oracle系统中,最基本的表类型是堆表。这里堆的含义是:,数据是在磁盘上随机存储的。,一般情况下,Oracle系统在将数据行写入数据块时不会考虑其它行的存储位置。当向堆表中插入数据时,数据库会将该数据写入第一个有足够自由空间的段中。当修改和删除数据行时,系统将为新的插入提供可用的空间。,.临时表,临时表是那些只在事务处理和会话期间存在数据的表。数据会在事务处理或会话开始之后插入临时表,当事务处理或会话完成之后该表就会被删除。通过采用这种方式,开发人员可以在需要执行的应用逻辑运行期间访问临时存储区域。,直到用户实际向表中插入数据时,系统才会为临时表分配空间,而与此相对的堆表会在create table语句执行之后就分配一个区域。,索引表(index organization table,IOT),以索引形式组织的表。可以存储索引,以便提高查询性能。,索引组织表是以牺牲插入性能和更新性能为代价而提供查询性能的方式。,假如,要使用英汉大词典查询一些词的含义,那么当用户在词典中搜索词时,用户就要将书打开到这个词的附近位置。用户可以根据词的字母顺序指导找到这个词,然后再基于用户打开书的位置进行前后搜索。,这是B树的实际示例,也是索引组织表的典型示例。,创建表,创建表的最简单、最常见的方法的语法格式如下:,create table schema_name.(, default , default ,);,表Users的结构,编 号,字 段 名 称,数 据 结 构,说 明,1,UserId,NUMBER,用户编号,2,UserName,VARCHAR2 40,用户名,3,UserType,NUMBER,1,用户类型(1表示管理用户,2表示普通用户),4,UserPwd,VARCHAR2 40,密码,创建表,【例】创建表Users,SQL语句如下:,CREATE TABLE Users,(UserIdNumber Primary Key,UserName Varchar2(40) NOT NULL,UserType Number(1),UserPwd Varchar2(40),);,表的特性,CREATE TABLE Users,(UserIdNumber Primary Key,UserName Varchar2(40) NOT NULL,UserType Number(1),UserPwd Varchar2(40),)tablespace datatest;,这里datatest是表空间,表示在datatest表空间中创建users表。,系统默认在用户默认表空间中创建表,否则会在SYSTEM表空间中创建表,。,.,tablespace子句,指定创建的表存放的表空间,.storage子句,设置系统存储表的存储参数。,Oracle允许用户使用存储参数来在磁盘上存储表,如果只指定了表,没有设置存储参数,则系统自动采用所属表空间的默认存储参数设置。,格式:,storage,( INITIAL,NEXT,PCTINCREASE,MINEXTENTS,MAXEXTENTS,),INITIAL :指定表中的数据分配的第一个盘区大小,以KB或MB为单位,NEXT:指定存储表中的数据分配的第二个盘区大小,以KB或MB为单位,PCTINCREASE:从第二个盘区之后,每个盘区相对于上 一个盘区的增长比,MINEXTENTS:指定允许为表中的数据所分配的最小盘区数目,MAXEXTENTS:指定允许为表中的数据所分配的最大盘区数目 (缺省为unlimited),),CREATE TABLE Users,(UserIdNumber Primary Key,UserName Varchar2(40) NOT NULL,UserType Number(1),UserPwd Varchar2(40),),storage,( INITIAL 50K,NEXT 100K,MINEXTENTS 2,MAXEXTENTS 10,PCTINCREASE 10 );,.设置数据子块,PCTFREE:设置数据块中空闲空间的使用方法。,控制数据块的更新预留的空间。,例:30,表示每个数据块的30%作为可利用的空闲空间,用于更新以在数据块内的数据行,其余70%用于插入新的数据行。默认为10。,PCTUSED:设置数据块是否空闲的界限。,例:40,表示当数据块的使用空间大于或等于40%,该数据块被标识为不可用。,CREATE TABLE Users,(UserIdNumber Primary Key,UserName Varchar2(40) NOT NULL,UserType Number(1),UserPwd Varchar2(40),),storage,( INITIAL 50K,NEXT 100K,MINEXTENTS 2,MAXEXTENTS 10,PCTINCREASE 10 ),PCTFREE 15,PCTUSED 70;,查询表的结构,Describe tablename,例:describe users,查询users表的结构,修改表,ALTER TABLE语句修改表,(1)添加列。,【例】在表Users中添加一个列tmpcol:,SQL ALTER TABLE Users,ADD (tmpcol NUMBER(5,2);,(2)修改列名。,【例】将表Users中tmpcol列的名称修改为tmpcol_1:,SQL ALTER TABLE Users,RENAME COLUMN tmpcol TO tmpcol_1;,修改表,(3)删除列。,【例】将表Users中的列tmpcol_1删除:,SQL ALTER TABLE Users,DROP COLUMN tmpcol_1;,(4)将列设置为不可用,【例】将表Users中的列tmpcol_1设置为不可用:,SQL ALTER TABLE Users,SET UNUSED (tmpcol_1);,(5)删除不可用的列,【例】删除表Users中所有的不可用列:,SQL ALTER TABLE Users,DROP UNUSED COLUMNS;,修改列的定义,格式:,alter table ,modify,( 数据类型 约束条件,);,例:向users表增加一列,地址address,alter table users,add( address char(30);,更改该列的宽度,alter table users,modify,(address char(50);,复制表结构,只复制表的结构,不需要原表中的数据。,create table users2 as select * from users where 1=2;,复制部分表,create table users3 as select,UserId, UserName from users ;,删除表,DROP TABLE语句删除表。,【例】删除表Users:,DROP TABLE Users;,数据完整性,1.定义primary key(主键)约束,CREATE TABLE Users,(UserIdNumber,Primary Key,UserName Varchar2(40) NOT NULL,UserType Number(1),UserPwd Varchar2(40),),;,CREATE TABLE Users,(UserId Number constraint PK_ID,Primary Key,UserName Varchar2(40) NOT NULL,UserType Number(1),UserPwd Varchar2(40),),;,这里PK_ID为主键约束名。,CREATE TABLE Users,(UserId Number ,UserName Varchar2(40) NOT NULL,UserType Number(1),UserPwd Varchar2(40),constraint PK_ID primary key(userid , username),),;,将多个列设为主键约束。,.删除主键约束,alter table users drop constraint PK_ID;,2.定义NOT NULL约束,CREATE TABLE Users,(UserId Number constraint PK_ID,Primary Key,UserName Varchar2(40) constraint EMP_NAME NOT NULL,UserType Number(1),UserPwd Varchar2(40),),;,这里,EMP_NAME,为约束名。,3.定义unique约束,列值的唯一性约束,CREATE TABLE Users,(UserIdNumber,Primary Key,UserName Varchar2(40) NOT NULL,UserType Number(1),UserPwd Varchar2(40),Phone varchar2(12) constraint EMP_phone unique,),;,4.定义CHECK约束,create table employee,( ID number(5) primary key,name varchar2(10) not null,age number(3) CHECK(age20),address varchar2(30),);,5.定义FOREIGN KEY约束,Create table department,(DID number(5) primary key,Dname varchar2(20) not null,);,Create table employee,(EID number(5) primary key,Ename varchar2(10) not null,address varchar2(30),DID number(5),constraint EMP_DID foreign key(DID),references department(DID),on delete cascade,);,利用EM完成数据表的维护,可以利用EM完成数据表的创建、修改、删除。,创建表,表管理器,点击,这里保存,输入,列定义,这里,管理页面,点击,这里,创建表,表管理页面,与登录用户同名的方案,点击这里选择方案,创建表,选择方案,搜索,方案,点击这里,确定选择,方案,列表,这里,创建表,选择表组织,修改表,查看和编辑表Users中的数据,点击,这里保存,不能,修改,所属,方案,删除表,删除选项窗口,点击,这里删除,插入数据,INSERT语句的基本使用方法如下所示:,INSERT INTO (列名1, 列名2, , 列名n),VALUES (值1, 值2, , 值n);,【例】向表Users中插入数据,INSERT INTO Users (UserId, UserName, UserType, UserPwd) VALUES ( 1, Admin, 1, Admin);,INSERT INTO Users (UserId, UserName, UserType, UserPwd) VALUES ( 2, Lee, 1, Lee);,INSERT INTO Users (UserId, UserName, UserType, UserPwd) VALUES ( 3, User, 2, Users);,INSERT INTO Users (UserId, UserName, UserType, UserPwd) VALUES ( 4, Zxh, 2, Zxh);,COMMIT;,/将数据提交给数据库完成数据插入,SELECT * FROM Users;,插入数据,运行结果,USERID USERNAMEUSERTYPE USERPWD,- - -,1 Admin1 Admin,2 Lee1Lee,3 User2 Users,4 Zxh2 Zxh,.使用select语句插入数据,insert into users2 select * from users;,insert into users2(,UserId , Username,) select,UserId , Username,from users;,修改数据,UPDATE语句的基本使用方法如下所示:,UPDATE SET 列名1 = 值1, 列名2 = 值2, , 列名n = 值n,WHERE ,【例】将用户Admin的密码修改为111111:,UPDATE Users SET UserPwd=111111 WHERE UserName=Admin;,COMMIT ; /提交操作到数据库中修改,SELECT UserName, UserPwd FROM Users;,运行结果为:,USERNAME USERPWD,-,Admin111111,LeelEE,UserUsers,ZxhZxh,删除数据,DELETE命令删除表中的数据:,DELETE WHERE ,【例】删除表Users中列UserName等于空()的数据:,DELETE FROM Users WHERE UserName = ;,COMMIT;,truncate table语句,删除表中所有数据,例:,truncate table ,truncate table users;,删除表,数据查询,SELECT语句的基本应用,SELECT语句的基本语法结构如下:,SELECT子句, INTO 子句 ,FROM 子句, WHERE 子句 , GROUP BY 子句, HAVING 子句 , ORDER BY 子句 ,SELECT语句的基本应用,SELECT语句中各子句的说明,SELECT子句,描述,SELECT子句,指定由查询返回的列,INTO 子句,创建新表并将结果行插入新表中,FROM 子句,指定从其中检索行的表,WHERE 子句,指定查询条件,GROUP BY 子句,指定查询结果的分组条件,HAVING 子句,指定组或聚合的搜索条件,ORDER BY 子句,指定结果集的排序,UNION运算符,将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行,COMPUTE子句,生成合计作为附加的汇总列出现在结果集的最后。当与BY一起使用时,COMPUTE子句在结果集内生成控制中断和分类汇总。可在同一查询内指定COMPUTE BY和COMPUTE,FOR子句,FOR子句用于指定BROWSE或XML选项,OPTION子句,应在整个查询中使用指定的查询提示。每个查询提示只能指定一次,但允许指定多个查询提示。用该语句只可能指定一个OPTION子句。查询提示影响语句中的所有运算符。如果主查询中涉及UNION,则只有涉及UNION运算符的最后一个查询可以有OPTION子句。,SELECT语句的基本应用,简单SELECT语句的执行结果,SELECT语句,查询结果,SELECT语句的基本应用,在SELECT语句中查询指定的列名,定义显示标题,在SELECT语句中设置列标题,设置查询条件,查询用户Admin,设置查询条件,使用LIKE关键字实现模糊查询,oracle支持的通配符有%和_两种。,%表示0或多个字符,_表示1个字符,【例】从表Users中查询用户名为A开头的数据:,SELECT UserName AS 用户名, UserPwd AS 密码 FROM Users WHERE UserName like A%;,对查询结果排序,ORDER BY子句对指定结果集的排序,【例】在查询用户信息时,按照用户名排序:,SELECT UserName AS 用户名, UserPwd AS 密码 FROM Users ORDER BY UserName,使用统计函数,统计函数,统计函数,描述,COUNT,统计记录的数量,AVG,统计列的平均值,SUM,统计列值之和,MAX,统计列的最大值,MIN,统计列的最小值,使用统计函数,【例】查询表Users中的员工总数:,SELECT COUNT(*) FROM Users,连接查询,简单的连接查询,SELECT FROM ,INNER JOIN ,ON ,序列管理,.什么是序列,序列是一个oracle整数,最多可有38个数字。序列的作用是由系统自动生成整形数值,作为表中标识列的值。当插入一条新纪录时,此类型的列的值自动加1.,利用序列主要实现自动产生的主键值。,创建序列,CREATE SEQUENCE语句创建序列。,【例】创建序列USER_S:,CREATE SEQUENCE USER_S1,start with 1 序列初始值,默认为MINVALUE 的值,MINVALUE 1 序列最小值,NOMAXVALUE 序列最大值(无最大值),INCREMENT BY 1 序列增长,NOCYCLE 序列是否循环产生,CACHE 20; 在缓冲中预分配20个序列值,创建序列,序列管理页面,搜索序列,创建序列,序列基本,信息,创建序列,创建序列页面,修改序列,编辑序列,删除序列,确认删除页面,DROP SEQUENCE语句也可以删除序列。,【例】删除序列USER_S:,DROP SEQUENCE USERMAN.USER_S;,序列的使用,得到序列的新值:,USER_S.NEXTVAL,例如,设置一条SQL语句,作用是向表USERS中插入一个新的记录:,INSERT INTO USERS (USER_ID, USER_NAME) values(USER_S.NEXTVAL , test);,.获取当前的序列值,USER_S.currval,例如,设置一条SQL语句,作用是向表USERS中插入一个新的记录,INSERT INTO USERS (USER_ID, USER_NAME) VALUES(USER_S.currval , test);,.查看当前的序列值:,select USER_S1.currval from dual;,.修改序列参数,创建序列之后可以修改以调整参数。,ALTER SEQUENCE USER_S,increment by 10,maxvalue 2000,cycle,nocache;,要改变序列的起始值start,需要先删除序列,在重新创建。,drop sequence USER_S;,查询序列,序列定义在USER_SEQUENCE数据字典中,可以通过数据字典查询序列结构。,desc user_sequences;,select * from user_sequences;,序列生成器与任何一个表都是无关的,一旦创建,每个表都可以引用,每引用一次,序列值就会改变一次,对于多用户对同一个表的插入操作非常有效,每个用户引用的序号不同,不会插入相同的行。,同义词,同义词是表、索引、视图、序列、存储过程、包等模式对象的别名。,创建同义词的语法为:,create public synonym 同义词 for 对象,public:公共同义词,所有用户都可以使用。默认是private同义词,只能为某一个用户使用。,同义词:为对象起的别名。可以用别名来代替对象名。,对象:表、视图、索引、序列、过程、存储函数、存储包等。,(1)创建私有同义词,为USERS表创建同义词user,create synonym usertest1 for users;,如果指定为其他用户的对象,如:sss,创建如下:,create synonym usertest for sss.users;,.,创建公共同义词,create public synonym usertest for users;,同义词的使用,当定义了同义词后,就可以使用同义词代替基表的引用。,insert into usertest values(5,uuuu,3,aaaa,dfdsfs);,select * from usertest;,当基表的名字改变后,只需要修改同义词的定义。,查看同义词的定义,在数据字典DBA_SYNONYMS中可以查看同义词的信息。,desc dba_synonyms;,select * from dba_synonyms where owner=KKK;,同义词的删除,格式:,drop public synonym 同义词,drop synonym usertest;,drop sysnonym sss.usertest,删除某一个用户的同义词。,.索引,索引是关于纪录的位置信息的关键字表。在查询中如果有索引,则会先使用索引。将加快查询的速度。,索引管理,索引的概念,UserName索引的存储和工作情况,创建索引,.CREATE INDEX语句创建索引。,create unique index 索引名,on table 表名(列名1,列名2,),其中unique是创建唯一索引的参数。,(1)创建主键索引:PRIMARY KEY关键词指定主键列 。,(2)创建惟一索引:UNIQUE关键词指定惟一索引。,(3)创建非唯一索引,(1)创建主键索引,主键是表中一列或一组列,它们的值可以唯一地标识表中的每一行,在创建和修改表时,可以定义主键索引。主键列的值不允许为空。,create table teachers,( tid number primary key ,name varchar2(10) ,age number(3),address varchar2(100),);,(2)创建唯一索引,create unique index index_username on users(username) tablespace users;,tablespace users:用户可以指定索引存储的表空间,如果未指定会在用户的默认表空间中创建一个索引段。,(3)创建非唯一索引,create index index_username on users(username);,.定义组合列的索引,create unique index index_username on users(userid , username) ;,修改索引,ALTER INDEX语句可以修改索引。,【例】设置索引index_username不可用:,ALTER INDEX index_username UNUSABLE,ALTER INDEX中使用REBUILD关键词可重新使用索引index_username :,ALTER INDEX index_username REBUILD,RENAME TO子句可以重命名索引。,【例】将索引名index_username重命名为index_username_1:,ALTER INDEX index_username RENAME TO index_username_1,索引的删除,Drop index index_username ;,索引管理页面,索引管理页面,创建索引,创建索引页面,1输入索引名称,选择方案和表空间,3置入列,4设置排序和顺序,2选择表,创建索引,索引选项页面,保存,选择索引类型,选择执行选项,删除索引,DROP INDEX语句删除指定索引。,【例】删除索引index_username:,DROP INDEX index_username;,单击此按钮,确认删除索引,视图管理,视图的基本概念,视图管理页面,创建视图,修改视图,删除视图,.视图概念,视图是以不同的角度观察表中的数据。用视图观察表,基表没有变化,变化的是视图的设计。,利用视图可以将表中用户访问的某些行和某些列创建视图,提供给用户,而不需要直接将基表提供给用户。,视图特点,着重于特定数据,简化数据操作,自定义数据,组合分区数据,创建视图,CREATE VIEW语句创建视图:,CREATE VIEW ,AS,SELECT语句;,创建四个数据表,Create table student,( sid number(10) primary key,sname varchar2(10),gender char(1),age number,);,Create table course,( cid number(10) primary key,cname varchar2(20),tid number(10),);,Create table courseresult,( cid number(10) ,score number(5,1),sid number(10),);,Create table teacher,( tid number(10) primary key,tname varchar2(10) not null ,gender char(1),age number,birthplace varchar2(200),);,.增加安全性的视图创建,创建查询dennis成绩的视图,create view dennis_view1 as,select ame,cr.score,from courseresult cr,course co,student st,where cr.cid=co.cid and cr.sid=st.sid and st.sname=dennis;,Select * from dennis_view1;,查询结果为姓名为dennis的学生的选课名和成绩,其他人的信息没有显示,保护了别人的隐私。,.为用户编辑数据创建视图,Create view student_part1 as,select * from student,where sid between 1000 and 1100;,对数据表中的数据实现了部分提取,还可以进行编辑操作。,update student_part1 set age=23 where sid=1000;,commit;,.隐藏数据的复杂性,所使用的sql语句很复杂,所查看的结果可能要多次用到,可以创建视图来隐藏数据的复杂性。,.将查询结果做成视图,select st.sid,st.sname,cr.score from courseresult cr,course co,student st,where cr.cid=co.cid and cr.sid=st.sid and ame=操作系统;,Select * from os_result;,.简化字段的书写,create view ts as select tid,tname tn,gender,age,birthplace bp from teacher;,select * from ts;,insert into ts(tid,tn) values(1000,王强);,commit;,.利用视图完成表的数据插入、修改、删除操作,create view teacher_view as select tid,tname,gender,age from teacher;,insert into teacher_view values(102, 王刚, m,28);,update teacher_view set tname=邓云 , age=30,where tname=王刚;,Delete from teacher_view where tid=120;,Commit;,.create or replace view teacher_part2 as,select tid,tname,decode(sign(36-age),1, yes,-1, no) as young teacher? from teacher;,delete from teacher_part2 where young teacher? =no;,commit;,将年龄高于36岁的青年教师从表中删除。,修改视图,在CREATE VIEW语句中增加OR REPLACE子句,修改视图的定义。,create or replace view teacher_view as select,删除视图,DROP VIEW语句删除指定视图。,【例】删除视图HR.V_EMP:,DROP VIEW HR.V_EMP;,视图管理页面,视图管理页面,视图基本信息,搜索视图,创建视图,“创建视图向导”窗口,单击此图标,,可以选择方案,输入SQL语句,选中此复选框,,如果覆盖同名视图,单击“确定”按钮保存,修改视图,编辑视图页面,单击“确定”按钮保存,修改SQL语句,单击此按钮,确认删除索引,.删除视图,创建4个表:如下: 教师表teachers,注意:如果设为char(1),则性别只能放1个英文字母。设为nchar(1)可以放一个汉字。,又如:nvarchar2(200) 表示200个汉字或200个英文,varchar2(400) 表示200个汉字或400个英文字母,number字段为空时,做算术运算为null。,学生表(students),课程表(courses),属性名称,类型,约束情况,说明,cid,number,非空,主键,课程ID编号,cname,varchar2(100),非空,课程名称,tid,number,非空,外键,教师ID编号,credits,number,非空,学分,课程成绩表(courseresults),属性名称,类型,约束情况,说明,cid,number,非空,外键,课程ID编号,sid,number,非空,外键,学生id编号,score,float,非空,成绩,查看表信息,1.查看表基本信息,数据表信息记录在DBA_TABLES和USER_TABLES 数据字典中。可以通过数据字典查看表的基本信息。,DBA_TABLES获取整个数据库中用户表的信息。,USER_TABLES获取当前登录用户的表的信息。,ALL_tables与DBA_TABLES相同。,2.分析表的存储空间,分析表的初始分配和实际占用情况信息。,(1)验证表的存储结构,分析表中数据块是否有逻辑块损坏,如果有损坏的块则重新建表。,系统会将损坏的块的记录的ROWID添加到invalid_rows表中。,先建invalid_rows表D:oracleproduct10.2.0db_1RDBMSADMINutlvalid.sql;,Analyze table teacher validate structure,cascade,;,(2)查看表的统计信息,收集关于表的物理存储结构和特征的统计信息,主要有:,NUM_ROWS:表中记录的总数和链接记录的总数,链接记录:如果一个数据块无法完全容纳一条完整的记录,系统将把一条记录分割成多个片段,并将这些片段分别存储在多个数据块中,这种记录为“链接记录”。,BLOCKS:表所占的数据块总数。,EMPTY_BLOCKS:表中未使用的数据块总数,AVG_SPACE:数据块中平均的空闲空间,analyze table teacher compute statistics;,全扫描,analyze table teacher estimate statistics sample 50 rows;,扫描50条记录,analyze table teacher estimate statistics sample 20 percent;,(3)查找表中链接记录和迁移记录,迁移记录:一条记录存储在一个数据块中,由于存储空间不足将被移动到另一个数据块中。,将链接记录和迁移记录的ROWID记录在chained_rows表中。,先创建chained_rows表:,D:oracleproduct10.2.0db_1RDBMSADMINutlchain.sql;,analyze table teacher list chained rows into chained_rows;,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!