注:所有查询默认在管理员用户下进行
----------------------------------Mysql中--------------------------------------------
一、查询数据库内所有表的基本信息
在Mysql中information_schema.TABLES表存储了数据表的元数据信息,下面对常用的字段进行介绍:
TABLE_SCHEMA 记录数据库名;TABLE_NAME记录数据表名;ENGINE 存储引擎;TABLE_ROWS关于表的粗略行估计;DATA)LENGTH记录表的大小(单位字节);INDEX_LENGTH 记录表的索引的大小;ROW_FORMAT可以查看数据表是否压缩过;
对应sql语句:
全部属性查询
1.14日下午,我想抓取数据库所有表的建表语句失败
对应版:
注:information_schema.TABLES t 或者 information_schema.`TABLES` 这两种写法都可以。
二、查询数据库内所有表的字段(列)信息
在Mysql中information_schema.COLUMNS表存储了数据表所有列的信息,下面对常用的字段进行介绍:
TABLE_CATALOG这一列的值总是DEF;TABLE_SCHEMA 记录数据库名;TABLE_NAME 记录表名;COLUMN_NAME记录列名;COLUMN_DEFAULT 记录列默认值;IS_NULLABLE是否可以取空;COLUMN_TYPE 记录列数据类型(详细);COLUMN_KEY 记录列索引类型;CHARACTER_MAXIMUM_LENGTHCHAR/VARCHAR 最大长度;
对应SQL语句:
全部属性查询:
对应版:
三、查询数据库内所有表的索引信息
在Mysql中information_schema.STATISTICS表存储了数据表所有索引的信息,下面对常用的字段进行介绍:
TABLE_CATALOG 包含索引的表所属的目录的名称。 该值始终为def;TABLE_SCHEMA包含索引的表所属的结构(数据库)的名称;TABLE_NAME包含索引的表的名称;NON_UNIQUE如果索引不能重复,则为0;如果可以,则为1;INDEX_SCHEMA 索引所属的结构(数据库)的名称;INDEX_NAME索引的名称。 如果是主键,则始终为PRIMARY;SEQ_IN_INDEX索引中的列序列号,以1开头;COLUMN_NAME列名称;COLLATION列在索引中排序方式:A(升序),D(降序),NULL(未排序);CARDINALITY估计索引中唯一值的数量,该值不一定精确;SUB_PART索引前缀。 如果列仅被部分索引,则索引字符的数量,如果整列被索引,则为NULL;PACKED 指示密钥的打包方式。 如果不是,则为NULL;NULLABLE 如果列可能包含NULL值,则包含YES,否则包含’’;INDEX_TYPE索引类型(BTREE,FULLTEXT,HASH,RTREE);COMMENT 有关未在其自己的列中描述的索引的信息,例如在禁用索引时禁用;INDEX_COMMENT 索引注释;
对应SQL语句:
全部属性查询:
对应:
四、查询库名得建立的所有视图信息
在Mysql中information_schema.STATISTICS表存储了数据表所有索引的信息,下面对常用的字段进行介绍:
TABLE_SCHEMA视图所属的SCHEMA(数据库)的名称TABLE_NAME 表名称VIEW_DEFINITION 视图定义语句DEFINER 创建触发器的用户的帐户IS_UPDATABLEMYSQL在CREATE VIEW时设置一个标志,称为视图可更新性标志。CHECK_OPTION CHECK_OPTION属性的值。该值是NONE,CASCADE或LOCAL之一SECURITY_TYPE 视图SQL SECURITY特性。该值是DEFINER或INVOKER之一COLLATION_CONNECTION排序规则CHARACTER_SET_CLIENT编码格式
对应SQL语句:
全部属性查询:
查询所有视图创建语句:
中文对应版:
----------------------------------SQL SERVER 中-----------------------------------------
有一张系统视图
sys.object
在数据库内创建的每个用户定义的架构范围内的对象(包括本机编译的标量用户定义函数)都包含一行。
在开发文档里有具体描述:/zh-cn/sql/relational-databases/system-catalog-views/sys-objects-transact-sql?view=sql-server-ver15
几乎所有对象信息都存在于sys.objects系统视图中,同时又在不同的系统视图中保留了相应的副本,对于函数、视图、 存储过程、触发器等相应的文本对象,把相应的对象的详细资料存于新的sys.sql_modules视图中。表视图:/zh-cn/sql/relational-databases/system-catalog-views/sys-tables-transact-sql?view=sql-server-ver15
一、查询数据库所有表和字段的基本信息
查询数据库所有建表语句:
查询整个数据库包括系统表所有的字段信息
二、查询数据库所有表的索引信息
注:还可以生成创建和删除语句
结果图:
三、查询建立的所有视图信息
在SQL server的可视化工具Microsoft SQL Server Management Studio 中右键点击视图,设计中可查看创建语句
----------------------------------ORACLE中-----------------------------------------
一、查询所有表,视图的基本信息,字段信息,索引信息
在数据字典与识图中可以找到相应的视图,来查询数据库基本信息;详细字段信息需要到视图中的查看里都有描述
在DBA_TAB_COLS视图中中有详细的表的描述下面是字段信息
TABLE_NAME是表名,视图名或者集群名;COLUMN_NAME是'列名';DATA_TYPE是“列的数据类型”;DATA_TYPE_MOD是'列的数据类型修饰符';DATA_TYPE_OWNER是“列的数据类型的所有者”;DATA_LENGTH是'列的长度,以字节为单位';DATA_PRECISION是'长度:十进制数字(数字)或二进制数字(浮点数)';DATA_SCALE是“数字小数点右侧的数字”;NULLABLE是'列允许空值吗?';COLUMN_ID是'创建的列的序列号';DEFAULT_LENGTH是'列的默认值的长度';DATA_DEFAULT是'列的默认值';NUM_DISTINCT是'列中不同值的个数';LOW_VALUE是'列中的低值';HIGH_VALUE是'列中的高值';密度为“柱的密度”;NUM_NULLS是' null的数量在列';NUM_BUCKETS是'该列柱状图中的桶数';LAST_ANALYZED是'The date of The last time this column was analyzed';SAMPLE_SIZE是“用于分析本列的样本大小”;CHARACTER_SET_NAME是'字符集名称';CHAR_COL_DECL_LENGTH是'声明长度字符类型列';GLOBAL_STATS是“统计数据在没有合并基础分区的情况下计算吗?”;USER_STATS是'是用户直接输入的数据吗?';AVG_COL_LEN是“列的平均长度(以字节为单位)”;CHAR_LENGTH是'列的最大字符长度';CHAR_USED为'C if width was specified in characters, B if in bytes';V80_FMT_IMAGE is ' is column data in 8.0 image format?';data_updated is '列数据是否已升级到最新的类型版本格式?';HIDDEN_COLUMN是'这是一个隐藏的列吗?';VIRTUAL_COLUMN是“这是一个虚拟列吗?”;SEGMENT_COLUMN_ID是‘在段中的列的序列号’;INTERNAL_COLUMN_ID是'列的内部序列号';QUALIFIED_COL_NAME是'限定列名';
!!!在这里遇到了问题:查询所有出来的结果只有固定的一小部分,都是数据字典表,进入视图去看原数据也是,但是用条件查询还是可以查出来
条件查询可以查出来,但是上面的查询结果中不包含TESTS_1表
数据字典表(Data dictionary table)用以存储表、索引、约束以及其它数据库结构的信息,这些对象通常以“$”结尾(例如:TAB$、OBJ$、TS$等),在创建数据库的时候通过运行$ORACLE_HOME/rdbms/admin/sql.bsq脚本来创建。sql.bsq是一个非常重要的文件,其中包含了数据字典表的定义及注释说明,应仔细阅读研究。
方法一
--实例:
列名:
ower,object_name,subobject_name,object_id,created,last_ddl_time,timestamp,status等
如遇到一个庞大的数据核心系统,而并不知道主键关联的情况,可以用以下脚本查询该主键所有对应的表,随后进行筛选关联:
方法二
oracle 查询全部表和对应表结构:
数据字典与视图:
/huangleijay/article/details/11568265
Oracle提供了很方便的视图,直接查询便可
实例:
数据字典与视图
附录A动态性能表
附录B SQL语言运算符与函数
表1各种运算符
表2字符函数列表
表3数值函数列表
表4日期函数列表
表5聚组函数列表
二,获取数据字典定义
获取对象定义的包为:dbms_metadata,其中的get_ddl函数是获取对象的函数
GET_DDL函数返回创建对象的原数据的DDL语句,参数说明
1、object_type ---需要返回原数据的DDL语句的对象类型
2、name --- 对象名称
3、schema ---对象所在的Schema,默认为当前用户所在所Schema
4、version ---对象原数据的版本
5、model ---原数据的类型默认为ORACLE
6、transform. - XSL-T transform. to be applied.
7、RETURNS: 对象的原数据默认以CLOB类型返回
其中,我们经常用到的是前三项。
dbms_metadata包中的get_ddl函数定义:
FUNCTION get_ddl ( object_type IN VARCHAR2,
name IN VARCHAR2,
schema IN VARCHAR2 DEFAULT NULL,
version IN VARCHAR2 DEFAULT 'COMPATIBLE',
model IN VARCHAR2 DEFAULT 'ORACLE',
transform. IN VARCHAR2 DEFAULT 'DDL') RETURN CLOB;
注意:
1、如果使用sqlplus需要进行下列格式化,特别需要对long进行设置,否则无法显示完整的SQL
2、参数要使用大写,否则会查不到
set linesize400
set pages0
set long 10000
1、查看数据库表的定义写法:
2、查看索引的SQL
3、查看创建主键的SQL
4、查看创建外键的SQL
5、查看创建视图的SQL
6、查看用户的SQL
7、查看角色的SQL
8、查看表空间的SQL
9、获取物化视图SQL
10、获取远程连接定义SQL
11、获取用户下的触发器SQL
12、获取用户下的序列
13、获取用户下的函数
14、获取包的定义
15、获取存储过程
16、获取包体定义
17、获取远程数据库对象的定义
18、获取多个对象的定义
实例:
备注:
Q:什么是-元数据-
A:元数据(MetaData),即定义数据的数据。
打个比方,就好像我们要想搜索一首歌(歌本身是数据),而我们可以通过歌名,作者,专辑等信息来搜索,那么这些歌名,作者,专辑等等就是这首歌的元数据。
数据库的元数据就是一些注明数据库信息的数据。