Hướng dẫn how do i view relationships in mysql? - làm cách nào để xem các mối quan hệ trong mysql?

Làm thế nào để tìm thấy tất cả các mối quan hệ giữa tất cả các bảng MySQL? Ví dụ, nếu tôi muốn biết mối quan hệ của các bảng trong cơ sở dữ liệu có khoảng 100 bảng.

Có cách nào để biết điều này không?

Hướng dẫn how do i view relationships in mysql? - làm cách nào để xem các mối quan hệ trong mysql?

Hỏi ngày 31 tháng 12 năm 2013 lúc 9:32Dec 31, 2013 at 9:32

5

Cách tốt hơn, nói theo chương trình, là thu thập dữ liệu từ bảng thông tin_schema.key_column_usage như sau:

SELECT 
  `TABLE_SCHEMA`,                          -- Foreign key schema
  `TABLE_NAME`,                            -- Foreign key table
  `COLUMN_NAME`,                           -- Foreign key column
  `REFERENCED_TABLE_SCHEMA`,               -- Origin key schema
  `REFERENCED_TABLE_NAME`,                 -- Origin key table
  `REFERENCED_COLUMN_NAME`                 -- Origin key column
FROM
  `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE`  -- Will fail if user don't have privilege
WHERE
  `TABLE_SCHEMA` = SCHEMA()                -- Detect current schema in USE 
  AND `REFERENCED_TABLE_NAME` IS NOT NULL; -- Only tables with foreign keys

Có nhiều cột thông tin như ordinal_pocation có thể hữu ích tùy thuộc vào mục đích của bạn.

Thông tin thêm: http://dev.mysql.com/doc/refman/5.1/en/key-grum-usage-table.html http://dev.mysql.com/doc/refman/5.1/en/key-column-usage-table.html

Đã trả lời ngày 17 tháng 11 năm 2014 lúc 22:31Nov 17, 2014 at 22:31

Hướng dẫn how do i view relationships in mysql? - làm cách nào để xem các mối quan hệ trong mysql?

Xudrexudrexudre

2.6312 Huy hiệu vàng18 Huy hiệu bạc19 Huy hiệu đồng2 gold badges18 silver badges19 bronze badges

Thử cái này:

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

Đã trả lời ngày 31 tháng 12 năm 2013 lúc 9:34Dec 31, 2013 at 9:34

BaBL86BaBL86BaBL86

2.5921 Huy hiệu vàng12 Huy hiệu bạc13 Huy hiệu đồng1 gold badge12 silver badges13 bronze badges

Thử

