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