我们可以使用sql列出ms访问数据库中的所有表吗?

时间:2010-04-13 11:46:47

标签: sql database ms-access

我们能否像在sql server中一样使用sql。找到ms访问中的所有表

select * from sys.tables  

在sqlite中

SELECT * FROM sqlite_master where type='table' 

6 个答案:

答案 0 :(得分:18)

使用MSysObjects

SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0

答案 1 :(得分:2)

Ms Access有几个系统表,默认情况下从表列表中隐藏。你可以展示它们。

在Access 2007中,右键单击表列表并选择Navigation Options。在表单底部,您会看到Show System Objects复选框。检查它,系统表将显示在表格列表中。它们都以MSys开头 或者,可以从应用程序菜单激活选项表单 - 单击按钮Access options - >选择Current Database,然后有Navigation Options按钮。

现在,您可以使用MsAccess工具检查结构和内容并生成所有系统表的查询。

Alex回答,表信息在MSysObjects

答案 2 :(得分:1)

以下查询帮助我重新设计/从MS Access迁移到C#& amp; SQL Server。

注意:结合Alex K.KTys提供的答案。
在这里发帖,相信它会对其他人有用(或者我自己必须再次这样做)

SELECT
  SWITCH (
    [type]=-32764,'Report' ,
    [type]  =  1, 'Table, local' ,
    [type]  =  3, 'obj Containers' ,
    [type]  =  4, 'Table, link odbc' ,
    [type]  =  5, 'Query' ,
    [type]  =  6, 'Table, link access' ,
    [type]  =  8, 'SubDataSheets' ,
    TRUE, [type]
  ) AS [type name (or #)]
  , name AS [Table Name]
FROM
  MSysObjects 
ORDER BY 
  2, 3


来自KTys的注意警告(型号可能会有变化)
, *添加到select子句以查看其他字段(例如connect);他们对我没有帮助。

使用MS Access 2013创建/测试

答案 3 :(得分:0)

This discussion gives 类型值列表。请注意,MS不保证版本与版本的值相同。

Type    TypeDesc
-32768  Form
-32766  Macro
-32764  Reports
-32761  Module
-32758  Users
-32757  Database Document
-32756  Data Access Pages
1   Table - Local Access Tables
2   Access Object - Database
3   Access Object - Containers
4   Table - Linked ODBC Tables
5   Queries
6   Table - Linked Access Tables
8   SubDataSheets

答案 4 :(得分:0)

SELECT name FROM MSysObjects where database <> ''

使用此查询获取所有链接表的名称

答案 5 :(得分:0)

对于Access 2013,我已经使用

从MSysObjects中选择名称,其中type = 4