Chọn `Table_Name`,` Cột_Name`, `Referenced_Table_Name`,` tham chiếu_column_name` từ `Information_Schema`.`Key_Column_usage` WHERE Không phải là null
`TABLE_NAME`,
`COLUMN_NAME`,
`REFERENCED_TABLE_NAME`,
`REFERENCED_COLUMN_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE `CONSTRAINT_SCHEMA` = 'YOUR_DATABASE_NAME' AND
`REFERENCED_TABLE_SCHEMA` IS NOT NULL AND
`REFERENCED_TABLE_NAME` IS NOT NULL AND
`REFERENCED_COLUMN_NAME` IS NOT NULL

Đừng quên thay thế your_database_name bằng tên cơ sở dữ liệu của bạn!

Đã trả lời ngày 15 tháng 3 năm 2015 lúc 12:19Mar 15, 2015 at 12:19

Mostafa Lavaeimostafa LavaeiMostafa Lavaei

1.8601 Huy hiệu vàng20 Huy hiệu bạc27 Huy hiệu đồng1 gold badge20 silver badges27 bronze badges

Một phương pháp nhanh chóng để trực quan hóa các mối quan hệ trong MySQL là kỹ thuật đảo ngược cơ sở dữ liệu với MySQL Workbench.

Điều này cũng có thể được thực hiện bằng cách sử dụng kỹ thuật đảo ngược, điều này sẽ dẫn đến một sơ đồ mối quan hệ thực thể giống như sau (mặc dù bạn có thể phải tự tổ chức nó, một khi nó được tạo ra):

Hướng dẫn how do i view relationships in mysql? - làm cách nào để xem các mối quan hệ trong mysql?

Hướng dẫn how do i view relationships in mysql? - làm cách nào để xem các mối quan hệ trong mysql?

Sculper

7542 Huy hiệu vàng12 Huy hiệu bạc24 Huy hiệu đồng2 gold badges12 silver badges24 bronze badges

Đã trả lời ngày 27 tháng 8 năm 2015 lúc 16:05Aug 27, 2015 at 16:05

2


SELECT 
    count(1) totalrelationships ,
    c.table_name tablename,
    CONCAT(' ',GROUP_CONCAT(c.column_name ORDER BY ordinal_position SEPARATOR ', ')) columnname,
    CONCAT(' ',GROUP_CONCAT(c.column_type ORDER BY ordinal_position SEPARATOR ', ')) columntype    
FROM
    information_schema.columns c RIGHT JOIN
    (SELECT column_name , column_type FROM information_schema.columns WHERE 
    -- column_key in ('PRI','MUL') AND  -- uncomment this line if you want to see relations only with indexes
    table_schema = DATABASE() AND table_name = 'YourTableName') AS p
    USING (column_name,column_type)
WHERE
    c.table_schema = DATABASE()
    -- AND c.table_name != 'YourTableName'
    GROUP BY tablename
    -- HAVING (locate(' YourColumnName',columnname) > 0) -- uncomment this line to search for specific column 
    ORDER BY totalrelationships desc, columnname
;

Đã trả lời ngày 12 tháng 8 năm 2015 lúc 17:43Aug 12, 2015 at 17:43

1

1) Đi vào cơ sở dữ liệu của bạn: use DATABASE;
use DATABASE;

2) Hiển thị tất cả các bảng: show tables;
show tables;

3) Nhìn vào từng cột của bảng để thu thập những gì nó làm và những gì nó được làm từ: describe TABLENAME;
describe TABLENAME;

4) Mô tả là tốt đẹp vì bạn có thể tìm ra chính xác những cột bảng của bạn làm gì, nhưng nếu bạn muốn xem gần hơn với chính dữ liệu: select * from TABLENAME nếu bạn có bảng lớn, thì mỗi hàng thường có một ____10, trong trường hợp đó Thích làm điều này để chỉ nhận được một vài dòng dữ liệu và không có thiết bị đầu cuối bị choáng ngợp:

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
1 - Bạn có thể đặt bất kỳ điều kiện nào ở đây bạn thích.
If you have big tables, then each row usually has an
select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
0, in which case I like to do this to just get a few lines of data and not have the terminal overwhelmed:
select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
1 - You can put any condition here you like.

Phương pháp này cung cấp cho bạn nhiều thông tin hơn là chỉ làm

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
2 và nó cũng cung cấp cho bạn nhiều thông tin có kích thước cắn mỗi lần.

CHỈNH SỬA

Như các ý kiến ​​được đề xuất,

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
3 ở trên là một lựa chọn tồi như một trình giữ chỗ có điều kiện. Đó không phải là một ý tưởng tốt để giới hạn theo số ID, đặc biệt là vì ID thường không đáng tin cậy để được tuần tự. Thêm
select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
4 ở cuối truy vấn thay thế.

Đã trả lời ngày 17 tháng 9 năm 2015 lúc 13:47Sep 17, 2015 at 13:47

Hướng dẫn how do i view relationships in mysql? - làm cách nào để xem các mối quan hệ trong mysql?

RomanromanRoman

8.2487 Huy hiệu vàng60 Huy hiệu bạc98 Huy hiệu Đồng7 gold badges60 silver badges98 bronze badges

3

Dựa trên câu trả lời của Xudre, bạn có thể thực hiện những điều sau đây để xem tất cả các mối quan hệ của lược đồ:

SELECT 
  `TABLE_SCHEMA`,                          -- Foreign key schema
  `TABLE_NAME`,                            -- Foreign key table
  `COLUMN_NAME`,                           -- Foreign key column
  `REFERENCED_TABLE_SCHEMA`,               -- Origin key schema
  `REFERENCED_TABLE_NAME`,                 -- Origin key table
  `REFERENCED_COLUMN_NAME`                 -- Origin key column
FROM `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE`
WHERE `TABLE_SCHEMA` = 'YourSchema'
AND   `REFERENCED_TABLE_NAME` IS NOT NULL  -- Only tables with foreign keys

Điều tôi muốn trong hầu hết các trường hợp là biết tất cả các FK chỉ vào một bảng cụ thể. Trong trường hợp này tôi chạy:

SELECT 
  `TABLE_SCHEMA`,                          -- Foreign key schema
  `TABLE_NAME`,                            -- Foreign key table
  `COLUMN_NAME`                            -- Foreign key column
FROM `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE`  
WHERE `TABLE_SCHEMA` = 'YourSchema'
AND   `REFERENCED_TABLE_NAME` = 'YourTableName'

Đã trả lời ngày 28 tháng 4 năm 2020 lúc 13:54Apr 28, 2020 at 13:54

Hướng dẫn how do i view relationships in mysql? - làm cách nào để xem các mối quan hệ trong mysql?

Một tùy chọn là: Bạn có thể thực hiện kỹ thuật đảo ngược để hiểu nó theo cách sơ đồ.

Khi bạn cài đặt MySQL, bạn sẽ nhận được mysqlworkbench. Bạn cần mở nó và chọn cơ sở dữ liệu bạn muốn đảo ngược kỹ sư. Nhấp vào tùy chọn Kỹ sư đảo ngược ở đâu đó bạn tìm thấy trong menu công cụ hoặc cơ sở dữ liệu. Nó sẽ yêu cầu bạn chọn các bảng. Hoặc bạn chọn các bảng bạn muốn hiểu hoặc chọn toàn bộ DB. Nó sẽ tạo ra một sơ đồ với các mối quan hệ.

Đã trả lời ngày 29 tháng 5 năm 2014 lúc 7:16May 29, 2014 at 7:16

bạn có thể dùng:

SHOW CREATE TABLE table_name;

Arnab Nandy

6.2565 Huy hiệu vàng46 Huy hiệu bạc 50 Huy hiệu Đồng5 gold badges46 silver badges50 bronze badges

Đã trả lời ngày 6 tháng 5 năm 2015 lúc 12:44May 6, 2015 at 12:44

1