Đối với các hệ thống cơ sở dữ liệu phổ biến khác nhau, làm thế nào để bạn liệt kê tất cả các cột trong một bảng?
Đối với các hệ thống cơ sở dữ liệu phổ biến khác nhau, làm thế nào để bạn liệt kê tất cả các cột trong một bảng?
Câu trả lời:
Đối với MySQL, sử dụng:
DESCRIBE name_of_table;
Điều này cũng hoạt động với Oracle miễn là bạn đang sử dụng SQL * Plus hoặc Nhà phát triển SQL của Oracle.
DESCRIBE
name_of_table``;
DESCRIBE
không phải là lệnh Oracle PLQuery mà là lệnh SQL * Plus và do đó, nó không hoạt động trong hầu hết các IDE SQL.
Dành cho Oracle (PL / SQL)
SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'
Dành cho MySQL
SHOW COLUMNS FROM table_name
DESCRIBE name_of_table
.
user_tab_cols
trong truy vấn của bạn?
Đối với máy chủ MS SQL:
select * from information_schema.columns where table_name = 'tableName'
information_schema.columns
xem hệ thống là một phần của ANSI SQL
tiêu chuẩn ( liên kết ).
select COLUMN_NAME from information_schema.columns where table_name = 'tableName' and table_schema = 'databaseName'
(5 năm trễ, vì Danh dự của PostgreSQL, DDBB tiên tiến nhất của Vương quốc)
Trong PostgreSQL:
\d table_name
Hoặc, sử dụng SQL:
select column_name, data_type, character_maximum_length
from INFORMATION_SCHEMA.COLUMNS
where table_name = 'table_name';
Tôi biết là muộn nhưng tôi sử dụng lệnh này cho Oracle:
select column_name,data_type,data_length from all_tab_columns where TABLE_NAME = 'xxxx' AND OWNER ='xxxxxxxxxx'
Máy chủ 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'
hoặc là
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Table_Name'
Cách thứ hai là một tiêu chuẩn ANSI và do đó sẽ hoạt động trên tất cả các cơ sở dữ liệu tuân thủ ANSI.
[
]
xung quanh nó, vì vậy truy vấn không được sử dụng chúng, chỉ có tên bảng đơn giản. Nếu đó không phải là ý định của OP, ít nhất hãy nhận thức được điều này.
<Table Name>
sẽ tránh được sự mơ hồ. Dù sao, tôi nhận ra bạn có thể có ý định rằng khi tôi viết bình luận --- không có hại gì để cảnh báo người khác chỉ trong trường hợp.
Studio quản lý máy chủ Microsoft SQL 2008 R2:
Trong trình chỉnh sửa truy vấn, nếu bạn tô sáng văn bản của tên bảng (ex dbo.MyTable) và nhấn ALT+F1 , bạn sẽ nhận được danh sách tên cột, loại, độ dài, v.v.
ALT+ F1trong khi bạn nhấn mạnh dbo.MyTable
là tương đương với việc chạyEXEC sp_help 'dbo.MyTable'
theo trang web này
Tôi không thể có được các biến thể khi truy vấn Information_SCHema.COLUMNS để hoạt động, vì vậy tôi sử dụng thay thế này.
Máy chủ SQL
Để liệt kê tất cả các bảng do người dùng xác định của cơ sở dữ liệu:
use [databasename]
select name from sysobjects where type = 'u'
Để liệt kê tất cả các cột của bảng:
use [databasename]
select name from syscolumns where id=object_id('tablename')
Chỉ cần sửa một chút cho những người khác trong SQL Server (tiền tố lược đồ đang trở nên quan trọng hơn!):
SELECT name
FROM sys.columns
WHERE [object_id] = OBJECT_ID('dbo.tablename');
Thí dụ:
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
Chỉ là mã của tôi