さまざまな一般的なデータベースシステムで、テーブル内のすべての列をどのようにリストしますか?
さまざまな一般的なデータベースシステムで、テーブル内のすべての列をどのようにリストしますか?
回答:
MySQLの場合、次を使用します。
DESCRIBE name_of_table;
これは、SQL * PlusまたはOracleのSQL Developerを使用している限り、Oracleでも機能します。
DESCRIBE
name_of_table`` である必要があります。
DESCRIBE
は、Oracle PLSQL命令ではなくSQL * Plusコマンドであるため、ほとんどのSQL IDEでは機能しません。
Oracle(PL / SQL)の場合
SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'
MySQLの場合
SHOW COLUMNS FROM table_name
DESCRIBE name_of_table
。
user_tab_cols
クエリには何がありますか?
MS SQL Serverの場合:
select * from information_schema.columns where table_name = 'tableName'
select COLUMN_NAME from information_schema.columns where table_name = 'tableName' and table_schema = 'databaseName'
遅いのはわかっていますが、Oracleには次のコマンドを使用します。
select column_name,data_type,data_length from all_tab_columns where TABLE_NAME = 'xxxx' AND OWNER ='xxxxxxxxxx'
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準拠のデータベース。
[
]
クエリはそれらを使用してはならないので、その周りに、唯一のプレーンなテーブル名。それがOPの意図ではなかった場合は、少なくともこれに注意してください。
<Table Name>
があいまいさを回避しているはずです。とにかく、私がコメントを書いたときにあなたがそれを意図しているのかもしれないことに気づきました-万が一のために他の人に警告することは害にはなりません。
Microsoft SQL Server Management Studio 2008 R2:
クエリエディターで、テーブル名(dbo.MyTableなど)のテキストを強調表示してALT+を押すとF1、列名、タイプ、長さなどのリストが表示されます。
ALT+ F1ハイライトしている間dbo.MyTable
は、このサイトに従って実行するのと同じですEXEC sp_help 'dbo.MyTable'
INFORMATION_SCHEMA.COLUMNSのクエリのバリエーションを機能させることができないため、代わりにこれを使用します。
SQLサーバー
データベースのすべてのユーザー定義テーブルをリストするには:
use [databasename]
select name from sysobjects where type = 'u'
テーブルのすべての列をリストするには:
use [databasename]
select name from syscolumns where id=object_id('tablename')
SQL Serverの他の部分を少しだけ修正しました(スキーマのプレフィックスがより重要になっています)。
SELECT name
FROM sys.columns
WHERE [object_id] = OBJECT_ID('dbo.tablename');