• Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php  c#.Net


    Atitit. 数据库-----catalogschema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php  c#.Net

     

    1-catalogschema的设计区别1

    2获取数据库元信息的几种方法2

    2.1. 直接读取元表 mysql的 information_schemamssqlSysDatabases3

    2.2. 使用诸如jdbc等通用接口3

    2.3. 使用数据库单独提供的驱动接口,比如mysql mysql_list_dbs3

    3获取数据库 mysql中的所有数据库列表getCatalogs3

    3.1. 遍历数据库所有数据库3

    3.2. Php版本mysql_list_dbs()4

    3.3. Net版本  SysDatabases4

    3.4. Net版本 //利用OleDbConnectionGetOleDbSchemaTable来获得数据库的结构 4

    4获取某个数据库的所有表getTables4

    4.1. Php的实现 mysql_list_tables5

    4.2. Net版 读取SysObjects 5

    5参考5

     

     

     

    1. -catalog与schema的设计区别

     

    按照SQL标准的解释,在SQL环境下CatalogSchema都属于抽象概念,可以把它们理解为一个容器或者数据库对象命名空间中的一个层次,主要用来解决命名冲突问题。从概念上说,一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数据库对象(表、视图、字段等),反过来讲一个数据库对象必然属于一个Schema,而该Schema又必然属于一个Catalog,这样我们就可以得到该数据库对象的完全限定名称从而解决命名冲突的问题了;例如数据库对象表的完全限定名称就可以表示为:Catalog名称.Schema名称.表名称。这里还有一点需要注意的是,SQL标准并不要求每个数据库对象的完全限定名称是唯一的,就象域名一样,如果喜欢的话,每个IP地址都可以拥有多个域名。

        从实现的角度来看,各种数据库系统对CatalogSchema的支持和实现方式千差万别,针对具体问题需要参考具体的产品说明书,比较简单而常用的实现方式是使用数据库名作为Catalog名,使用用户名作为Schema名,具体可参见下表:

    常用数据库

    供应商

    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://blog.csdn.net/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_schemamssqlSysDatabases 

    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版本 //利用OleDbConnectionGetOleDbSchemaTable来获得数据库的结构 

     

    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. Net版 读取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

  • 相关阅读:
    django基础之ORM基础知识
    Centos7 搭建sonarQube
    centos7安装部署SVN
    centos7.5 SVN 搭建
    centos 7 部署 zookeeper
    centos7 发送邮件
    Centos7安装配置Gitlab-CE
    openldap 双主模式部署
    K8s一键安装
    ELK实战部署
  • 原文地址:https://www.cnblogs.com/attilax/p/5963569.html
Copyright © 2020-2023  润新知