Een lijst met tabellen en velden in elke tabel in een database ophalen

Ik ben aan het kijken naar het maken van een basis-ORM (puur voor de lol), en vroeg me af of er een manier is om de lijst met tabellen in een database en ook de velden voor elke tabel terug te geven?

Hiermee wil ik in staat zijn om door de resultatenset (in C#) te lopen en dan voor elke tabel in de resultatenset zeggen, doe dit (bijvoorbeeld gebruik reflectie om een ​​klasse te maken die xyz zal doen of bevatten).

Vervolgens, wat zijn enkele goede online blogs voor SQL Server? Ik weet dat deze vraag echt gaat over het gebruik van systeem-SP’s en databases in Sql Server, en ik ben ok met algemene vragen, dus ik ben geïnteresseerd in enkele blogs die dit soort functionaliteit behandelen.

Bedankt


Antwoord 1, autoriteit 100%

Is dit wat u zoekt:

WEERGAVE VAN OBJECTCATALOGUS gebruiken

SELECT T.name AS Table_Name ,
       C.name AS Column_Name ,
       P.name AS Data_Type ,
       P.max_length AS Size ,
       CAST(P.precision AS VARCHAR) + '/' + CAST(P.scale AS VARCHAR) AS Precision_Scale
FROM   sys.objects AS T
       JOIN sys.columns AS C ON T.object_id = C.object_id
       JOIN sys.types AS P ON C.system_type_id = P.system_type_id
WHERE  T.type_desc = 'USER_TABLE';

WEERGAVE INFORMATIESCHEMA gebruiken

 SELECT TABLE_SCHEMA ,
       TABLE_NAME ,
       COLUMN_NAME ,
       ORDINAL_POSITION ,
       COLUMN_DEFAULT ,
       DATA_TYPE ,
       CHARACTER_MAXIMUM_LENGTH ,
       NUMERIC_PRECISION ,
       NUMERIC_PRECISION_RADIX ,
       NUMERIC_SCALE ,
       DATETIME_PRECISION
FROM   INFORMATION_SCHEMA.COLUMNS;

Referentie: Mijn blog – http://dbalink.wordpress.com/2008/10/24/querying-the-object-catalog-and-information-schema-views/


Antwoord 2, autoriteit 21%

Tafels ::

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'

kolommen ::

SELECT * FROM INFORMATION_SCHEMA.COLUMNS 

of

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='your_table_name'

Antwoord 3, autoriteit 7%

Krijg een lijst van alle tabellen en velden in de database:

Select *
From INFORMATION_SCHEMA.COLUMNS
Where TABLE_CATALOG Like 'DatabaseName'

Krijg een lijst met alle velden in de tabel:

Select *
From INFORMATION_SCHEMA.COLUMNS
Where TABLE_CATALOG Like 'DatabaseName' And TABLE_NAME Like 'TableName' 

Antwoord 4, autoriteit 4%

Ik heb een paar oplossingen getest en geconstateerd dat

Select *
From INFORMATION_SCHEMA.COLUMNS

geeft u de kolominformatie voor uw HUIDIGE/standaarddatabase.

Select *
From <DBNAME>.INFORMATION_SCHEMA.COLUMNS

, zonder de < en >, geeft u de kolominfo voor de database DBNAME.


Antwoord 5, autoriteit 4%

SELECT * FROM INFORMATION_SCHEMA.COLUMNS 

Antwoord 6, autoriteit 2%

Je andere ingebouwde vriend hier is het systeem sproc SP_HELP.

voorbeeld gebruik ::

sp_help <MyTableName>

Het levert veel meer informatie op dan je echt nodig hebt, maar er wordt aan ten minste 90% van je mogelijke vereisten voldaan.

Other episodes