Oracle表操作 權(quán)限修改

表示基本的數(shù)據(jù)存儲結(jié)構(gòu)厢蒜,一個表通常由行和列(字段) 組成
創(chuàng)建表可以指定創(chuàng)建到那個表空間上法希, 如果不指定將默認(rèn)創(chuàng)建到用戶的默認(rèn)表空間里
創(chuàng)建表的類型
1. 堆表 : 數(shù)據(jù)安裝組織昌妹,以無序方式放在單獨(dú)的表字段中议忽, 也稱為標(biāo)準(zhǔn)表
2. 索引表 : 數(shù)據(jù)以“B樹” 解耦股恃鞋,存放在主鍵約束所對應(yīng)的的索引字段中
3. 簇表 : 簇由供需數(shù)據(jù)庫的組表組成洞慎, 在某些情況下爪幻。使用簇表可以節(jié)省空間弧圆, 提高SQL的性能
4. 分區(qū)表 : 數(shù)據(jù)被劃分為很小區(qū)間范圍赋兵,并且存儲到響應(yīng)的分區(qū)段中,每個分區(qū)段可以獨(dú)立和操作

數(shù)據(jù)類型

number(p搔预,s): 可##變長度數(shù)字 ## 霹期, p:數(shù)字可用的最大位數(shù)(如果有小數(shù),是小數(shù)點(diǎn)前后之和)s:小數(shù)點(diǎn)的最大位數(shù)拯田,最大精度不能超過38位历造,
number (4,2): 12.34
double , float : 都是number的子類型,38精度的浮點(diǎn)數(shù)
real : number的子類型18位精度的浮點(diǎn)數(shù)
int : integer 船庇,smallint : 38位精度的整數(shù)
long : 可變長的字符數(shù)據(jù)類型:2GB
xml
varchar2(size): 最大長度4000字節(jié)吭产,最小位1字節(jié)
nvarchar2(size) : 可變長字符串,最大長度4000個字節(jié)
char()
nchar()
date : 年月日
timestamp : 年月日時分秒和毫秒
clob : 大字符串對象可以存儲4GB的字符文本
nclob :
Blob : 二進(jìn)制文件

創(chuàng)建表

create table [schema.]table_name(
column_name data_type [defaulte expression] [constraint],
column_name data_type [defaulte expression] [constraint],
column_name data_type [defaulte expression] [constraint],
......

)

schema : 指定表所屬的用戶名
table_name : 創(chuàng)建表的表名
column_name : 列名,一個表每列必須具有唯一性
data_type : 列的數(shù)據(jù)類型
defaulte expression : 列的默認(rèn)值
constraint : 添加約束,表示該列的值必須滿足的規(guī)則

  create table book(
  bookid number(10) not null,
bookname varchar2(40),
author varchar2(40) ,
press varchar2(40) ,
bookprice number(4,2) ,
   presstime date,
 constraint pk_book_id primary key(bookid)
 );

create table book2(
    bookid number(10) not null,
    bookname varchar2(40),
    author varchar2(40) ,
    press varchar2(40) ,
    bookprice number(4,2) ,
   presstime date,
   constraint pk_book_id2 primary key(bookid)
   )tablespace system;

修改表:

增加和刪除列
SQL> alter table book2 add c1 number;

    表已更改鸭轮。
    
    SQL> desc book2;
     名稱                                      是否為空? 類型
     ----------------------------------------- -------- ----------------------------
     BOOKID                                    NOT NULL NUMBER(10)
     BOOKNAME                                           VARCHAR2(40)
     AUTHOR                                             VARCHAR2(40)
     PRESS                                              VARCHAR2(40)
     BOOKPRICE                                          NUMBER(4,2)
     PRESSTIME                                          DATE
     C1                                                 NUMBER

SQL> alter table book2 drop column c1;

    表已更改臣淤。
    
    SQL> desc book2;
     名稱                                      是否為空? 類型
     ----------------------------------------- -------- ----------------------------
     BOOKID                                    NOT NULL NUMBER(10)
     BOOKNAME                                           VARCHAR2(40)
     AUTHOR                                             VARCHAR2(40)
     PRESS                                              VARCHAR2(40)
     BOOKPRICE                                          NUMBER(4,2)
     PRESSTIME                                          DATE

