Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net
Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net
1. -catalog与schema的设计区别1
2. 获取数据库元信息的几种方法2
2.1. 直接读取元表 mysql的 information_schema,mssql的SysDatabases3
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版本 //利用OleDbConnection的GetOleDbSchemaTable来获得数据库的结构 4
4. 获取某个数据库的所有表getTables4
4.1. Php的实现 mysql_list_tables5
4.2. 。Net版 读取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://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_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. 。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
Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net相关推荐
- Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net...
Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php c#.Net 1. -catalog与schema的设计区别1 ...
- catalog能否用于mysql_数据库-----catalog与schema简介
在SQL环境下Catalog和Schema都属于抽象概念,主要用来解决命名冲突问题 一个数据库系统包含多个Catalog,每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表 ...
- 数据库-----catalog与schema简介
在SQL环境下Catalog和Schema都属于抽象概念,主要用来解决命名冲突问题 一个数据库系统包含多个Catalog,每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表 ...
- sql数据库备份默认路径_在Linux上SQL Server中更改默认数据库文件和备份路径
sql数据库备份默认路径 In a previous article, we explored the process to change default SQL dump file location ...
- 数据库水平拆分和垂直拆分区别(以mysql为例)
数据库水平拆分和垂直拆分区别(以mysql为例) 数据库水平拆分和垂直拆分区别(以mysql为例) 案例: 简单购物系统暂设涉及如下表: 1.产品表(数据量10w,稳定) 2.订单表(数据量200w, ...
- MySQL之库表设计篇:一到五范式、BC范式与反范式详解
引言 MySQL的库表设计,在很多时候我们都是率性而为,往往在前期的设计中考虑并不全面,同时对于库表结构的划分也并不明确,所以很多时候在开发过程中,代码敲着敲着会去重构某张表结构,甚至大面积重构多张表 ...
- 玩转MySQL:14000字来详解库表设计
引言 MySQL的库表设计,在很多时候我们都是率性而为,往往在前期的设计中考虑并不全面,同时对于库表结构的划分也并不明确,所以很多时候在开发过程中,代码敲着敲着会去重构某张表结构,甚至大面积重构多张表 ...
- java中删除sqlite数据库语句_sqlite sql创建数据库语句
iOS开发数据库篇-SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 **p ...
- 计算机调试致sa登录失败,无法打开登录 'xxxx' 中请求的数据库。登录失败。用户 'sa' 登录失败。解决思路...
当前位置:我的异常网» Sql Server » 无法打开登录 'xxxx' 中请求的数据库.登录失败.用 无法打开登录 'xxxx' 中请求的数据库.登录失败.用户 'sa' 登录失败.解决思路 w ...
- pho mysql获取最大id_php 获取数据库最大的id几种方法
今天在个数据库类时一直都没法获取最后保存数据的ID了,经过反复排查还是没找到原因,不过后来总结了一些查找出mysql指定表中最后一条记录的ID或直接是说最新插入记录的ID,下面一起来看看. 开发什么的 ...
最新文章
- 使用CTE替换派生表语法
- opencv摄像头 vmware虚拟机出现select timeout
- Qt Creator使用CVS
- codeforces 765 E Tree Folding
- 解决nginx不支持pathinfo Thinkphp命名空间问题
- 新闻发布项目——接口类(newsTbDao)
- oracle regr,oracle 分析函数
- linux内网发现登录设备,LINUX 内网设备将服务映射到公网地址
- 又一款性能调优神器,真香!
- 2020 愿远方依旧有篮球为伴 致敬24号 科比
- 提升团队编码效率的几条经验
- ubuntu 16.04安装网易云音乐,没声音?
- 基于VC面部识别软件(识别出人脸特征)
- EPMS System Analysis——AD验证、权限设计
- 广图登陆知网下载资源教程
- 淘宝关键字搜索商品-v1
- [翼灵物联网工作室例会分享]
- Spring中RedisTemplate方法中,redis相关操作笔记。[redis生成指定长度自增批次号,删除、设置过期时间等]
- 查看php错误日志文件,php错误日志怎么看
- LINUX下磁盘限额配置(转)
热门文章
- ppt生成器_#PPT素材神器#在线卡通头像生成器: avataaars generator
- c语言数组元素前移后移,如何将一个数组的元素循环左移?
- 回调函数 callback
- react-native-router-flux 页面跳转与传值
- Python-2 eval函数
- 【codevs1506】传话
- Linux主流架构运维工作简单剖
- bay——RAC_ASM ORA-15001 diskgroup DATA does not exist or is not mounted.docx
- jstat 监控调整GC很好用
- 对Java语言的byte类型变量进行无符号提升