一、取得所有用户表
select
st.table_name,st.remarks
from
sysobjects tbl
inner join SYSTABLE st on st. object_id = tbl.id
where tbl.type = ' U ' and tbl.uid = 1
inner join SYSTABLE st on st. object_id = tbl.id
where tbl.type = ' U ' and tbl.uid = 1
二、取得表的详细字段信息
select
c.name
as
ColumnName, c.length, c.prec, c.scale,baset.name
as
[
DataType
]
,stb.pkey,stb.
[
nulls
]
,stb.
[
default
]
,stb.remarks
from sysobjects tbl
inner join dbo.syscolumns as c on tbl.id = c.id
inner join SYSTABLE st on st. object_id = tbl.id
inner join SYSCOLUMN stb on stb.column_name = c.name and stb.table_id = st.table_id
inner join systypes as baset on c.type = baset.type and c.usertype = baset.usertype
where tbl.name = ' {0} ' and tbl.type = ' U ' and tbl.uid = 1
from sysobjects tbl
inner join dbo.syscolumns as c on tbl.id = c.id
inner join SYSTABLE st on st. object_id = tbl.id
inner join SYSCOLUMN stb on stb.column_name = c.name and stb.table_id = st.table_id
inner join systypes as baset on c.type = baset.type and c.usertype = baset.usertype
where tbl.name = ' {0} ' and tbl.type = ' U ' and tbl.uid = 1
注意"tbl.name='{0}'"替换成表名,这里就不考虑额外的情况了。
三、注意问题
3.1 以上取表结构语句不能取到数据类型为“uniqueidentifierstr”的字段,这个字段在sysobjects和syscolumns没有!!但是SYSCOLUMN里面能找到,所以随后需要再研究一下,找到办法了会再来更新此文。
3.2 取试图和存储过程等其他取元数据的SQL语句随后要用到或者有时间并且能弄出来的话再贴出来更新此文。
本文转自博客园农民伯伯的博客,原文链接:Sybase Anywhere 11 元数据[SQL Schema],如需转载请自行联系原博主。