禁用指定的類(我們將不能使用該列,但是當(dāng)前列還占用存儲空間)
SQL> alter table book2 set unused(presstime);

    表已更改。
    刪除標(biāo)記為unused的列,可以將這些列從物理上刪除,收回占用的磁盤空間
    SQL> alter table book2 drop unused column;

    表已更改窃爷。

修改列

SQL> alter table book2 rename column bookprice to price;
表已更改邑蒋。
SQL> desc book2;

              名稱                                      是否為空? 類型
     ----------------------------------------- -------- ----------------------------
     BOOKID                                    NOT NULL NUMBER(10)
     BOOKNAME                                           VARCHAR2(40)
     AUTHOR                                             VARCHAR2(40)
     PRESS                                              VARCHAR2(40)
     PRICE                                              NUMBER(4,2)

SQL> alter table book2 modify price number(6,3);

    表已更改。
    
    SQL> desc book2;
     名稱                                      是否為空? 類型
     ----------------------------------------- -------- ----------------------------
     BOOKID                                    NOT NULL NUMBER(10)
     BOOKNAME                                           VARCHAR2(40)
     AUTHOR                                             VARCHAR2(40)
     PRESS                                              VARCHAR2(40)
     PRICE                                              NUMBER(6,3)


    對表重命名

SQL> alter table book2 rename to book3;

    表已更改按厘。
    
    SQL> select table_name from tabs;
    
    TABLE_NAME
    ------------------------------
    BOOK3
    BOOK
    SALGRADE
    BONUS
    EMP
    DEPT
    
    已選擇6行医吊。

    將表移動到另一個表空間

SQL> select table_name,tablespace_name from user_tables where table_name = 'BOOK4';

    TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------
    BOOK4                          SYSTEM
    
    SQL> alter table book4 move tablespace users;
    
    表已更改。

SQL> select table_name,tablespace_name from user_tables where table_name = 'BOOK4';

    TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ ------------------------------
    BOOK4                          USERS

    刪除表
    drop table 表名;
    刪除表并立即釋放該表所占用的資源空間
    drop table 表名 purge;
    不僅刪除表,還會將引用該表的視圖,約束,索引,觸發(fā)器等.全部一并刪除
    drop table 表名 cascade constraints  

完整性約束

數(shù)據(jù)庫中的數(shù)據(jù)正確性和相容性,用來防止想數(shù)據(jù)庫中添加不合語義的數(shù)據(jù).
表級別約束 : 定義在一個表中,可用于表中多列
列級別約束 : 對表中的一列進(jìn)行約束,只能應(yīng)用一列

約束的用途分類:

  1. primary key (主鍵約束)
    主鍵是由一列或多列組成,唯一標(biāo)識
    在一個表中,只能定義一個主鍵約束
    不能重復(fù),并且不能包含null.
  2. foreign key (外檢約束)
    外鍵引用另一個表中的一列,取值范圍只能是引用中以存在的值
    在使用外鍵約束的時候,被引用的列應(yīng)該具有主鍵約束,或者具有唯一性約束.
  3. unique (唯一約束)
    只能存儲唯一的值,可以存儲null
    oralce將會自動為unique的列創(chuàng)建一個唯一索引
    可以在同一個列上建立not null和unique約束(主鍵約束)
  4. not null (非空約束)
    指定一列不允許存儲空值,這就是一種強(qiáng)制的檢查約束
  5. check (檢查約束)
    指定一列的值必須滿足某種條件
    在check約束的表達(dá)式中,必須引用表中的一個或多個列,并且表達(dá)式的運(yùn)算結(jié)構(gòu)是一個布爾值.
    一個列中可以定義多個檢查約束
    檢查約束可以定義在表和列上.

SQL> alter table book4 modify bookname not null;

