SQLServer如何查看表结构呢?有同oracle的desc一样命令吗?

SQLServer如何查看表结构呢?有同oracle的desc一样命令吗?,第1张

use Roy --数据
go
--2005实现数据库表字段属性统计(2000里的系统表sysproperties描述表不存在,2005里用sysextended_properties视图替代)
select
[表名]=cName,
[表说明]=isnull(f[value],''),
[列名]=aName,
[列序号]=aColumn_id,
[标识]=case when is_identity=1 then '√' else '' end,
[主键]=case when exists(select 1 from sysobjects x join sysindexes y on xType=N'PK' and xName=yName
join sysindexkeys z on zID=aObject_id and zindid=yindex_id and zColid=aColumn_id)
then '√' else '' end,
[类型]=bName,
[字节数]=case when a[max_length]=-1 and bName!='xml' then 'max/2G'
when bName='xml' then '2^31-1字节/2G'
else rtrim(a[max_length]) end,
[长度]=case when ColumnProperty(aobject_id,aName,'Precision')=-1 then '2^31-1'
else rtrim(ColumnProperty(aobject_id,aName,'Precision')) end,
[小数]=isnull(ColumnProperty(aobject_id,aName,'Scale'),0),
[是否为空]=case when ais_nullable=1 then '√' else '' end,
[列说明]=isnull(e[value],''),
[默认值]=isnull(dtext,'')
from
syscolumns a
left join
systypes b on auser_type_id=buser_type_id
inner join
sysobjects c on aobject_id=cobject_id and cType='U'
left join
syscomments d on adefault_object_id=dID
left join
sysextended_properties e on emajor_id=cobject_id and eminor_id=aColumn_id and eclass=1
left join
sysextended_properties f on fmajor_id=cobject_id and fminor_id=0 and fclass=1

在工作中需要完成这么一个需求:比较两个表的表结构是否形相同,并找出差异比较两个表中的数据是否相同,并找出差异数据
分析:由于表结构中字段比较多,手工比较很浪费时间,而且不能保证不出错误对于表中的数据那就能多了,更不能靠这种方式比较
为了思考问题简单和方便测试,首先先建立两个测试表,并插入一些测试数据吧,sql如下:
>1@dblink是你要查询的同义词对应的database link。
2表名是在db link里的表名,不是在你库中同义词里的表名,如下图:不是S_SALES_BLL,而是B_SALES_ALL。
3表名区分大小写。PS:表名如果是大写,你写小写,那就查询结果为空。

select aowner 所属用户,atable_name 表名,acolumn_name 字段名,adata_type 字段类型,a字段长度,a字段精度,a是否为空,a创建日期,a最后修改日期,
case when aowner=downer and atable_name=dtable_name and acolumn_name=dcolumn_name then '主键' else '' end 是否主键
from
(select aowner,atable_name,bcolumn_name,bdata_type,case when bdata_precision is null then bdata_length else data_precision end 字段长度,
data_scale 字段精度,
decode(nullable,'Y','√','N','×') 是否为空,ccreated 创建日期,clast_ddl_time 最后修改日期
from all_tables a,all_tab_columns b,all_objects c
where atable_name=btable_name and aowner=bowner
and aowner=cowner
and atable_name=cobject_name
and aowner='SCOTT'--此处用户名可以更改,但必须大写英文,也可以把这行删除
and cobject_type='TABLE') a
left join
(select aowner,atable_name,acolumn_name,aconstraint_name from user_cons_columns a, user_constraints b
where aconstraint_name = bconstraint_name and bconstraint_type = 'P') d
on aowner=downer and atable_name=dtable_name and acolumn_name=dcolumn_name
order by aowner,atable_name;

去这里看看
数据结构被称为物理(存储)的数据结构在计算机中的表示()。它包括一个数据元素表示的关系的表示。
物理结构,也就是由Oracle数据库所使用的 *** 作系统的文件结构。对于数据库的物理结构文件,不同版本的Oracle,不同的 *** 作系统平台上的数据库文件存放的目录结构不同的物理结构
其作用可分为三类:
数据日志文件的文件
控制文件
数据文件,数据文件,用于存储数据库中的数据,如表,索引等。当读取数据时,系统首先读取的数据从数据库文件,并存储到数据缓冲器,SGA。
重做日志文件,重做日志文件
所有的记录在数据库中的信息。这是三种类型的文件,文件中最复杂的,而且要保证数据库的安全性和数据库的备份和恢复文件直接。
控制文件
控制文件是一个二进制文件,用来描述数据库的物理结构,数据库只需要一个控制文件,控制文件的内容,包括:
>同步需要恢复的数据文件和日志文件的信息标识数据库和数据库的名称,唯一标识
数据库,检查点数量
/
a>
如果有,请记得采纳为满意的答复,谢谢你!我祝你幸福的生活!
vaela


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12979768.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存