Có một cách nhanh chóng để có được tất cả các tên cột từ tất cả các bảng MySQL
, mà không phải liệt kê tất cả các bảng?
Có một cách nhanh chóng để có được tất cả các tên cột từ tất cả các bảng MySQL
, mà không phải liệt kê tất cả các bảng?
Câu trả lời:
select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
tốt hơn là bạn sử dụng truy vấn sau đây để có được tất cả các tên cột dễ dàng
Show columns from tablename
SELECT * FROM information_schema.columns
WHERE table_schema = DATABASE()
ORDER BY table_name, ordinal_position
Vì tôi không có đủ đại diện để bình luận, đây là một cải tiến nhỏ (theo quan điểm của tôi) về câu trả lời tuyệt vời của nick rulez: thay thế WHERE table_schema = 'your_db'
bằng WHERE table_schema = DATABASE()
.
Với ý nghĩa là nó hữu ích cho bất kỳ ai khác, điều này sẽ cung cấp cho bạn một danh sách các cột được phân cách bằng dấu phẩy trong mỗi bảng:
SELECT table_name,GROUP_CONCAT(column_name ORDER BY ordinal_position)
FROM information_schema.columns
WHERE table_schema = DATABASE()
GROUP BY table_name
ORDER BY table_name
Lưu ý: Khi sử dụng các bảng có số lượng cột cao và / hoặc có tên trường dài, hãy lưu ý giới hạn group_concat_max_len , điều này có thể khiến dữ liệu bị cắt ngắn.
<?php
$table = 'orders';
$query = "SHOW COLUMNS FROM $table";
if($output = mysql_query($query)):
$columns = array();
while($result = mysql_fetch_assoc($output)):
$columns[] = $result['Field'];
endwhile;
endif;
echo '<pre>';
print_r($columns);
echo '</pre>';
?>
Tương tự như câu trả lời được đăng bởi @suganya, điều này không trả lời trực tiếp câu hỏi mà là một cách thay thế nhanh hơn cho một bảng duy nhất:
DESCRIBE column_name;
Câu hỏi là:
Có cách nào nhanh chóng để có được tất cả các tên CỘT từ tất cả các bảng trong MySQL mà không phải liệt kê tất cả các bảng không?
SQL để có được tất cả thông tin cho mỗi cột
select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
SQL để có được tất cả các tên màu
select COLUMN_NAME from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
Tôi đã viết điều ngớ ngẩn này một thời gian dài trước đây và vẫn thực sự sử dụng nó bây giờ và sau đó:
https://gist.github.com/kphretiq/e2f924416a326895233d
Về cơ bản, nó thực hiện một "BẢNG BIỂN", sau đó là "MÔ TẢ" trên mỗi bảng, sau đó nhổ nó ra như đánh dấu.
Chỉ cần chỉnh sửa bên dưới "nếu tên " và đi. Bạn sẽ cần phải cài đặt pymysql.
Cõng trên câu trả lời của Nicola với một số php có thể đọc được
$a = mysqli_query($conn,"select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position");
$b = mysqli_fetch_all($a,MYSQLI_ASSOC);
$d = array();
foreach($b as $c){
if(!is_array($d[$c['TABLE_NAME']])){
$d[$c['TABLE_NAME']] = array();
}
$d[$c['TABLE_NAME']][] = $c['COLUMN_NAME'];
}
echo "<pre>",print_r($d),"</pre>";