테이블의 모든 열을 어떻게 나열합니까?


231

널리 사용되는 다양한 데이터베이스 시스템의 경우 테이블의 모든 열을 어떻게 나열합니까?


4
닫히는 질문을 작성하는 배지가 있어야하지만 100 개 이상의 투표를받습니다. . Q & A가 여기에 다행입니다.
ToolmakerSteve

답변:


255

MySQL의 경우 다음을 사용하십시오.

DESCRIBE name_of_table;

SQL * Plus 또는 Oracle의 SQL Developer를 사용하는 한 Oracle에서도 작동합니다.


16
이 솔루션은 MSSQL이 아닌 MYSQL 용입니다
Hammad Khan

2
@dmvianna 필자는 이것이 반드시 모든 Oracle에 적용되는 것이 아니라 SQL * Plus에 적용된다고 생각합니다.
Tripp Kinetics

DESCRIBE name_of_table 이어야합니다 .``;
beahacker

sqlite의 경우 : 사용 : pragma table_info (table_name) 즉 sqlite> pragma table_info (column1);
GyRo

편집 DESCRIBE은 Oracle PLSQL 명령어가 아니라 SQL * Plus command 이므로 대부분의 SQL IDE에서 작동하지 않습니다.
walen

117

Oracle (PL / SQL)의 경우

SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'

MySQL의 경우

SHOW COLUMNS FROM table_name

4
youd가 아마도 COLUMN_ID으로 오라클 쿼리를 주문하려면
데이비드 드리지

6
오라클도 유효합니다 DESCRIBE name_of_table.
Pigueiras

<database_name>을 사용하십시오. '<column_prefix> %'와 같이 <table_name>에 열을 표시합니다. 지정된 접두사로 시작하는 열만 나열 할 수 있습니다. 물론 꺾쇠 괄호를 생략합니다.
rstackhouse

무엇 user_tab_cols조회에서?
Jogi

@Jogi-Google "oracle user_tab_cols"-Oracle db에 내장되어 있습니다.
ToolmakerSteve

103

MS SQL Server의 경우 :

select * from information_schema.columns where table_name = 'tableName'

9
여기서 관심있는 항목은 COLUMN_NAME입니다.
Buggieboy

4
이것은 많은 DBMS에서 작동해야합니다. information_schema.columns시스템 뷰는 ANSI SQL표준의 일부입니다 ( link ).
Bogdan Sahlean

4
좋은 답변이지만 중복을 피하려면 다음을 사용하십시오.select COLUMN_NAME from information_schema.columns where table_name = 'tableName' and table_schema = 'databaseName'
billynoah

이것은 SQL-92 ANSI와 호환되며 모든 데이터베이스 엔진에서 작동해야합니다.
Gareth Davidson

39

(5 년 후, 왕국의 최첨단 DDBB 인 PostgreSQL의 명예를 위해)

PostgreSQL에서 :

\d table_name

또는 SQL을 사용하여 :

select column_name, data_type, character_maximum_length
    from INFORMATION_SCHEMA.COLUMNS 
    where table_name = 'table_name';

4
\ d table_name이어야합니다. \ dt table_name은 관계를 나열합니다.
l85m

36

늦었지만 Oracle에이 명령을 사용합니다.

select column_name,data_type,data_length from all_tab_columns where TABLE_NAME = 'xxxx' AND OWNER ='xxxxxxxxxx'


Oracle에서 이것을 시도했지만 작동하지 않았습니다. column_name이 인쇄되었지만 다른 것은 없습니다. SELECT CAST (COLUMN_NAME AS CHAR (40))을 사용해야했습니다. || ''|| DATA_TYPE을 사용하여 멋진 형식을 얻고 여러 열을 연결하십시오.
Eamonn Kenny

27

SQL 서버

SELECT 
    c.name 
FROM
    sys.objects o
INNER JOIN
    sys.columns c
ON
    c.object_id = o.object_id
AND o.name = 'Table_Name'

또는

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

두 번째 방법은 ANSI 표준이므로 모든 ANSI 호환 데이터베이스 에서 작동 해야 합니다.


이 두 가지 중 어느 것도 MS SQL Server에 대해 서면으로 읽거나 적어도 암시 적으로는 작동하지 않습니다. 두 경우 모두 테이블 이름 열 저장 이름 없이 모든 [ ]쿼리를 사용해서는 안 그래서 주위 만 일반 테이블 이름. 그것이 OP의 의도가 아니라면, 적어도 이것을 알고 있어야합니다.
JonBrave

1
@JonBrave-맞습니다. 대괄호는 "여기에 테이블 이름을 입력하십시오"라는 의미입니다 :)
Russ Cam

대괄호이므로 " 잠재적으로 예약 된 단어 때문에 여기에 대괄호 안에 테이블 이름을 삽입하십시오 "로 읽은 다음 일치하는 항목이 없습니다.) 아마도 BNF <Table Name>는 모호성을 피했을 것입니다. 어쨌든, 나는 당신이 내가 의견을 썼을 때 의도했던 것을 깨달았을 것입니다.
JonBrave

1
테이블 이름 주위에 '[]'가없고 따옴표 ''가 필요한 경우에만 MSSQL에 대해서만 작동합니다.
XValidated


12

Microsoft SQL Server Management Studio 2008 R2 :

쿼리 편집기에서 테이블 이름 (예 : dbo.MyTable)의 텍스트를 강조 표시하고 ALT+ F1를 누르면 열 이름, 유형, 길이 등의 목록이 표시됩니다.

ALT+ F1강조 표시된 동안 이 사이트에 따라dbo.MyTable 달리는 것과 같습니다.EXEC sp_help 'dbo.MyTable'

INFORMATION_SCHEMA.COLUMNS 쿼리에 대한 변형을 얻을 수 없으므로 대신 이것을 사용하십시오.


1
SSMS 2012에서 작동하지 않았습니다. Btw는 SQL Server Management Studio 2008을 의미 했습니까?
Hammad Khan

1
보다 정확하게 말하면 Microsoft SQL Server Management Studio 2008 R2를 의미했습니다. 편집하겠습니다.
레슬리 세이지

4

SQL 서버

데이터베이스의 모든 사용자 정의 테이블을 나열하려면 다음을 수행하십시오.

use [databasename]
select name from sysobjects where type = 'u'

테이블의 모든 열을 나열하려면

use [databasename]
select name from syscolumns where id=object_id('tablename')

응? 이것은 잘못되었습니다 ... 데이터베이스에만 USE를 사용할 수 있습니다 ... 그리고 쿼리는 데이터베이스의 모든 사용자 정의 테이블을 반환하지만 OP는 원치 않습니다.
Maximilian Mayerl


3

SQL Server의 다른 것들에 대한 약간의 수정 (스키마 접두사가 점점 중요 해지고 있습니다!) :

SELECT name
  FROM sys.columns 
  WHERE [object_id] = OBJECT_ID('dbo.tablename');

3

예:

select Table_name as [Table] , column_name as [Column] , Table_catalog as [Database], table_schema as [Schema]  from information_schema.columns
where table_schema = 'dbo'
order by Table_name,COLUMN_NAME

그냥 내 코드

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.