2013-02-11 17 views
14

posso ottenere il numero di colonne in un database SQL Server con questo:ottenere SQL informazioni di base sulla struttura della tabella Server

SELECT COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = 'Address' 

Ma esiste un modo (per un numero imprecisato di colonne) posso ottenere il nome e datatype e lunghezza di ogni colonna?

+5

Cosa intendi ?. Se fai un 'SELECT *' invece di 'SELECT COUNT (*)', ottieni il nome della colonna, il tipo di dati, la lunghezza e ulteriori informazioni sulle colonne – Lamak

+0

Hai già la tabella 'INFORMATION_SCHEMA.COLUMNS', che cosa esattamente non è ci sono? – LittleBobbyTables

+0

@LittleBobbyTables Bene, questo mi mostra solo il numero di colonne, non i loro nomi o tipi di dati o lunghezze. – 1252748

risposta

43

Invece di utilizzare count(*) si può SELECT * e si tornerà tutti i dettagli che si desidera tra cui data_type:

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_name = 'Address' 

MSDN Docs INFORMATION_SCHEMA.COLUMNS

+0

sì, questo è esattamente ciò di cui avevo bisogno. Esistono funzioni per trasformare le informazioni restituite da questo in un'istruzione che crea una tabella identica? Grazie. – 1252748

+0

@thomas È possibile utilizzare dynamic sql e generare una stringa sql che potrebbe essere eseguita per creare una nuova tabella. – Taryn

+0

@thomas potresti usare qualcosa di simile al codice in questa demo di sql fiddle - http://www.sqlfiddle.com/#!3/24970/9 – Taryn

15

sp_help vi darà un sacco di informazioni su una tabella che include le colonne, le chiavi e i vincoli. Ad esempio, eseguendo

exec sp_help 'Address' 

fornirà informazioni sull'indirizzo.

3

Name and datatype:

USE OurDatabaseName 
GO 

SELECT 
    sc.name AS [Columne Name], 
    st1.name AS [User Type], 
    st2.name AS [Base Type] 
FROM dbo.syscolumns sc 
    INNER JOIN dbo.systypes st1 ON st1.xusertype = sc.xusertype 
    INNER JOIN dbo.systypes st2 ON st2.xusertype = sc.xtype 
-- STEP TWO: Change OurTableName to the table name 
WHERE sc.id = OBJECT_ID('OurTableName') 
ORDER BY sc.colid 

Oppure:

SELECT COLUMN_NAME AS ColumnName, DATA_TYPE AS DataType, CHARACTER_MAXIMUM_LENGTH AS CharacterLength 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'OurTableName' 
0

Per un totale informazioni colonne utilizzare al di sotto sintassi: Usa "DBName" andare Exec sp_columns "TableName"

Per informazioni totale tavolo usa la sintassi seguente: Usa "DBName" go Exec SP_help "Nome tabella"

1

Scrivere il nome della tabella nell'editor delle query selezionare il nome e premere Alt + F1 per visualizzare tutte le informazioni della tabella.

Problemi correlati