您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle知识整理
1.SQL语言分类种类缩写全称常用操作数据定义语言DDLDatadefinelanguagecreate,alter,drop数据操纵语言DMLDataManipulationLanguageselect,insert,delete,update事务控制语言TCLTransactionControlLanguagecommit,savapoint,rollback数据控制语言DCLDataControlLanguagegrant,revoke2.SQL常用数据类型分类关键字表示范围备注字符char1~2000字节固定长度varchar21~4000字节可自增长长度long2GB可自增长长度数值number定义方式number(P,[S])P:长度S:精度日期date日期和时间部分,精确到整个的秒timestamp存储日期、时间和时区信息,秒值精确到小数点后6位RAWraw1~2000字节存储二进制数据longraw2GB存储二进制数据LOBclob4GB能够存储大量字符数据blob4GB可以存储较大的二进制对象,如图形、视频剪辑和声音文件bfile4GB用于将二进制数据存储在数据库外部的操作系统文件中3.Oracle中的伪列Oracle中伪列就像一个表列,但是它并没有存储在表中伪列可以从表中查询,但不能插入、更新和删除它们的值常用的伪列有ROWID和ROWNUM3.1.ROWIDROWID是表中行的存储地址,该地址可以唯一地标识数据库中的一行,可以使用ROWID伪列快速地定位表中的一行。3.2.ROWNUMROWNUM是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数。4.命名规则Oracle中的各种数据对象,包括表名称,视图等等名称的命名都需要遵循Oracle的命名规则。Oracle的命名规则分为标准命名方式和非标准命名方式。标准命名方式以字符打头30个字符以内只能包含A-Z,a-z,0-9,_,$和#。不能和同一个用户下的其他对象重名,不能是oracle服务器的保留字。非标准命名方式你可以使用你想使用的任何字符,包括中文,oracle中的保留字,空格等等,但是需要将对象名用双引号引起来。例如:createtable“table”(test1varchar2(10));5.创建表空间CREATETABLESPACEtablespacenameDATAFILE‘filename’[SIZEinteger[K|M]][AUTOEXTEND[OFF|ON]];注:大写字母为关键字,小写部分为用户自定义部分;[]中的内容为可选择部分。例:createtablespacemy_tablespacedatafile‘c:\myspace’size100Kautoextendon;6.Oracle用户操作6.1.创建用户CREATEUSERusernameIDENTIFIEDBYpassword[DEFAULTTABLESPACEtablespace][TEMPORARYTABLESPACEtablespace];例:createuserscottidentifiedbytiger;6.2.密码修改ALTERUSERusernameIDENTIFIEDBYnewpassword6.3.锁定用户ALTERUSERusernameACCOUNTLOCK;6.4.撤销锁定ALTERUSERusernameACCOUNTUNLOCK;6.5.删除用户DROPUSERusername;7.权限管理Oracle权限有两种类型,系统权限和对象权限。系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。7.1.系统权限管理7.1.1.系统权限分类DBA:拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。对于普通用户:授予connect,resource权限。对于DBA管理用户:授予connect,resource,dba权限。7.1.2.系统权限授权系统权限只能由DBA用户授出:sys,system(最开始只能是这两个用户)授权命令:GRANTconnect,resource,dbaTOusername;普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。例:grantconnect,resourcetoscott;7.1.3.系统权限传递增加WITHADMINOPTION选项,则得到的权限可以传递。例:grantconnect,resorcetouser01withadminoption;7.1.4.系统权限回收REVOKEconnect,resourceFROMusername;7.2.实体权限管理7.2.1.实体权限分类select,update,insert,alter,index,delete,all等7.2.2.实体权限授权GRANTselect,update,insertONtablenameTOusername;例:grantallonemptoscott;7.2.3.实体权限传递例:user01:grantselect,updateonproducttouser02withgrantoption;7.2.4.实体权限回收REVOKEselect,updateONtablenameFROMusername;8.角色管理角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。8.1.系统预定义角色预定义角色是在数据库安装后,系统自动创建的一些常用的角色。角色所包含的权限可以用以下语句查询:select*fromrole_sys_privswhererole=’角色名’;CONNECT,RESOURCE,DBA这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。DELETE_CATALOG_ROLE,EXECUTE_CATALOG_ROLE,SELECT_CATALOG_ROLE这些角色主要用于访问数据字典视图和包SNMPAGENT用于oracleenterprisemanager和IntelligentAgentRECOVERY_CATALOG_OWNER用于创建拥有恢复库的用户。关于恢复库的信息,参考oracle文档《Oracle9iUser-ManagedBackupandRecoveryGuide》HS_ADMIN_ROLEADBAusingOracle'sheterogeneousservicesfeatureneedsthisroletoaccessappropriatetablesinthedatadictionary.8.2.管理角色建一个角色createrolerole1;授权给角色grantcreateanytable,createproceduretorole1;授予角色给用户grantrole1touser1;查看角色所包含的权限select*fromrole_sys_privs;scott的权限如图:--查看scott用户具有什么系统权限select*fromrole_sys_privs;--查看scott用户自己拥有什么角色select*fromuser_role_privs;--查看scott用户自己具有什么的权限select*fromSESSION_ROLES;--查scott用户的创建时间、用户状态、使用的默认表空间、临时表空间等信息select*fromuser_users;--查看scott用户中,都哪些用户把对象授予给scott用户select*fromuser_tab_privs;--查看scott用户中拥有的resource角色都具有什么权限select*fromrole_sys_privswhererole='RESOURCE';--scott用户自己拥有多少表select*fromuser_tables;--查看scott用户已经使用多大的空间,允许使用的最大空间是多少selecttablespace_name,bytes,max_bytesfromuser_ts_quotas;--查看哪些表什么权限赋予了其他用户select*fromuser_tab_privs_made--把自己的表赋予给其他用户grantselectonemptomzl;--把表的某一列操作权限赋予给其他用户grantupdate(job)onemptomzl;创建带有口令以角色(在生效带有口令的角色时必须提供口令)createrolerole1identifiedbypassword1;修改角色:是否需要口令alterrolerole1notidentified;alterrolerole1identifiedbypassword1;设置当前用户要生效的角色setrolerole1;//使role1生效setrolerole,role2;//使role1,role2生效setrolerole1identifiedbypassword1;//使用带有口令的role1生效setroleall;//使用该用户的所有角色生效setrolenone;//设置所有角色失效setroleallexceptrole1;//除role1外的该用户的所有其它角色生效select*fromSESSION_ROLES;//查看当前用户的生效的角色修改指定用户,设置其默认角色alteruseruser1defaultrolerole1;alteruseruser1defaultroleallexceptrole1;删除角色droprolerole1;Oracle用户密码过期解决方法原因:由于oracle11g中默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”所导致。解决方案:1、查看用户的proifle是哪个,一般是default:sqlSELECTusername,PROFILEFROMdba_users;2、查看指定概要文件(如default)的密码有效期设置:sqlSELECT*FROMdba_profilessWHEREs.profile='DEFAULT'ANDresource_name='PASSWORD_LIFE_TIME';3、将密码有效期由默认的180天修改成“无限制”:sqlALTERPROFILEDEFAULTLIMITPASSWORD_LIFE_TIMEUNLIMITED;修改之后不需要重启动数据库,会立即生效。9.数据定义语言DDL数据定义语言用于改变数据库结构,包括创建、更改和删除数据库对象。用于操纵表结构的数据定义语言命令有:CREATETABLEALTERTABLETRUNCATETABLEDROPTABLE9.1.利用现有表创建新表语法:CREATETABLEnew_table_nameASSELECTcolumn_namesFROMold_table_name;例如:CREATETABLEnewitemfileASSELECT*FROMitemfile;9.2.创建新表语法:CREATETABLEnew_table_name(Colnamedatatype[defaultXXX][PRIMARYKEY],Colname1datatype[defaultXXX][NOTNULL|NULL]…colnameNdatatype[defaultXXX]);例如:createtablescott.mytable(ui
本文标题:Oracle知识整理
链接地址:https://www.777doc.com/doc-12801 .html