Atitit. 資料庫-catalog與schema的設計區別以及在實際中使用 擷取資料庫所有庫表 java jdbc p.

來源:互聯網
上載者:User
Atitit. 資料庫 -----catalog 與 schema 的設計區別以及在實際中使用 擷取資料庫所有庫表 java jdbc php c#.Net

1 . -catalog 與 schema 的設計區別 1

2 . 擷取資料庫元資訊的幾種方法 2

2 .1. 直接讀取元表 mysql 的 information_schema, mssql 的 SysDatabases 3

2 .2. 使用諸如 jdbc 等通用介面 3

2 .3. 使用資料庫單獨提供的驅動介面,比如 mysql 的 mysql_list_dbs 3

3 . 擷取資料庫 mysql 中的所有資料庫列表 getCatalogs 3

3 .1. 遍曆資料庫所有資料庫 3

3 .2. Php 版本 mysql_list_dbs() 4

3 .3. 。 Net 版本 SysDatabases 4

3 .4. 。 Net 版本 // 利用 OleDbConnection 的 GetOleDbSchemaTable 來獲得資料庫的結構 4

4 . 擷取某個資料庫的所有表 getTables 4

4 .1. Php 的實現 mysql_list_tables 5

4 .2. 。 N et版 讀取 SysObjects 表 5

5 . 參考 5

1. -catalog與schema 的設計區別

按照 SQL 標準的解釋,在 SQL 環境下 Catalog 和 Schema 都屬於抽象概念,可以把它們理解為一個容器或者資料庫物件命名空間中的一個層次,主要用來解決命名衝突問題。從概念上說,一個資料庫系統包含多個 Catalog ,每個 Catalog 又包含多個 Schema ,而每個 Schema 又包含多個資料庫物件(表、視圖、欄位等),反過來講一個資料庫物件必然屬於一個 Schema ,而該 Schema 又必然屬於一個 Catalog ,這樣我們就可以得到該資料庫物件的完全限定名稱從而解決命名衝突的問題了;例如資料庫物件表的完全限定名稱就可以表示為: Catalog 名稱 .Schema 名稱 . 表名稱。這裡還有一點需要注意的是,SQL標準並不要求每個資料庫物件的完全限定名稱是唯一的,就象網域名稱一樣,如果喜歡的話,每個IP地址都可以擁有多個網域名稱。

從實現的角度來看,各種資料庫系統對 Catalog 和 Schema 的支援和實現方式千差萬別,針對具體問題需要參考具體的產品說明書,比較簡單而常用的實現方式是使用資料庫名作為 Catalog 名,使用使用者名稱作為 Schema 名,具體可參見下表:

表 1 常用資料庫

供應商

Catalog 支援

Schema 支援

Oracle

不支援

Oracle User ID

MySQL

不支援

資料庫名

MS SQL Server

資料庫名

對象屬主名, 2005 版開始有變

DB2

指定資料庫物件時, Catalog 部分省略

Catalog 屬主名

Sybase

資料庫名

資料庫屬主名

Informix

不支援

不需要

PointBase

不支援

資料庫名

作者 :: 綽號 : 老哇的爪子 ( 全名:: Attilax akbar al rapanui 阿提拉克斯 阿克巴 阿爾 拉帕努伊 ) 漢字名:艾龍, EMAIL:1466519819@qq.com

轉載請註明來源: http://www.cnblogs.com/attilax/

下面就是如何從資料庫讀取表資訊了。

在這裡依賴一個類DatabaseMetaData,這個對象可以從資料庫連接來擷取。有了它萬事大吉了,想知道什麼問它即可:

DatabaseMetaData databaseMetaData = conn.getMetaData();

//擷取所有表 ResultSet tableSet = databaseMetaData.getTables(null, "%", "%", new String[]{"TABLE"});

//擷取tableName表列資訊 ResultSet columnSet = databaseMetaData.getColumns(null, "%", tableName, "%");

2. 擷取資料庫元資訊的幾種方法

2.1. 直接讀取元表 mysql 的 information_schema ,mssql 的 SysDatabases

2.2. 使用諸如jdbc 等通用介面

2.3. 使用資料庫單獨提供的驅動介面,比如 mysql 的 mysql_list_dbs

3. 擷取資料庫 mysql中的所有資料庫列表 getCatalogs

3.1. 遍曆資料庫所有資料庫

[

{"TABLE_CAT": "information_schema"},

{"TABLE_CAT": "8kbl"},

{"TABLE_CAT": "atiposdb"},

{"TABLE_CAT": "cyar"},

{"TABLE_CAT": "ecmdb"},

{"TABLE_CAT": "hxtaxi"},

{"TABLE_CAT": "iwbm2"},

{"TABLE_CAT": "iwmshop"},

{"TABLE_CAT": "iwmshopnow"},

{"TABLE_CAT": "limesurvey"},

{"TABLE_CAT": "mysql"},

{"TABLE_CAT": "performance_schema"},

{"TABLE_CAT": "shopedb"},

{"TABLE_CAT": "shopnc"},

{"TABLE_CAT": "test"},

{"TABLE_CAT": "timerdb"},

{"TABLE_CAT": "vod2"},

{"TABLE_CAT": "wechatdb"},

{"TABLE_CAT": "wordpress"},

{"TABLE_CAT": "wxb_site_new"},

{"TABLE_CAT": "wxmiqi"},

{"TABLE_CAT": "zuche5"}

]

getSchemas 是空的。。

3.2. Php 版本 mysql_list_dbs()

$dbs = mysql_list_dbs(); //調用mysql_list_dbs函數

3.3. 。 Net 版本 SysDatabases

1. 擷取所有資料庫名 : (1) 、 Select Name FROM Master.dbo.SysDatabases orDER BY Name

3.4. 。 Net 版本 // 利用 OleDbConnection 的 GetOleDbSchemaTable 來獲得資料庫的結構

4. 擷取某個資料庫的所有表 getTables

DatabaseMetaData dbmd = dbx .getConnection().getMetaData();

// databaseMetaData.getColumns(localCatalog, localSchema,

// localTableName, null);

ResultSet rs = dbmd .getTables( "atiposdb" , "%" , "%" , new String[]{ "TABLE" });

[

{

"TABLE_NAME": "applications",

"REMARKS": "",

"TABLE_TYPE": "TABLE",

"TABLE_SCHEM": null,

"TABLE_CAT": "atiposdb"

},

{

"TABLE_NAME": "attribute",

"REMARKS": "",

"TABLE_TYPE": "TABLE",

"TABLE_SCHEM": null,

"TABLE_CAT": "atiposdb"

},

4.1. Php 的實現 mysql_list_tables

(PHP 3, PHP 4 , PHP 5)

mysql_list_tables -- 列出 MySQL 資料庫中的表

4.2. 。 N et版 讀取 SysObjects 表

2. 擷取所有表名 : (1) 、 Select Name FROM SysObjects Where XType='U' orDER BY Name

5. 參考

asp.net擷取SQL所有資料庫名、所有表名、所有欄位名、列描述 - XMM_1030的專欄 - 部落格頻道 - CSDN.NET.htm

.NET 擷取資料庫中所有表名的方法(轉載) - guoxuefeng - 部落格園.htm

ODBC, OLEDB, ADO, ADO.Net的演化簡史 - BobLiu - 部落格園.htm

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.