sql语句查询Oracle|sql server|access 数据库里的所有表名,字段名
Oracle
如果是用該用戶登錄使用以下語句:
SELECT *
FROM USER_TABLES;
如果是用其他用戶:
SELECT *?FROM ALL_TABLES WHERE OWNER='USER_NAME'??
首先,第一句:是查詢的該用戶下的所有表嗎?一般的普通用戶,只是授予了connect 和 resource權限,也可以查看部分系統表嗎?
怎樣查看該用戶【以該用戶登錄】下的自己創建的所有表呢?
其次,第二句,當我以sys身份登錄時,怎么不可以使用這一句呢?SELECT *
FROM ALL_TABLES WHERE OWNER='xiaoming'【xiaoming是我自己創建的用戶,只是授予了connect 和 resource權限】
SQL?SERVER?
查看所有表名:
select???name???from???sysobjects???where???type='U'
查詢表的所有字段名:
Select?name?from?syscolumns?Where?ID=OBJECT_ID('表名')
select?*?from?information_schema.tables
select?*?from?information_schema.views
select?*?from?information_schema.columns?
ACCESS
查看所有表名:
select???name???from???MSysObjects???where???type=1???and???flags=0
?MSysObjects是系統對象,默認情況是隱藏的。通過工具、選項、視圖、顯示、系統對象可以使之顯示出來。 ?
url:http://greatverve.cnblogs.com/archive/2011/06/28/get-database-table-name.html
參考:sql server獲取庫名,表名
1.獲取表的基本字段屬性
--獲取SqlServer中表結構?
SELECT?syscolumns.name,systypes.name,syscolumns.isnullable,
syscolumns.length?
FROM?syscolumns,?systypes?
WHERE?syscolumns.xusertype?=?systypes.xusertype?
AND?syscolumns.id?=?object_id('你的表名')
2.獲取字段的描述信息
--獲取SqlServer中表結構?主鍵,及描述
declare?@table_name?as?varchar(max)
set?@table_name?=?'你的表名'?
select?sys.columns.name,?sys.types.name,?sys.columns.max_length,?sys.columns.is_nullable,?
??(select?count(*)?from?sys.identity_columns?where?sys.identity_columns.object_id?=?sys.columns.object_id?and?sys.columns.column_id?=?sys.identity_columns.column_id)?as?is_identity?,
??(select?value?from?sys.extended_properties?where?sys.extended_properties.major_id?=?sys.columns.object_id?and?sys.extended_properties.minor_id?=?sys.columns.column_id)?as?description
??from?sys.columns,?sys.tables,?sys.types?where?sys.columns.object_id?=?sys.tables.object_id?and?sys.columns.system_type_id=sys.types.system_type_id?and?sys.tables.name=@table_name?order?by?sys.columns.column_id
3.單獨查詢表的遞增字段
--單獨查詢表遞增字段
select?[name]?from?syscolumns?where?
id=object_id(N'你的表名')?and?COLUMNPROPERTY(id,name,'IsIdentity')=1
4.獲取表的主外鍵
--獲取表主外鍵約束
exec?sp_helpconstraint???'你的表名'?;
5.相當完整的表結構查詢
--很全面的表結構
exec?sp_helpconstraint???'你的表名'?;
SELECT?表名??=?CASE?a.colorder?WHEN?1?THEN?c.name?ELSE?''?END,
???????序????= a.colorder,
???????字段名= a.name,
???????標識??= CASE COLUMNPROPERTY(a.id,a.name,'IsIdentity') WHEN 1 THEN '√' ELSE '' END,
???????主鍵??= CASE
??WHEN EXISTS ( SELECT * FROM sysobjects WHERE xtype='PK'
AND name IN (SELECT [name] FROM sysindexes???WHERE id=a.id
??AND indid IN (SELECT indid FROM sysindexkeys WHERE id=a.id
?AND colid IN (SELECT colid FROM syscolumns???WHERE id=a.id
??AND name=a.name)))) THEN '√' ELSE '' END,
?????類型= b.name,
?????字節數= a.length,
?????長度??= COLUMNPROPERTY(a.id,a.name,'Precision'),
?????小數??= CASE ISNULL(COLUMNPROPERTY(a.id,a.name,'Scale'),0) WHEN 0 THEN '' ELSE CAST(COLUMNPROPERTY(a.id,a.name,'Scale') AS VARCHAR) END,
?????允許空= CASE a.isnullable WHEN 1 THEN '√' ELSE '' END,
?????默認值= ISNULL(d.[text],''),
?????說明??= ISNULL(e.[value],'')
?FROM syscolumns a
?LEFT JOIN systypes b ON a.xtype=b.xusertype
INNER JOIN sysobjects c ON a.id=c.id AND c.xtype='U' AND c.name<>'dtproperties'
LEFT??JOIN syscomments d ON a.cdefault=d.id
LEFT??JOIN sys.extended_properties e ON a.id=e.class AND a.colid=e.minor_id
ORDER?BY?c.name,?a.colorder
6.獲取所有的庫名
--獲取服務器中的所遇庫名
select?*?from?master..sysdatabases
7.獲取服務器上所有庫的所有表
--獲取服務器上所有庫的所有表名
use master
declare @db_name varchar(100)
declare @sql varchar(200)
declare cur_tables cursor
for
select name from sysdatabases /*where name like 'by_%'*/
?
open cur_tables
fetch next from cur_tables into @db_name
while @@fetch_status = 0
begin
--set @db_name = @db_name + '.dbo.sysobjects'
print @db_name
set @sql = 'select * from ' + @db_name + '.dbo.sysobjects where xtype =''U'''
exec (@sql)
fetch next from cur_tables into @db_name
end
close cur_tables
deallocate cur_tables
go
?
轉載于:https://www.cnblogs.com/greatverve/archive/2011/06/28/get-database-table-name.html
總結
以上是生活随笔為你收集整理的sql语句查询Oracle|sql server|access 数据库里的所有表名,字段名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net ajax1.0基础回顾(
- 下一篇: android 中ImageView的s