Pergunta

Como eu poderia obter o número de campos / entradas em um banco de dados utilizando uma instrução SQL?

Foi útil?

Solução

mmm todos os campos em todas as tabelas? assumindo padrões (MSSQL, MySQL, Postgres), você pode emitir uma consulta sobre INFORMATION_SCHEMA.COLUMNS

  SELECT COUNT(*) 
  FROM INFORMATION_SCHEMA.COLUMNS 

Ou agrupados por tabela:

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

Se vários esquemas tem o mesmo nome da tabela na mesma DB, você deve incluir o nome do esquema, bem como (ou seja: dbo.Books, user.Books, company.Books etc.) Caso contrário, você vai obter os resultados errados. Portanto, a melhor prática é:

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

Outras dicas

tentar isso, isso irá excluir pontos de vista, deixar a cláusula onde se quiser vistas

  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'

Parece que este é o que você precisa.

select CountOfFieldsInDatabase = count(*)
from   information_schema.columns

Apenas para quaisquer outros leitores que estão pesquisando ...

Existem várias soluções não-SQL, que podem ser úteis para o usuário .. aqui está 2 que eu uso.

Exemplo 1: Acesso 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

Exemplo 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;
?>

por favor, desculpe qualquer erro de digitação de no exemplo acima - esperança alguém acha isso útil

select count(column_name) from information_schema.columns 
where table_name = **name of your table here **
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top