sql-server 이란 - SQL Server의 테이블에서 열 이름을 가져 오는 방법은 무엇입니까?




t-sql (15)

이 쿼리를 작성하면 MySql에서 INFORMATION_SCHEMA를 사용하지 않고도 열 이름과 모든 세부 정보를 얻을 수 있습니다.

SHOW COLUMNS FROM database_Name.table_name;

테이블의 모든 열 이름을 쿼리하고 싶습니다. 이 작업을 수행하는 방법을 찾았습니다.

그러나 나는 이것을 알아야합니다. Microsoft SQL Server (2008의 경우)에서이 작업을 수행하려면 어떻게 해야 합니까?


SELECT c.Name 
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.object_id = OBJECT_ID('TABLE_NAME')
ORDER BY c.Name

SELECT column_name, data_type, character_maximum_length, table_name,ordinal_position, is_nullable 
FROM information_schema.COLUMNS WHERE table_name LIKE 'YOUR_TABLE_NAME'
ORDER BY ordinal_position

틀림없이 더 직관적 인 또 다른 옵션은 다음과 같습니다.

SELECT [name] 
FROM sys.columns 
WHERE object_id = OBJECT_ID('[yourSchemaType].[yourTableName]') 

이렇게하면 모든 열 이름이 하나의 열에 나타납니다. 다른 메타 데이터가 마음에 들면 SELECT STATEMENT TO SELECT * 편집 할 수 있습니다.


이 명령을 실행하기 만하면됩니다.

EXEC sp_columns 'Your Table Name'

- 이것은 변환을 위해 대형 데이터베이스를 문서화하는 데 사용되는 또 다른 변형입니다 (수정 된 - 정적 열 제거).

SELECT o.Name                   as Table_Name
     , c.Name                   as Field_Name
     , t.Name                   as Data_Type
     , t.length                 as Length_Size
     , t.prec                   as Precision_
FROM syscolumns c 
     INNER JOIN sysobjects o ON o.id = c.id
     LEFT JOIN  systypes t on t.xtype = c.xtype  
WHERE o.type = 'U' 
ORDER BY o.Name, c.Name

- 왼쪽 조인에서 c.type은 c.xtype으로 대체되어 varchar 유형을 가져옵니다.


정보 스키마보기를 쿼리하여이 정보를 얻을 수 있습니다.

이 샘플 쿼리 :

SELECT *
FROM Northwind.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'

이 모든 DB 객체를 통해 만들 수 있습니다.


SQL Server 2008에서는 sp_help 를 사용할 수 있습니다.

sp_help <table_name>;

위의 명령에 대한 키보드 단축키 : 테이블 이름을 선택 (즉 강조 표시)하고 Alt + F1을 누릅니다.


SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'

주어진 table기본 table 인지 확인합니다.

SELECT 
    T.TABLE_NAME AS 'TABLE NAME',
    C.COLUMN_NAME AS 'COLUMN NAME'
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME=C.TABLE_NAME
    WHERE   T.TABLE_TYPE='BASE TABLE'
            AND T.TABLE_NAME LIKE 'Your Table Name'

이 쿼리를 사용하면 대답을 얻을 수 있습니다.

select Column_name 
from Information_schema.columns 
where Table_name like 'table name'

이것을 시도 할 수 있습니다. 이것은 각각의 데이터 유형으로 모든 컬럼 이름을 제공합니다.

desc <TABLE NAME> ;

select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

이것은 DATA_TYPE 직접 보여주기 때문에 sys.columns 에서 가져 오는 것보다 낫습니다.


SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')

// TABLE_NAME은 귀하의 테이블입니다.


글쎄, 이제 나는 나의 이전 대답을 약간 수정했다. 나는 존재하지 않는다고 언급 한 답변이 없다는 것을 알아 챘다. 그래서 나는 테이블을 변경하는 데 몇 가지 문제를 겪었으므로 새로운 솔루션을 제공 할 것입니다.

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.columns WHERE table_name = 'TaskSheet' AND column_name = 'IsBilledToClient')
BEGIN
ALTER TABLE dbo.TaskSheet ADD
 IsBilledToClient bit NOT NULL DEFAULT ((1))
END
GO

여기서 TaskSheet 는 특정 테이블 이름이고 IsBilledToClient 는 삽입 할 새 열이고 IsBilledToClient1 입니다. 즉, 새 열에서 기존 행의 값이 무엇인지를 의미하므로 하나가 자동으로 설정됩니다. 그러나 BIT 사용한 것처럼 원하는대로 열 유형을 변경할 수 있으므로 기본값 1을 넣습니다.

나는 위의 체계를 제안한다. 왜냐하면 나는 문제에 직면했기 때문이다. 문제가 무엇입니까? 문제는 IsBilledToClient 열이 테이블 테이블에 존재하면 아래 주어진 코드 부분 만 실행하면 SQL 서버 쿼리 빌더에 오류가 표시된다는 것입니다. 하지만 처음으로 존재하지 않으면 실행시 오류가 발생하지 않습니다.

ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]






sql sql-server sql-server-2008 tsql