Oracle自帶系統(tǒng)表與常用的SQL語法

1、 Oracle的系統(tǒng)常用表

  • 場景:用最多的場景如: 代碼生成器開發(fā)或?qū)?code>SQL腳本語句創(chuàng)建表或索引睡毒、視圖、寫存儲過程冗栗、改變表結(jié)構(gòu)(擴展字段演顾,修改字段,修改字段長度)等隅居。
表名 表描述(作用)
user_tables 可查詢當前用戶的表
all_tables 可查詢所有用戶的表
dba_tables 可查詢包括系統(tǒng)表在內(nèi)的所有表
user_users 描述當前用戶
all_users 列出數(shù)據(jù)庫中對當前用戶可見的所有用戶
dba_users 描述數(shù)據(jù)庫中所有用戶
user_tab_columns 獲取用戶表的所有字段還有字段的屬性
all_tab_columns 獲取用戶表的所有字段還有字段的屬性
dba_tab_columns 獲取用戶表的所有字段還有字段的屬
user_tab_comments 獲取表注釋
user_col_comments 獲取字段注釋
user_indexes 查詢出用戶所有表的索引
user_ind_columns 查詢表的索引
user_cons_columns 查詢表的主鍵
user_constraints 查找表的外鍵
user_cons_columns 查詢外鍵約束的列名
dba_data_files 钠至、dba_tablespaces 查看數(shù)據(jù)庫中所有的表空間
dba_tables 指定用戶所擁有的表空間(已經(jīng)使用了哪些表空間)

2、語法SQL使用

--第一種方法: 查詢dba_tab_columns

select COLUMN_NAME,DATA_TYPE,DATA_LENGTH from dba_tab_columns where table_name =upper('表名') order by COLUMN_NAME

--這種方法需要有DBA權(quán)限

--第二種方法: 查詢 user_tab_cols
select  COLUMN_NAME,DATA_TYPE,DATA_LENGTH   from  user_tab_cols   where table_name=upper('表名')

order by COLUMN_NAME
--這種方法只能查找當前用戶下的表

--第三種方法: 查詢ALL_TAB_COLUMNS
select distinct COLUMN_NAME,DATA_TYPE,DATA_LENGTH 
from ALL_TAB_COLUMNS
WHERE TABLE_NAME= upper('表名')
--這種方法可以查詢所有用戶下的表

---------------------------補充-------------------------------------------------------------

--增加cw_srcbpb表字段
alter table cw_srcbpb  add (SRCBPB_RJBPBL varchar2(100) );
--修改cw_srcbpb表字段
alter table cw_srcbpb  modify (SRCBPB_RJBPBL number(30,3) );

--Oracle查看所有表和字段

--獲取表:

select table_name from user_tables; --當前用戶的表       
select table_name from all_tables; --所有用戶的表   
select table_name from dba_tables; --包括系統(tǒng)表
select table_name from dba_tables where owner='LBSP'; --獲取用戶***所擁有的表這里的用戶名要記得是用大寫的胎源。
-- 獲取表字段:其實這里是根據(jù)用戶的權(quán)限來獲取字段的屬性(表名要大寫)
select * from user_tab_columns where Table_Name='用戶表';--獲取用戶表的所有字段還有字段的屬性棉钧。
select * from all_tab_columns where Table_Name='用戶表';--獲取用戶表的所有字段還有字段的屬性。
select * from dba_tab_columns where Table_Name='用戶表';--獲取用戶表的所有字段還有字段的屬性涕蚤。

--獲取表注釋:
select * from user_tab_comments
--user_tab_comments:table_name,table_type,comments
--相應的還有dba_tab_comments宪卿,all_tab_comments,這兩個比user_tab_comments多了ower列万栅。

