2015-05-18 21 views
1

我是新來的SQL和最近安裝的Oracle 11g。我閱讀的帖子,關於從user_tables中選擇所有表格。我試圖選擇一個特定的表格,並且按照這篇文章中的一些建議看起來不起作用。從oracle數據字典中選擇一個表

下執行罰款,並返回所有可用的表給我,包括一個名爲faculty_t表:

select * from user_tables; 
select * from dba_tables; 
select * from all_tables; 
desc faculty_t; 

,但我得到的錯誤,當我做到以下幾點:

select * from user_tables where table_name = FACULTY_T; 

第一組報表確認我有一張名爲faculty_t的表格。但是,試圖從user_tablesall_tablesdba_tables中選擇此表格現在看起來不適合我。錯誤信息如下所示:

ORA-00904: "FACULTY_T": invalid identifier 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 
Error at Line: 208 Column: 8 

有什麼想法?謝謝!

+0

也許是因爲SQL區分大小寫?嘗試faculty_t不FACULTY_T – user3640056

+0

這是我第一次嘗試。正如你從錯誤消息本身可以看到的那樣,oracle似乎無論如何都將其讀爲FACULTY_T。 – sedeh

+0

第一個聲明是否與你一起工作? 「從user_tables中選擇faculty_t;」 – user3640056

回答

3

SQL中的字符串文字被包裝在'中。所以:

select * from user_tables where table_name = 'FACULTY_T'; 

當你做了desc faculty_t,SQL引擎知道,一個表名在該點(語法希望有一個表名)的預期。但是在你的select查詢中,sql只是查找恰好具有字符串數據類型的列的值,所以你需要使用'作爲字符串文字。

+0

表名在Oracle中以大寫形式存儲。 –

+0

我錯過了這個微妙的區別。它適用於用引號括起來的大寫字母FACULTY_T! – sedeh

+0

@a_horse_with_no_name,當然,你是對的。 – DWright