【问题标题】:Getting number of fields in a database with an SQL Statement?使用 SQL 语句获取数据库中的字段数?
【发布时间】:2010-11-05 05:53:30
【问题描述】:

如何使用 SQL 语句获取数据库中的字段/条目数?

【问题讨论】:

  • 你是在问如何获取一个表的属性数加上表中的行数?
  • 字段/条目是什么意思?你的意思是行数吗?列数?表数?上述所有的?如果是这样,您使用的是哪个数据库引擎?
  • “条目”在数据库中?您是指记录、表中的列还是表的数量?
  • 我认为他的意思是数据库中的所有条目。这将是该数据库的每个表中的所有条目组合

标签: sql database get field


【解决方案1】:

嗯所有表中的所有字段?假设标准(mssql、mysql、postgres)您可以对 information_schema.columns 发出查询

  SELECT COUNT(*) 
  FROM INFORMATION_SCHEMA.COLUMNS 

或按表格分组:

  SELECT TABLE_NAME, COUNT(*) 
  FROM INFORMATION_SCHEMA.COLUMNS 
  GROUP BY TABLE_NAME

如果多个架构在同一个数据库中具有相同的表名,则您也必须包含架构名称(即:dbo.Books、user.Books、company.Books 等),否则您会得到错误的结果。所以最好的做法是:

SELECT TABLE_SCHEMA, TABLE_NAME, COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS 
GROUP BY TABLE_SCHEMA, TABLE_NAME

【讨论】:

  • 仅供参考,也将包括视图
  • 在任何情况下,他都没有指定引擎,而这种行为可能是 mssql 特有的。
  • MySQL 和 PostgreSQL 在 information_schema.tables 中都有 table_type
  • 信息模式是 ANSI 标准。 en.wikipedia.org/wiki/Information_Schema
  • 尽管这是一个非常古老的线程,但给出的答案将包括 INFORMATION_SCHEMA 表的列,您可能不希望这些列在您的计数中。我的 INFORMATION_SCHEMA 表中有 315 列。在使用 SELECT COUNT(*) 之前,使用 SELECT * 查看您正在计算的内容:SELECT * FROM INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA != 'INFORMATION_SCHEMA'
【解决方案2】:

试试这个,这将排除视图,如果你想要视图,请忽略 where 子句

  select count(*) from information_schema.columns c
join information_schema.tables t on c.table_name = t.table_name
and t.table_type = 'BASE TABLE'

【讨论】:

    【解决方案3】:

    听起来这就是你需要的。

    select CountOfFieldsInDatabase = count(*)
    from   information_schema.columns
    

    【讨论】:

    • 它在描述列的表中计数 ROWS。数据库中每列一行。
    • @Ken:不,它肯定是在计算数据库中所有表的列数。 (这是一件有点无用的事情,但这是 OP 要求的。)
    • 肯,每一行都是一列
    【解决方案4】:

    仅适用于正在谷歌搜索的任何其他读者...

    有几种非 SQL 解决方案,可能对用户有用。 这是我使用的 2 个。

    示例 1: 访问 VBA:

    'Microsoft Access VBA
    Function Count_Fields(Table_Name As String) As Integer
        Dim myFieldCount As Integer
        Dim db As DOA.Database
        Dim rs As DAO.Recordset
        Set db = CurrentDb
        Set rs = db.OpenRecordset(Table_Name, dbOpenDynaset)
        myFieldCount = rs.Fields.Count
        'return the count
        Count_Fields = myFieldCount
        'tidy up
        Set rs = Nothing
        Set db = Nothing
    End Function
    

    示例 2: PHP 5.1:

        <?php
        // PHP5 Implementation - uses MySQLi.
        function countFields ($tableName) { 
        $db = new mysqli('myserver.me.com', 'user' ,'pass', 'databasename');
        if(!$db) {
            echo 'ERROR: Could not connect to the database.';
            } 
        else {
            $rs->$db->query("SELECT * FROM ".$tableName.");
            $fieldCount = $rs->field_count;
            }
        return $fieldCount;
    ?>
    

    请原谅上面的任何错字 - 希望有人觉得这很有用

    【讨论】:

      【解决方案5】:
      select count(column_name) from information_schema.columns 
      where table_name = **name of your table here **
      

      【讨论】:

        猜你喜欢
        • 2014-05-22
        • 1970-01-01
        • 2017-11-05
        • 1970-01-01
        • 2011-09-15
        • 2022-01-26
        • 1970-01-01
        • 2016-07-05
        • 1970-01-01
        相关资源
        最近更新 更多