--獲取字段注釋:
select * from user_col_comments
--user_col_comments:table_name,column_name,comments
--相應的還有dba_col_comments佑钾,all_col_comments,這兩個比user_col_comments多了ower列烦粒。
--查詢出用戶所有表的索引
select   *   from   user_indexes
--查詢用戶表的索引(非聚集索引): 
select   *   from   user_indexes where   uniqueness='NONUNIQUE'
--查詢用戶表的主鍵(聚集索引): 
select   *   from   user_indexes where   uniqueness='UNIQUE' 
--查詢表的索引
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and
t.table_name='NODE'
--查詢表的主鍵
select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and
au.constraint_type = 'P' AND cu.table_name = 'NODE'
--查找表的唯一性約束(包括名稱休溶,構(gòu)成列): 
select column_name from user_cons_columns cu, user_constraints au where cu.constraint_name=au.constraint_name and
cu.table_name='NODE'
--查找表的外鍵
select * from user_constraints c where c.constraint_type = 'R' and c.table_name='STAFFPOSITION';
--查詢外鍵約束的列名: 
select * from user_cons_columns cl where cl.constraint_name = '外鍵名稱';
--查詢引用表的鍵的列名:
select * from user_cons_columns cl where cl.constraint_name = '外鍵引用表的鍵名';

--刪除表空間
drop tablespace AHTBSPACETEST including contents and datafiles cascade constraints
--查詢當前索引的狀態(tài):
select distinct index_name,table_owner,table_name,status from user_indexes

3、結(jié)合[圖片上傳失敗...(image-96c373-1556882948303)]

聲明聲明式高級用法

3.1 創(chuàng)建表:以T_CLASS班級表和T_STUDENT學生表為主
  • 關鍵字: [圖片上傳失敗...(image-993e49-1556882948301)]

    執(zhí)行 扰她、[圖片上傳失敗...(image-edd152-1556882948301)]

    即時(馬上) 兽掰、[圖片上傳失敗...(image-e88487-1556882948301)]

    開始 、[圖片上傳失敗...(image-7b2d7c-1556882948301)]

    結(jié)束义黎、[圖片上傳失敗...(image-1d6b40-1556882948301)]

    如果 禾进、[圖片上傳失敗...(image-41f705-1556882948301)]

    結(jié)束語句 [圖片上傳失敗...(image-5dc867-1556882948301)]

    關鍵字的使用,而commit一般SQL腳本只有一個

  • 函數(shù):[圖片上傳失敗...(image-faeb43-1556882948301)]

    轉(zhuǎn)換小寫

  • 系統(tǒng)表:user_tables

  • 注意:結(jié)束以 【/ 斜桿】結(jié)束

declare
    iCnt number := 0; 
begin 
    select count(*) into iCnt from user_tables  where  lower(table_name) = lower('T_CLASS'); 
    if iCnt = 0 then -- 如果查詢不到這個表就創(chuàng)建這個表
    execute immediate  'create table T_CLASS 
    (
        CLASS_ID    NUMBER(11) NOT NULL ,
        CLASS_NAME    VARCHAR2(50) NOT NULL,
        CLASS_NO    VARCHAR2(30) NOT NULL,
        CLASS_NUM    NUMBER(10) NOT NULL
    )'; 
   --- 對表和表屬性加標注
    execute immediate 'comment on table T_CLASS is ''班級表''';
    execute immediate 'alter table T_CLASS add constraint PK_CLASS_ID primary key (CLASS_ID)' ;
    execute immediate 'comment on column T_CLASS.CLASS_NAME is ''班級名稱''';
    execute immediate 'comment on column T_CLASS.CLASS_NO is ''班級編號''';
    execute immediate 'comment on column T_CLASS.CLASS_NUM is ''班級人數(shù)''';
    end if; 
end; 
/

declare
    iCnt number := 0; 
