development

데이터베이스에서 각각의 테이블 및 필드 목록 가져 오기

big-blog 2020. 10. 25. 12:35
반응형

데이터베이스에서 각각의 테이블 및 필드 목록 가져 오기


기본 ORM (순전히 재미를 위해)을 만드는 방법을 찾고 있는데 데이터베이스의 테이블 목록과 모든 테이블의 필드를 반환하는 방법이 있습니까?

이것을 사용하여 결과 집합 (C #)을 반복 한 다음 결과 집합의 각 테이블에 대해 이렇게 말할 수 있기를 원합니다 (예 : 리플렉션을 사용하여 xyz를 수행하거나 포함 할 클래스를 만듭니다).

또한 SQL Server에 대한 좋은 온라인 블로그는 무엇입니까? 이 질문은 실제로 Sql Server에서 시스템 SP와 데이터베이스를 사용하는 것에 관한 것이라는 것을 알고 있으며 일반적인 쿼리에 동의하므로 이러한 종류의 기능을 다루는 블로그에 관심이 있습니다.

감사


이것이 당신이 찾고있는 것입니까?

OBJECT CATALOG VIEWS 사용

 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';

정보 스키마 뷰 사용

  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;

참조 : 내 블로그-http: //dbalink.wordpress.com/2008/10/24/querying-the-object-catalog-and-information-schema-views/


테이블 ::

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

열 ::

SELECT * FROM INFORMATION_SCHEMA.COLUMNS 

또는

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

데이터베이스의 모든 테이블 및 필드 목록을 가져옵니다.

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

테이블의 모든 필드 목록을 가져옵니다.

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

SELECT * FROM INFORMATION_SCHEMA.COLUMNS

몇 가지 솔루션을 테스트 한 결과

Select *
From INFORMATION_SCHEMA.COLUMNS

CURRENT / 기본 데이터베이스에 대한 열 정보를 제공합니다.

Select *
From <DBNAME>.INFORMATION_SCHEMA.COLUMNS

, <및>없이 DBNAME 데이터베이스에 대한 열 정보를 제공합니다.


다른 내장 친구는 시스템 sproc SP_HELP입니다.

샘플 사용 ::

sp_help <MyTableName>

실제로 필요한 것보다 훨씬 더 많은 정보를 반환하지만 가능한 요구 사항의 90 % 이상이 충족 될 것입니다.


그냥 던져 버리면됩니다-이제 쉽게 복사 / 붙여 넣기를 단어 나 Google 문서에 넣을 수 있습니다.

PRINT '<html><body>'
SET NOCOUNT ON
DECLARE @tableName VARCHAR(30)
DECLARE tableCursor CURSOR LOCAL FAST_FORWARD FOR
    SELECT T.name AS TableName 
      FROM sys.objects AS T
     WHERE T.type_desc = 'USER_TABLE'
     ORDER BY T.name
OPEN tableCursor
FETCH NEXT FROM tableCursor INTO @tableName
WHILE @@FETCH_STATUS = 0 BEGIN
    PRINT '<h2>' + @tableName + '</h2>'
    PRINT '<pre>'
    SELECT LEFT(C.name, 30) AS ColumnName,
           LEFT(ISC.DATA_TYPE, 10) AS DataType,
           C.max_length AS Size,
           CAST(P.precision AS VARCHAR(4)) + '/' + CAST(P.scale AS VARCHAR(4)) AS PrecScale,
           CASE WHEN C.is_nullable = 1 THEN 'Null' ELSE 'No Null' END AS [Nullable],
           LEFT(ISNULL(ISC.COLUMN_DEFAULT, ' '), 5)  AS [Default],
           CASE WHEN C.is_identity = 1 THEN 'Identity' ELSE '' END AS [Identity]
    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
           JOIN INFORMATION_SCHEMA.COLUMNS AS ISC ON T.name = ISC.TABLE_NAME AND C.name = ISC.COLUMN_NAME
    WHERE  T.type_desc = 'USER_TABLE'
      AND  T.name = @tableName
    ORDER BY T.name, ISC.ORDINAL_POSITION
    PRINT '</pre>'
    FETCH NEXT FROM tableCursor INTO @tableName

END

CLOSE tableCursor
DEALLOCATE tableCursor
SET NOCOUNT OFF
PRINT '</body></html>'

이렇게하면 사용자가 만든 모든 테이블이 표시됩니다.

select * from sysobjects where xtype='U'

열을 얻으려면 :

Select * from Information_Schema.Columns Where Table_Name = 'Insert Table Name Here'

Also, I find http://www.sqlservercentral.com/ to be a pretty good db resource.


For MYSQL:

Select *
From INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA = "<DatabaseName>"

This will return the database name, table name, column name and the datatype of the column specified by a database parameter:

declare @database nvarchar(25)
set @database = ''

SELECT cu.table_catalog,cu.VIEW_SCHEMA, cu.VIEW_NAME, cu.TABLE_NAME,   
cu.COLUMN_NAME,c.DATA_TYPE,c.character_maximum_length
from INFORMATION_SCHEMA.VIEW_COLUMN_USAGE as cu
JOIN INFORMATION_SCHEMA.COLUMNS as c
on cu.TABLE_SCHEMA = c.TABLE_SCHEMA and c.TABLE_CATALOG = 
cu.TABLE_CATALOG
and c.TABLE_NAME = cu.TABLE_NAME
and c.COLUMN_NAME = cu.COLUMN_NAME
where cu.TABLE_CATALOG = @database
order by cu.view_name,c.COLUMN_NAME

I found an easy way to fetch the details of Tables and columns of a particular DB using SQL developer.

Select *FROM USER_TAB_COLUMNS

SELECT * FROM INFORMATION_SCHEMA.COLUMNS for get all

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS for get all table name. Try it on sqlserver,

참고URL : https://stackoverflow.com/questions/420741/getting-list-of-tables-and-fields-in-each-in-a-database

반응형