ORACLE中創建表空間,創建表,修改表,授權

jopen 9年前發布 | 18K 次閱讀 Oracle 數據庫服務器

創建表空間


/*分為四步 */
/*第1步:創建臨時表空間  */
create temporary tablespace user_temp  
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m   //如果最大值沒有上限,則使用unlimited
extent management local;  //extent 表示區間  設置區間管理方式是本地方式   另外一種方式是dictionary 字典方式  ,extent可以理解為表的擴展方式
 
/*第2步:創建數據表空間  */
create tablespace user_data  
logging    //表示創建日志   nologging  表示不創建日志  
datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local;  
 
/*第3步:創建用戶并指定表空間  */
create user username identified by password  
default tablespace user_data  
temporary tablespace user_temp;  
 
/*第4步:給用戶授予權限  */
grant connect,resource,dba to username;
grant create table to username






1、首先,grant XXX to user;,grant是授權的作用,這里的XXX可以是一個角色role,也可以是權限,例如grant role to user;,或grant insert on table to user;。


MOS中給出的標準SQL語句:


創建角色:


create role <role name> [IDENTIFIED BY <password>/USING <package>/EXTERNALLY/GLOBALLY ];


賦予角色權限:


grant <object/system privilege> to <role name>;


從角色收回權限:


revoke <privilege> from <role name>;


將角色賦予另一個角色或用戶:


grant <role> to <username or role> ;


2、其次,connect和resource是兩個系統內置的角色,和dba是并列的關系。


參考一些帖子的說法,權限可以分為兩類:


系統權限:系統規定用戶使用數據庫的權限。(系統權限是對用戶而言)。 


實體權限:某種權限用戶對其它用戶的表或視圖的存取權限。(是針對表或視圖而言的)。


接下來看系統權限,


DBA:擁有全部特權,是系統最高權限,只有DBA才可以創建數據庫結構。


RESOURCE:擁有Resource權限的用戶只可以創建實體,不可以創建數據庫結構。


CONNECT:擁有Connect權限的用戶只可以登錄Oracle,不可以創建實體,不可以創建數據庫結構。


對于普通用戶:授予connect, resource權限。 


對于DBA管理用戶:授予connect,resource, dba權限。


且系統權限只能由DBA用戶授出:sys, system(最開始只能是這兩個用戶)。普通用戶通過授權可以具有與system相同的用戶權限,


但永遠不能達到與sys用戶相同的權限,system用戶的權限也可以被回收。


另外,對于WITH ADMIN OPTION級聯授權的問題,


1)如果使用WITH ADMIN OPTION為某個用戶授予系統權限,那么對于被這個用戶授予相同權限的所有用戶來說,取消該用戶的


系統權限并不會級聯取消這些用戶的相同權限。 


2)系統權限無級聯,即A授予B權限,B授予C權限,如果A收回B的權限,C的權限不受影響;系統權限可以跨用戶回收,即A可以


直接收回C用戶的權限。



創建表
 oracle中創建表:
create table users(
       id number(9) not null primary key,
       username varchar2(40) not null,
       age int  check(age>18 and age<50)    
)  


create table orders(
   oid varchar2(10) not null ,
   userid number(9) ,
   primary key (oid),
   foreign key(userid) references users(id)
)


刪除表 :drop table orders


修改表名:alter table orders
          rename  to orderss


添加列:  alter table orders
          add price number(9)


修改列的數據類型:alter table orders
                  modify price number(10)


刪除列 :alter table orders
         drop column price


修改列名:alter table orders
          rename  column price to pri


添加外鍵: alter table orders
           add constraint fkuid foreign key(userid) references users(id)


刪除約束:alter table orders
          drop constraint fkuid

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!