begin 
    select count(*) into iCnt from user_tables  where  lower(table_name) = lower('T_STUDENT'); 
    if iCnt = 0 then -- 如果查詢不到這個表就創(chuàng)建這個表
    execute immediate  'create table T_STUDENT 
    (
        USER_ID    NUMBER(11) NOT NULL ,
        ID_CARD_CODE    VARCHAR2(50) NOT NULL,
        USER_NAME    VARCHAR2(30) NOT NULL,
        PASS_WORD    VARCHAR2(30) NOT NULL,
        AGE    NUMBER(10)  NOT NULL,
        ADDRESS    VARCHAR2(255) ,
        CREATE_TIME    DATE
    )'; 
    execute immediate 'comment on table T_STUDENT is ''學生用戶表''';
    execute immediate 'alter table T_STUDENT add constraint PK_USER_ID primary key (USER_ID)' ;
    execute immediate 'comment on column T_STUDENT.ID_CARD_CODE is ''身份證編號''';
    execute immediate 'comment on column T_STUDENT.USER_NAME is ''用戶名''';
    execute immediate 'comment on column T_STUDENT.PASS_WORD is ''用戶密碼''';
    execute immediate 'comment on column T_STUDENT.AGE is ''年齡''';
    execute immediate 'comment on column T_STUDENT.ADDRESS is ''地址''';
    execute immediate 'comment on column T_STUDENT.CREATE_TIME is ''創(chuàng)建時間''';
    end if; 
end; 
/

3.2 創(chuàng)建索引
  • 關鍵字: [圖片上傳失敗...(image-5125c4-1556882948301)]

    廉涕、[圖片上傳失敗...(image-47422b-1556882948301)]

  • 系統(tǒng)表: user_ind_columns

--對學生表的身份證ID加唯一索引ID_CARD_CODE
declare
  iCnt number := 0;
begin
  select count(*) into iCnt from user_ind_columns  where  lower(index_name) = lower('stu_idx_card_code') and lower(table_name)=lower('T_STUDENT');
  if iCnt = 0 then  
     execute immediate 'create unique index stu_idx_card_code on T_STUDENT(id_card_code)'; 
  end if;
end;
/

--創(chuàng)建學生表序列Id     
declare
  iCount integer;
begin
  select count(*) into iCount from user_sequences where upper(sequence_name)=upper('SQ_T_STUDENT');
  if iCount = 0 then
    execute immediate
      'create sequence SQ_T_STUDENT
        minvalue 1
        maxvalue 999999999999999999999999999
        start with 1
        increment by 1
        nocache';
  end if;
end;
/   

3.3 刪除索引
  • 關鍵字: [圖片上傳失敗...(image-584c3d-1556882948301)]

    泻云、[圖片上傳失敗...(image-ac7a59-1556882948301)]

  • 系統(tǒng)表: user_ind_columns

--刪除T_STUDENT的唯一索引
declare
  iCnt number := 0;
begin
  select count(*) into iCnt from user_ind_columns where lower(index_name) = lower('stu_idx_card_code') and lower(table_name)=lower('T_STUDENT');
  if iCnt > 0 then  
     execute immediate 'drop index stu_idx_card_code '; 
  end if;
end;
/

--刪除學生表序列Id     
declare
  iCount integer;
begin
  select count(*) into iCount from user_sequences where upper(sequence_name)=upper('SQ_T_STUDENT');
  if iCount > 0 then
    execute immediate  'drop sequence SQ_T_STUDENT ';
  end if;
end;
/   

3.4 創(chuàng)建視圖與刪除視圖
  • 關鍵字: [圖片上傳失敗...(image-567dd9-1556882948301)]

    艇拍、[圖片上傳失敗...(image-129e36-1556882948301)]

    、[圖片上傳失敗...(image-d30a65-1556882948301)]

    宠纯、[圖片上傳失敗...(image-f9ef0d-1556882948301)]

  • 系統(tǒng)表: all_views

--傳統(tǒng)創(chuàng)建視圖腳本
 CREATE OR REPLACE VIEW V_STUDENT AS
    SELECT
       user_id,
       user_name ,  
       pass_word ,  
       age,       
       create_time, 
       id_card_code
     FROM T_STUDENT
WITH READ ONLY;   --只讀視圖
--聲明式刪除視圖
declare
  iCnt number := 0;
