比对lc和lp表结构(字段,字段个数,字段类型,字段长度,字段顺序)
Oracle数据库
1. 对比两张表的结构
字段个数:查询user_tab_columns使用COUNT(*)返回行数
SELECT COUNT(*)
FROM user_tab_columns
WHERE table_name = 'lc';
- 这里的COUNT(*)返回的是列的行数,为什么不是数据的行数
在 Oracle 数据库中,有一些系统表,用来存放一些元数据信息,比如系统中的所有表、表的字段名、
数据类型等信息。其中,user_tab_columns 就是一个系统表,它包含了所有用户表(即用户自己创建 的表)的列信息。 对于
SELECT COUNT(*) FROM user_tab_columns WHERE table_name = 'lc'
这个
SQL 语句而言, 它是应用在 user_tab_columns 这个系统表上的,它的实际作用是用来查询表 lc 中有多少个字段
(即列)。
- 让我们来分析一下这个 SQL 语句的每个部分:
SELECT COUNT() 表示使用 COUNT 函数来对查询的结果进行计数。COUNT 函数是一个聚合函数,
它用来计算符合查询条件的数据行数。在这个 SQL 语句中,我们使用 COUNT(),即统计所有符合 条件的行数。 FROM
user_tab_columns 表示需要从 user_tab_columns 这个系统表中进行查询。 WHERE table_name
= ‘lc’ 表示限制查询结果中只包含表名为 lc 的表的列信息。 user_tab_columns 这个系统表中包含了所有用户表的列信息,为了获取 lc 表的列信息,我们需要 使用 WHERE 子句来进行过滤。 因此,这个 SQL
语句的实际效果是查询 user_tab_columns 这个系统表中所有属于 lc 表的列信息, 然后统计这些信息的数量,从而获取 lc
表的列数(即字段数)。
可以通过下面这条sql语句来查询出每张表的表结构(字段,字段类型,字段长度,字段顺序)
SELECT
column_id,column_name,
data_type,
nullable,
data_length,
data_precision,
data_scale
FROM
user_tab_columns
WHERE
table_name = 'lc'
ORDER BY
column_id;
user_tab_columns
是 Oracle 数据库中的一个系统视图,它包含了当前用户(schema)下所有表的列信息,每一行表示一张表
中的一列。
该视图中的列信息包括:列名、数据类型、空值约束、数据长度、数据精度、数据范围等。
视图主要的列:
TABLE_NAME:列所属的表名。
COLUMN_NAME :列的名称。
DATA_TYPE:列的数据类型。
DATA_LENGTH:列的字节数。
DATA_PRECISION:数字型列的精度。对于非数字型列则为空。 DATA_SCALE:数字型列的小 数位数。对于非数字型列则为空。
NULLABLE:列是否允许为空值。该列返回了三种值:Y,表示可空; N,表示不可空;以及 (空),表示该列未知是否可空。
2. 因为对比时我们还要对比字段顺序
在user_tab_columns 中还有一个column_id 字段,该字段表示列的顺序。 通过查询该视图中的 column_id
字段可以得出表中每列的顺序,在通过order by 进行了升序排序
这样我们便得到了按字段顺序排序表结构
由于使用的是公司的数据库,最后的结果我就不展示了
然后再使用文件对比的工具对比就可以了
这类工具有很多,我使用的 Beyond Compare,有需要的去下载就可以了
可以清晰的看到差异
题主学习记录,大家多多包涵,有问题评论区下交流。