资源描述
Click to edit Master title style,First Level,Second Level,Third Level,Fourth Level,Fifth Level,9-,#,Copyright Oracle Corporation,2001.All rights reserved.,创建和管理表,目标,通过本,章,章学习,,,,您将,可,可以:,描述主,要,要的数,据,据库对,象,象。,创建表,。,。,描述各,种,种数据,类,类型。,修改表,的,的定义,。,。,删除,,重,重命名,和,和清空,表,表。,常见的,数,数据库,对,对象,对象,描,描述,表,基,基本,的,的数据,存,存储集,合,合,由,行,行和列,组,组成。,视图,从,从表中,抽,抽出的,逻,逻辑上,相,相关的,数,数据集,合,合。,序列,提,提供,有,有规律,的,的数值,。,。,索引,提,提高查,询,询的效,率,率,同义词,给,给,对,对象起,别,别名,命名规,则,则,表名和,列,列名:,必须以,字,字母开,头,头,必须在130个字符,之,之间,必须只,能,能包含AZ,a,z,09,_,_,$,$,和#,必须不,能,能和用,户,户定义,的,的其他,对,对象重,名,名,必须,不,不能是Oracle的保留,字,字,CREATETABLE语句,必须具,备,备:,CREATETABLE权限,存储空,间,间,必须指,定,定:,表名,列名,数据类,型,型,尺寸,CREATETABLE,schema.table,(columndatatypeDEFAULTexpr,.,.,.,.),;,;,引用其,他,他用户,的,的表,其他用,户,户定义,的,的表不,在,在当前,用,用户的,方,方案中,应该使,用,用用户,名,名座位,前,前缀,,引,引用其,他,他用户,定,定义的,对,对象,DEFAULT选项,插入时,为,为一个,列,列指定,默,默认值,字符串,表达式,或SQL函数都,是,是合法,的,的,其它列,的,的列名,和,和伪列,是,是非法,的,的,默认值,必,必须满,足,足列的,数,数据类,型,型定义,.hire_date DATEDEFAULTSYSDATE,.,.,语法,确认,创建表,CREATE TABLE dept(deptno NUMBER(2),dname VARCHAR2(14),loc VARCHAR2(13);,Table created.,DESCRIBEdept,Oracle数据库,中,中的表,用户定,义,义的表:,用户自,己,己创建,并,并维护,的,的一组,表,表,包含了,用,用户所,需,需的信,息,息,数据字,典,典:,由OracleServer自动创,建,建的一,组,组表,包含数,据,据库信,息,息,SELECTtable,_,_name,FROMuser_tables,;,;,SELECT,*,*,FROMuser_catalog;,查询数,据,据字典,查看用,户,户定义,的,的各种,数,数据库,对,对象,查看用,户,户定义,的,的表,视图,同义词,和,和序列,SELECTDISTINCTobject_type,FROMuser,_,_objects,;,;,查看用,户,户定义,的,的表.,数据类,型,型,数据类,型,型描,述,述,VARCHAR2(size)可变长,字,字符数,据,据,CHAR(size)定长字,符,符数据,NUMBER,(,(p,s)可变长,数,数值数,据,据,DATE日期型,数,数据,LONG可变长,字,字符数,据,据,最,大,大可达,到,到2G,CLOB字符数,据,据,最,大,大可达,到,到4G,RAWand LONGRAW裸二进,制,制数据,BLOB二进制,数,数据,,最,最大可,达,达到4G,BFILE存储外,部,部文件,的,的二进制,数,数据,,最,最大可,达,达到4G,ROWID行地址,日期数,据,据类型,数据类,型,型,描,描,述,述,TIMESTAMP时间撮,INTERVALYEAR TO MONTH若干年,月,月,INTERVALDAYTOSECOND若干天,到,到秒,Oracle9i对日期,的,的改进:,加入了,新,新的日,期,期型数,据,据类型.,有效的,存,存储新,数,数据类,型,型.,提高对,时,时区和,本,本地时,区,区的支,持,持.,日期数,据,据类型,TIMESTAMP数据类,型,型是对DATE数据类,型,型的扩,展,展,按DATE数据类,型,型存放,年,年,月,日,小时,分钟,秒 以,及,及微秒,甚,甚至纳,秒,秒,TIMESTAMP数据类,型,型的一,般,般形式:,TIMESTAMP,(fractional,_,_seconds_precision,),),TIMESTAMPWITHTIMEZONE,TIMESTAMPWITHTIME ZONE是一个,带,带有时,区,区的TIMESTAMP,时区部,分,分按照,小,小时和,分,分钟显,示,示本地,时,时区与UTC的时差,TIMESTAMP,(fractional,_,_seconds_precision,),),WITH TIMEZONE,TIMESTAMPWITHLOCALTIME,TIMESTAMPWITHLOCALTIME ZONE是一种,带,带有本,地,地时区,的,的TIMESTAMP,数据库,按,按照数,据,据库的,本,本地时,区,区存放,数,数据,时区不,显,显示在,数,数据后,面,面,Oracle自动将,数,数据转,换,换为用,户,户所在,的,的时区,TIMESTAMPWITHLOCALTIME ZONE的一般,形,形式,TIMESTAMP,(fractional,_,_seconds_precision,),),WITH LOCAL TIMEZONE,INTERVALYEARTOMONTH数据,INTERVALYEARTOMONTH存放若,干,干年和,若,若干月,的,的一个,时,时间段,。,。,INTERVALYEAR,(,(year_precision,),)TOMONTH,INTERVAL,123-2,YEAR,(,(3)TOMONTH,Indicatesanintervalof123 years,2 months.,INTERVAL,123YEAR(3,),),Indicatesanintervalof123 years 0months.,INTERVAL,300MONTH(3),Indicatesanintervalof300 months.,INTERVAL,123YEAR,Returns an error,because thedefault precisionis2,and,123has 3digits.,INTERVALDAYTOSECOND数据,INTERVALDAYTOSECOND存放若,干,干天到,若,若干秒,的,的一个,时,时间段,INTERVALDAY,(day,_,_precision),TOSECOND,(fractional_seconds,_,_precision),INTERVAL,45:12:10.222DAY TO SECOND(3),Indicates4days,5 hours,12minutes,10seconds,and222 thousandths of asecond.INTERVAL 123,YEAR,(,(3),.,.,INTERVAL,7DAY,Indicates7days.,INTERVAL,180DAY,(,(3),Indicates180 days,.,.,INTERVALDAYTOSECOND数据,INTERVALDAYTOSECOND存放若,干,干天到,若,若干秒,的,的一个,时,时间段,INTERVAL,45:12:10.222DAY TO SECOND(3),Indicates4days,5 hours,12minutes,10seconds,and222 thousandths of asecond.,INTERVAL,45:12DAYTOMINUTE,Indicates4days,5 hours and12minutes.,INTERVAL,400 5,DAY(3)TOHOUR,Indicates400 days5hours.,INTERVAL,11,:,:12,:,:10,.,.2222222HOURTOSECOND,(,(7),indicates11hours,12 minutes,and10.2222222 seconds,.,.,使用子,查,查询创,建,建表,时候用ASsubquery选项,,将,将创建,表,表和插,入,入数据,结,结合起,来,来,指定的,列,列和子,查,查询中,的,的列要,一,一一对,应,应,通过列,名,名和默,认,认值定,义,义列,CREATETABLEtable,(column,column.,),),ASsubquery;,使用子,查,查询创,建,建表举,例,例,DESCRIBEdept80,CREATETABLEdept80,ASSELECTemployee_id,last_name,salary,*,*12ANNSAL,hire_dateFROMemployeesWHEREdepartment,_,_id,=,=80;,Tablecreated.,ALTERTABLE语句,使用ALTERTABLE语句可,以,以:,追加新,的,的列,修改现,有,有的列,为新追,加,加的列,定,定义默,认,认值,删除一,个,个列,ALTERTABLE语句,使用ALTERTABLE语句追,加,加,修改,或,删除列,的,的语法.,ALTERTABLEtable,ADD,(,(columndatatypeDEFAULTexpr,columndatatype.,.,.);,ALTERTABLEtable,MODIFY,(,(columndatatypeDEFAULTexpr,columndatatype.,.,.);,ALTERTABLEtable,DROP,(,(column);,追加一,个,个新列,DEPT80,追加一,个,个新列,DEPT80,新列,追加一,个,个新列,使用ADD子句追,加,加一个,新,新列,新列是,表,表中的,最,最后一,列,列,ALTERTABLEdept80,ADD,(,(job,_,_idVARCHAR2,(,(9),),);,Tablealtered.,修改一,个,个列,可以修,改,改列的,数,数据类,型,型,尺寸,和默认,值,值,对默认,值,值的修,改,改只影,响,响今后,对,对表的,修,修改,ALTER TABLEdept80,MODIFY(last_name VARCHAR2(30);,Table altered.,删除一,个,个列,使用DROP COLUMN子句删,除,除不再,需,需要的,列,列.,ALTER TABLE dept80,DROP COLUMN job_id;,Table altered.,ALTERTABLEtable,SETUNUSED,(,(column);,ALTERTABLEtable,SETUNUSEDCOLUMNcolumn,;,;,SETUNUSED选项,使用SETUNUSED使一个,或,或多个,列,列被标,记,记为不,可,可用,使用DROP UNUSEDCOLUMNS选项删,除,除不可,用,用的列,OR,ALTERTABLEtable,DROPUNUSEDCOLUMNS;,删除表,数据和,结,结构都,被,被删除,所有正,在,在运行,的,的相关,事,事物被,提,提交,所有相,关,关索引,被,被删除,DROP TABLE语句不,能,能回滚,DROP TABLE dept80;,Tabledropped.,改变对,象,象的名,称,称,执行RENAME语句改变表,视图,序列,或同义,词,词的名,称,称,必须是,对,对象的,拥,拥有者,RENAMEde
展开阅读全文