begin 
  SELECT count(*) into iCnt  FROM all_views where upper(view_name)=upper('V_STUDENT');
  if iCnt > 0 then
    execute immediate 'drop VIEW V_STUDENT ';
  end if;
end;
/
 --聲明式創(chuàng)建視圖腳本,WITH READ ONLY表示只讀視圖
declare
  iCnt number := 0;
begin 
  SELECT count(*) into iCnt  FROM all_views where upper(view_name)=upper('V_STUDENT');
  if iCnt = 0 then
    execute immediate 'CREATE OR REPLACE VIEW V_STUDENT AS
        SELECT
          user_id,
          user_name ,  
          pass_word ,  
          age,       
          create_time, 
          ID_CARD_CODE
        FROM T_STUDENT
        WITH READ ONLY
      ';
  end if;
end;
/

4卸夕、創(chuàng)建用戶

  • 四步曲 :(其中文件位置、文件大小婆瓜、自增量快集、命名之類可按需自定義)
  • 1、 創(chuàng)建臨時表空間:
create temporary tablespace MyTestSpace_Temp tempfile 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SEAN_TEMP01.DBF'size 10m autoextend on next 10m maxsize 100m extent management local

  • 2 廉白、創(chuàng)建數(shù)據(jù)表空間:
create tablespace mytest_data logging datafile 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SEAN_DATA01.DBF' size 10m autoextend on next 10m maxsize 100m extent management local

  • 3 个初、創(chuàng)建用戶并指定表空間:
create tablespace mytest_data logging datafile 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\SEAN_DATA01.DBF' size 10m autoextend on next 10m maxsize 100m extent management local

  • 4 、給用戶授予權(quán)限:
grant connect,resource,dba to mytest

5猴蹂、Oracle權(quán)限與改表空間

  • 1院溺、給用戶賦予DBA權(quán)限:
grant dba to mytest

  • 2、撤銷用戶對所有表空間都可使用的權(quán)限(相當于撤銷用戶在表空間上的DBA權(quán)限):
revoke unlimited tablespace from mytest

  • 3 將用戶在SYSTEM表空間的配額置為0:
alter user mytest  quota 0 on SYSTEM

*4 設置用戶在mytest_data 表空間上配額不受限

alter user mytest  quota unlimited on mytest_data ;

  • 5磅轻、修改表空間:
alter table TD_USERS move tablespace TABLESPACE_A // 第一步:將表TD_USERS移至表空間tablesapce_A下
alter index TD_USERS_ID rebuild tablespace TABLESPACE_A // 第二步:修改該表的索引的表空間

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末珍逸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子聋溜,更是在濱河造成了極大的恐慌谆膳,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撮躁,死亡現(xiàn)場離奇詭異漱病,居然都是意外死亡,警方通過查閱死者的電腦和手機馒胆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門缨称,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人祝迂,你說我怎么就攤上這事睦尽。” “怎么了型雳?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵当凡,是天一觀的道長。 經(jīng)常有香客問我纠俭,道長沿量,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任冤荆,我火速辦了婚禮朴则,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钓简。我一直安慰自己乌妒,他們只是感情好汹想,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撤蚊,像睡著了一般古掏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侦啸,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天槽唾,我揣著相機與錄音,去河邊找鬼光涂。 笑死庞萍,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的忘闻。 我是一名探鬼主播挂绰,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼服赎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起交播,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤重虑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后秦士,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缺厉,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年隧土,在試婚紗的時候發(fā)現(xiàn)自己被綠了提针。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡曹傀,死狀恐怖辐脖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情皆愉,我是刑警寧澤嗜价,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站幕庐,受9級特大地震影響久锥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜异剥,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一瑟由、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冤寿,春花似錦歹苦、人聲如沸青伤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽潮模。三九已至,卻和暖如春痴施,著一層夾襖步出監(jiān)牢的瞬間擎厢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工辣吃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留动遭,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓神得,卻偏偏與公主長得像厘惦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子哩簿,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

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