表已更改逮京。

SQL> desc book4;
 名稱                                      是否為空? 類型
 ----------------------------------------- -------- ----------------------------
 BOOKID                                    NOT NULL NUMBER(10)
 BOOKNAME                                  NOT NULL VARCHAR2(40)
 AUTHOR                                             VARCHAR2(40)
 PRESS                                              VARCHAR2(40)
 BOOKPRICE                                          NUMBER(4,2)
 PRESSTIME                                          DATE

SQL> alter table book4 modify bookname null;

表已更改卿堂。

SQL> desc book4;
 名稱                                      是否為空? 類型
 ----------------------------------------- -------- ----------------------------
 BOOKID                                    NOT NULL NUMBER(10)
 BOOKNAME                                           VARCHAR2(40)
 AUTHOR                                             VARCHAR2(40)
 PRESS                                              VARCHAR2(40)
 BOOKPRICE                                          NUMBER(4,2)
 PRESSTIME                                          DATE

添加主鍵:

create table table_name(
    id number(10) primary key,
    
        ... 
    
)
為已經(jīng)創(chuàng)建的表添加主鍵約束
    alter table table_name add constraint pk_... primary key(列名)

    alter table table_name add primary key(列名)

刪除約束:

    alter table table_name drop constraint 約束的名稱;

檢查約束

create table book(
    age number(3) constraint ck_age check (age>0)
)

SQL> alter table book4 add constraint ck_book4_price check(bookprice>10);

表已更改。

創(chuàng)建外鍵:

-- Create the table in the specified schema
CREATE TABLE classes
(
    classid number(10) NOT NULL PRIMARY KEY, -- primary key column
    cname NVARCHAR2(50) NOT NULL,
    stunum NVARCHAR2(50) NOT NULL
    -- specify more columns here
);
CREATE TABLE student(
    sid number(4),
    sname varchar2(30),
    classid number(10) references classes(classid)
);

為已有表添加外鍵:

    alter table student add constraint fk_student_cid foreign key(classid) references classes(classid)

引用類型:

    cascade 

如果定義外鍵約束時使用cascade關(guān)鍵字,那么當(dāng)父表中被引用列刪除時,子表中對應(yīng)的數(shù)據(jù)將同時被刪除.

    set null

當(dāng)刪除父表中引用列數(shù)據(jù)的時候,子表中的數(shù)據(jù)列將被設(shè)置成null

            no action

當(dāng)刪除父表中數(shù)據(jù)會被提示違反外鍵約束.

創(chuàng)建用戶必須擁有create user 系統(tǒng)權(quán)限

修改: alter user 用戶名 identified by 密碼 
授予用戶登錄權(quán)限
    grant create session to user1
修改默認(rèn)表空間
    alter user  user1 default tablespace 表空間名稱
讓密碼失效
    alter user 用戶名 password expire;
鎖定用戶
    alter user 用戶名 account lock懒棉;

解鎖

alter user 用戶名 account unlock;
刪除用戶
drop user 用戶名 [cascade]
登錄用戶
connect 用戶名/密碼

權(quán)限

權(quán)限是數(shù)據(jù)庫中執(zhí)行某種操作的能力.創(chuàng)建一個用戶,表示該用戶具有了連接和操作
數(shù)據(jù)庫的資格.但是要對數(shù)據(jù)庫進(jìn)行實(shí)際操作,則需要為用戶賦予相應(yīng)的操作權(quán)限.

系統(tǒng)權(quán)限

系統(tǒng)級控制數(shù)據(jù)庫的存取和使用,是否可以連接到數(shù)據(jù)庫.
創(chuàng)建會話,創(chuàng)建表,創(chuàng)建視圖,創(chuàng)建用戶等.

系統(tǒng)權(quán)限分類:

包含 any 關(guān)鍵字的系統(tǒng)權(quán)限 , 可以在任何Oracle模式(用戶)下進(jìn)行相應(yīng)的操作
不包含 any 關(guān)鍵字的系統(tǒng)權(quán)限, 只能在自身用戶模式中進(jìn)行相應(yīng)的操作.

    select any ->可以查詢?nèi)魏斡脩粝旅娴谋?    select -> 只能查詢自身用戶下面的表


    create table
    create session 
    manage tablespace
    create/alter/drop user
    create view;

