模块三:创建和管理数据表主讲:马建霞TEL:15989087795QQ:48189407使用Oracle数据库的开发流程服务器端安装Oracle服务器软件创建数据库(安装时自动创建)配置监听器(安装时自动配置)启动Oracle实例(自动启动服务)安装Oracle客户端软件配置网络服务名以新用户登录Oracle提交SQL查询创建新用户并授权创建用户表空间客户端目标任务:任务一:创建与管理表空间任务二:创建与管理用户任务三:创建数据表任务四:管理数据表任务一:创建与管理表空间表空间(tablespace)是Oracle数据库中最大的逻辑结构,它是数据库的逻辑划分,Oracle数据库就是由一个或多个表空间组成的,一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。所有的数据库对象都存放在指定的表空间中。但主要存放的是表,所以称作表空间,默认情况下系统会自己创建一个System的表空间。数据库表空间1表空间2数据文件1数据文件2段1段2块块块……扩展区1数据库的几个概念与写字楼中的概念的对应关系:写字楼中的概念数据库中的概念概念虚、实概念逻辑、物理大楼实的数据库物理的公司虚的表空间逻辑的占用的房间实的数据文件物理的子任务1-1:创建表空间ORACLE可以创建的表空间大致有三种类型:(1)TEMPORARY:临时表空间,用于临时数据的存放;创建临时表空间的语法如下:CREATETEMPORARYTABLESPACESAMPLE......(2)UNDO:还原表空间.用于存入重做日志文件.创建还原表空间的语法如下:CREATEUNDOTABLESPACESAMPLE......(3)用户表空间:最重要,也是用于存放用户数据的表空间可以直接写成:CREATETABLESPACESAMPLETEMPORARY和UNDO表空间是ORACLE管理的特殊的表空间.只用于存放系统相关数据.子任务1-1:创建表空间(续)利用CREATETABLESPACE命令创建和管理表空间,语法格式:CREATE[UNDO|TEMPORARY]TABLESPACEtablespace_nameDATAFILE|TEMPFILE‘path/filename’[SIZEinteger[K∣M]][REUSE][AUTOEXTEND[OFF∣ON[NEXTinteger[K∣M]][MAXSIZE[UNLIMITED∣integer[K∣M]]]][MINIMUMEXTENTinteger[K|M]][DEFAULTSTORAGEstorage_clause][ONLINE∣OFFLINE][LOGGING∣NOLOGGING][PERMANENT∣TEMPORARY][EXTENTMANAGEMENT[DICTIONARY∣LOCAL[AUTOALLOCATE∣UNIFORM[SIZEinteger[K∣M]]]]];子任务1-1:练习1、创建大小为50M的表空间student,禁止自动扩展数据文件。2、创建一个临时表空间temp,文件的存放路径自定,空间的初始大小为10M,指定允许分配给数据文件的最大磁盘空间为200M。注意:可以用下面的语句查看表空间的信息Select*fromdba_tablespaces;子任务1-1:练习下面两段创建表空间语句:1、CREATETEMPORARYTABLESPACEtemp2TEMPFILE‘F:\oracle\temp01.ORA’SIZE32MREUSEAUTOEXTENDONNEXT640K;2、CREATETABLESPACEdataLOGGINGDATAFILE‘F:\oracle\data.dbf'SIZE50MREUSEAUTOEXTENDONNEXT10MMAXSIZE200MDEFAULTSTORAGE(INITIAL16KNEXT32KMINEXTENTS1);请分别说出两条语名的含义。3、CREATETABLESPACEIMAGEDATALOGGINGDATAFILE'E:ORACLEORADATADATA_01.DBF'SIZE2000MREUSEAUTOEXTENDONNEXT51200KMAXSIZE3900M,'E:ORACLEORADATAXLDATA_02.DBF'SIZE2000MREUSEAUTOEXTENDONNEXT51200KMAXSIZE3900M,'E:ORACLEORADATAXLDATA_03.DBF'SIZE2000MREUSEAUTOEXTENDONNEXT51200KMAXSIZE3900M,'E:ORACLEORADATAXLDATA_04.DBF'SIZE2000MREUSEAUTOEXTENDONNEXT51200KMAXSIZE3900MEXTENTMANAGEMENTLOCALSEGMENTSPACEMANAGEMENTAUTO子任务1-2:修改表空间语法格式:ALTERTABLESPACEtablespace_name[ADDDATAFILE∣TEMPFILE‘path/filename’SIZEinteger[K∣M]][REUSE][AUTOEXTEND[OFF∣ON[NEXTinteger[K∣M]]MAXSIZE[UNLIMITED∣integer[K∣M]]][RENAMEDATAFILE‘path\filename’,…nTOpath\re_filename’,…n][DEFAULTSTORAGEstorage_clause][ONLINE∣OFFLINE[NORMAL∣TEMPORARY∣IMMEDIATE]][LOGGING∣NOLOGGING][READONLY∣WRITE][PERMANENT][TEMPORARY]子任务1-2:修改表空间(续)练习1、增加表空间的容量任务要求:通过ALTERTABLESPACE命令把一个新的数据文件添加到student表空间(文件名为student1,路径自定),并指定AUTOEXTENDON和MAXSIZE300M。注意:尽管可以设置MAXSIZEUNLIMITED,但应总是规定一个文件的最大尺寸值。子任务1-2:修改表空间(续)2、修改原有文件的大小增加表空间的容量任务要求:修改Student表空间,设置每次以2M的大小自动扩展表空间。注意:修改表空间的容量需要用Alterdatabase命令。3、修改表空间的属性任务要求:修改Student表空间的属性,指定其将来的表、索引等不需要进行日志处理。提示:用altertablespace命令可能直接修改表空间的属性。子任务1-2:修改表空间(续)4、修改表空间的名称任务要求:将student表空间的名称改为student_jrg.再改回为Student.语法格式:ALTERTABLESPACEold_nameRENAMETOnew_name5、设置数据库的默认表空间通常情况下,数据库的默认表空间为SYSTEM或USERS表空间。提示:可以用以下的语句查看用户的默认表空间Selectusername,default_tablespacefromdba_users;任务要求:将Student表空间设置为数据库的默认表空间。语法格式:ALTERDATABASEDEFAULTTABLESAPCEtablespace_name子任务1-3:删除表空间1、删除表空间test,但不删除其文件droptablespacetest;2、.删除表空间data同时删除表空间的内容(了解)droptablespacedataincludingcontents;3、删除表空间data及其包含的内容以及数据文件droptablespacedataincludingcontentsanddatafiles;使用OEM创建表空间:以sys用户,sysdba连接身份登录OEM,出现”数据库“页,单击“存储”,点击“表空间”,如下图:使用OEM创建表空间:在客户端的OEM中可以查看表空间信息,如下图:任务二:创建与管理用户Oracle默认用户只有用合法的用户帐号才能访问Oracle数据库Oracle有几个默认的数据库用户Oracle默认用户SYSSYSTEMSCOTT数据库中所有数据字典表和视图都存储在SYS模式中。SYS用户主要用来维护系统信息和管理实例。SYSTEM是默认的系统管理员,该用户拥有Oracle管理工具使用的内部表和视图。通常通过SYSTEM用户管理数据库用户、权限和存储等SCOTT用户是Oracle数据库的一个示范帐户,在数据库安装时创建子任务2-1:创建新用户要连接到Oracle数据库,就需要创建一个用户帐户每个用户都有一个默认表空间和一个临时表空间CREATEUSER命令用于创建新用户,语法格式如下:CREATEUSERusernameIDENTIFIEDBYpasswordORIDENTIFIEDBYEXETERNALLY[DEFAULTTABLESPACEtablespace][TEMPORARYTABLESPACEtemptablespace][QUOTA[integerK[M]][UNLIMITED]]ONtablespace[,QUOTA[integerK[M]][UNLIMITED]]ONtablespace[PROFILESprofile_name][PASSWORDEXPIRE][ACCOUNTLOCKorACCOUNTUNLOCK]子任务2-1:练习1、创建用户byxy,密码为baiyun.2、创建一个以自己的名字命名(用拼英命名,如果有英文名的可用英文名)的用户,密码自定,设置默认表空间为student,临时表空间为temp。请用记事本写出相应的代码,并在SQL*Plus中运行。子任务2-1:练习(续)3、在SQL*Plus中创建一个user1的用户,设置密码为123456,看能否正常运行?4、在SQL*Plus中依次执行如下的语句:createusermyuseridentifiedbywelcomedefaulttablespacestudenttemporarytablespacetemppasswordexpire;创建完成后,以myuser用户身份连接到数据库,会出现什么情况?说明什么?子任务2-2:给用户授予权限权限指的是执行特定命令或访问数据库对象的权利Oracle中存在两种权限系统权限(SYSTEMPRIVILEGE):允许用户在数据库中执行指定的行为,一般可以理解成比较通用的一类权限。对象权限(OBJECTPRIVILEGE):允许用户访问和操作一个指定的对象,该对象是一个确切存储在数据库中的命名对象。系统权限oracle包含100多种系统权限,其主要作用:执行系统端的操作,比如CREATESESSION是登陆的权限,CREATETABLESPACE创建表空间的权限管理某类对象,比如CREATETABLE是用户建表的权限管理任何对象,比如CREATEANYTABLE,ANY关键字表明该权限“权力”比较大,可以管理任何用户下的表,所以一般只有DBA来使用该权限,普通用户是不应该拥有该类权限的。表的系统权限CREATETABLE(建表)CREATEANYTABLE(在任何用户下建表)ALTERANYTABLE(修改任何用户的表的定义)DROPANYTABLE(删除任何用户的表)SELECTANYTABLE(从任何用户的表中查询数据)UPDATEANYTABLE(更改任何用户表的数据)DELETEANYTABLE(删除任何用户的表的记录)。索引及会话系统权限索引:CREATEANYINDEX(在任何用户下创建索引)ALTERANYINDEX(修改任何用户的索引定义)DROPANYINDEX(删除任何用户的索引)会话:(SESSION)CREATESESSION(创建会话,登陆权限)ALTERSESS