對象權(quán)限
模式對象控制存取和使用的機(jī)制
對表,視圖,存儲過程和函數(shù)等操作的權(quán)限

    insert,select,update,delete,alter,index

賦權(quán) :

    grant 權(quán)限名稱 to 用戶名

    grant create session to user1;
    grant create session to user1 with admin option;
    with admin option : 該用戶擁有賦予其他用戶賦予此權(quán)限的能力

權(quán)限回收:

    revoke create table,create view from user1;

角色 :
角色是一組權(quán)限的集合.可以向用戶授予角色的所有權(quán)限,也可以收回角色權(quán)限.
可以使用預(yù)定義角色,也可以自定義角色.

SQL> select role,password_required from dba_roles;

    ROLE                           PASSWORD
    ------------------------------ --------
    CONNECT                        NO
    RESOURCE                       NO
    DBA                            NO
    SELECT_CATALOG_ROLE            NO

CONNECT : 用戶典型權(quán)限

alter session,create cluster,create database,create sequence,create synonym,create view等...
RESOURCE : 開發(fā)者權(quán)限
create table,操作表空間....
DBA : 管理員權(quán)限
select any table,create type,createt table....

SELECT_CATALOG_ROLE : 具有查詢數(shù)據(jù)字典的權(quán)限,并執(zhí)行部分存儲過程和函數(shù)的權(quán)限

創(chuàng)建角色:

    create role role_name
    not identified | identified by password;

修改默認(rèn)角色

    alter user 用戶名 default role 角色名稱,角色名.....

刪除角色

    drop role 角色名稱; 

    dba_roles : 數(shù)據(jù)庫中的所有角色
    dba_role_privs : 授予用戶和角色的角色.

查詢當(dāng)前會話包含的所有角色
SQL> select * from session_roles;

    ROLE
    ------------------------------
    CONNECT
    RESOURCE

創(chuàng)建用戶,授權(quán).
權(quán)限/角色

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末草描,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子策严,更是在濱河造成了極大的恐慌穗慕,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件享钞,死亡現(xiàn)場離奇詭異揍诽,居然都是意外死亡诀蓉,警方通過查閱死者的電腦和手機(jī)栗竖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渠啤,“玉大人狐肢,你說我怎么就攤上這事×げ埽” “怎么了份名?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵碟联,是天一觀的道長。 經(jīng)常有香客問我僵腺,道長鲤孵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任辰如,我火速辦了婚禮普监,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘琉兜。我一直安慰自己凯正,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布豌蟋。 她就那樣靜靜地躺著廊散,像睡著了一般。 火紅的嫁衣襯著肌膚如雪梧疲。 梳的紋絲不亂的頭發(fā)上允睹,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機(jī)與錄音往声,去河邊找鬼擂找。 笑死,一個胖子當(dāng)著我的面吹牛浩销,可吹牛的內(nèi)容都是我干的贯涎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼慢洋,長吁一口氣:“原來是場噩夢啊……” “哼塘雳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起普筹,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤败明,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后太防,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妻顶,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年蜒车,在試婚紗的時候發(fā)現(xiàn)自己被綠了讳嘱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡酿愧,死狀恐怖沥潭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嬉挡,我是刑警寧澤钝鸽,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布汇恤,位于F島的核電站,受9級特大地震影響拔恰,放射性物質(zhì)發(fā)生泄漏因谎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一颜懊、第九天 我趴在偏房一處隱蔽的房頂上張望蓝角。 院中可真熱鬧,春花似錦饭冬、人聲如沸使鹅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽患朱。三九已至,卻和暖如春炊苫,著一層夾襖步出監(jiān)牢的瞬間裁厅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工侨艾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留执虹,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓唠梨,卻偏偏與公主長得像袋励,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子当叭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容