টেবিল কমান্ডে সীমাবদ্ধতা প্রদর্শন করুন


224

আমার কাছে টেবিল রয়েছে যা আমি পিকে এফকে সম্পর্ক স্থাপনের চেষ্টা করেছি তবে আমি এটি যাচাই করতে চাই। আমি কীভাবে পিকে / এফকে বাধা দেখাতে পারি? আমি এই ম্যানুয়াল পৃষ্ঠাটি দেখেছি , তবে এটি উদাহরণ দেখায় না এবং আমার গুগল অনুসন্ধানও ফলদায়ক ছিল। আমার ডাটাবেস credentialing1এবং আমার সীমাবদ্ধ টেবিলগুলিpractices এবং cred_insurances

উত্তর:


414

আমি ব্যবহার করি

SHOW CREATE TABLE mytable;

এটি আপনাকে এসকিউএল বিবৃতিটির mytableবর্তমান ফর্মটিতে রিসিট করার জন্য প্রয়োজনীয় দেখায় । আপনি সমস্ত কলাম এবং তাদের ধরণের (যেমন DESC) দেখতে পাচ্ছেন তবে এটি আপনাকে সীমাবদ্ধ তথ্য (এবং টেবিলের ধরণ, চরসেট ইত্যাদি )ও দেখায়।


8
আমি মনে করি না এটি আসন্ন fk সম্পর্ক দেখায়? উদাহরণস্বরূপ, a.col_one references b.col_oneএবং show create table bএতে পূর্বোক্ত সম্পর্ক সম্পর্কে বিস্তারিত থাকবে না।
ভিনিতে মেনন

1
আমি নিশ্চিত করেছি যে এই আদেশটি বিদেশী কী সীমাবদ্ধতা প্রদর্শন করে না।
কেমিন ঝো

2
সাবধান হন যে 10.2 দিয়ে শুরু করা মারিয়াডিবি এখানে বিশ্রী ফলাফলগুলি প্রত্যাবর্তন করবে। jira.mariadb.org/browse/MDEV-15377
স্ট্যামস্টার

117

কেবল INFORMATION_SCHEMA কে জিজ্ঞাসা করুন:

USE INFORMATION_SCHEMA;
SELECT TABLE_NAME,
       COLUMN_NAME,
       CONSTRAINT_NAME,
       REFERENCED_TABLE_NAME,
       REFERENCED_COLUMN_NAME
FROM KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = "<your_database_name>" 
      AND TABLE_NAME = "<your_table_name>" 
      AND REFERENCED_COLUMN_NAME IS NOT NULL;

14
এটি সেরা উত্তর কারণ এটি আপনাকে এমন কোনও ফর্ম্যাটে ফলাফল দেয় যা আপনি প্রোগ্রামগতভাবে ব্যবহার করতে পারেন। অবশ্যই ফলাফলগুলিকে সংকীর্ণ করার জন্য আপনাকে একটি বিধি যুক্ত করতে হবে
নাভিদ হাসান

এটি আমাকে একটি দূষিত সারণী সন্ধান করতে সাহায্য করেছিল যার কলামে 'আইডি' কলামে বেশ কয়েকটি বিদেশী কী উল্লেখ করা হয়েছিল। এতে অবাক হওয়ার কিছু নেই যে টেবিলটি 1452 ইন্টিগ্রিটিইরর পেয়েছে।
ভিকি টি

এই দুর্দান্ত উত্তর! ধন্যবাদ @ রেশ 32
সিংহমাইলিকো

আমি পছন্দ করি যে আপনি "সিম্পল" দিয়ে আপনার উত্তরটির উপসর্গ করেছেন। দুর্দান্ত উত্তর, যদিও!
লিবিয়াথনবাজার

এটি প্রকৃত বাধা বিধি প্রদর্শন করবে না - যেমনON UPDATE CASCADE
স্ট্যামস্টার

19

বৈধতাযুক্ত উত্তরের প্রধান সমস্যাটি হ'ল তথ্যগুলি পেতে আপনাকে আউটপুট পার্স করতে হবে। এখানে একটি ক্যোয়ারী যা আপনাকে সেগুলি আরও ব্যবহারযোগ্য উপায়ে পাওয়ার অনুমতি দেয়:

SELECT cols.TABLE_NAME, cols.COLUMN_NAME, cols.ORDINAL_POSITION,
cols.COLUMN_DEFAULT, cols.IS_NULLABLE, cols.DATA_TYPE,
    cols.CHARACTER_MAXIMUM_LENGTH, cols.CHARACTER_OCTET_LENGTH,
    cols.NUMERIC_PRECISION, cols.NUMERIC_SCALE,
    cols.COLUMN_TYPE, cols.COLUMN_KEY, cols.EXTRA,
    cols.COLUMN_COMMENT, refs.REFERENCED_TABLE_NAME, refs.REFERENCED_COLUMN_NAME,
    cRefs.UPDATE_RULE, cRefs.DELETE_RULE,
    links.TABLE_NAME, links.COLUMN_NAME,
    cLinks.UPDATE_RULE, cLinks.DELETE_RULE
FROM INFORMATION_SCHEMA.`COLUMNS` as cols
LEFT JOIN INFORMATION_SCHEMA.`KEY_COLUMN_USAGE` AS refs
ON refs.TABLE_SCHEMA=cols.TABLE_SCHEMA
    AND refs.REFERENCED_TABLE_SCHEMA=cols.TABLE_SCHEMA
    AND refs.TABLE_NAME=cols.TABLE_NAME
    AND refs.COLUMN_NAME=cols.COLUMN_NAME
LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS cRefs
ON cRefs.CONSTRAINT_SCHEMA=cols.TABLE_SCHEMA
    AND cRefs.CONSTRAINT_NAME=refs.CONSTRAINT_NAME
LEFT JOIN INFORMATION_SCHEMA.`KEY_COLUMN_USAGE` AS links
ON links.TABLE_SCHEMA=cols.TABLE_SCHEMA
    AND links.REFERENCED_TABLE_SCHEMA=cols.TABLE_SCHEMA
    AND links.REFERENCED_TABLE_NAME=cols.TABLE_NAME
    AND links.REFERENCED_COLUMN_NAME=cols.COLUMN_NAME
LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS cLinks
ON cLinks.CONSTRAINT_SCHEMA=cols.TABLE_SCHEMA
    AND cLinks.CONSTRAINT_NAME=links.CONSTRAINT_NAME
WHERE cols.TABLE_SCHEMA=DATABASE()
    AND cols.TABLE_NAME="table"

11

আফাইক আপনাকে অনুরোধ করতে information_schemaবিশেষাধিকারের প্রয়োজন। আপনার কীগুলির সহজ তালিকার প্রয়োজন হলে আপনি এই আদেশটি ব্যবহার করতে পারেন:

SHOW INDEXES IN <tablename>

কীভাবে
তথ্য_চেমাকে

6

করার চেষ্টা করুন:

SHOW TABLE STATUS FROM credentialing1;

বিদেশী কী বাধাগুলি আউটপুটটির মন্তব্য কলামে তালিকাভুক্ত করা হয় ।


3
আমি মন্তব্য কলামে কেবল টেবিল মন্তব্যগুলি দেখতে পাচ্ছি। এটি সম্ভবত InnoDB ধরণের সাথে কিছু করার।
ক্লকওয়ার্কজেক

1
মন্তব্যগুলি শুধুমাত্র ব্যবহারকারীদের মন্তব্যের জন্য। এটি নিশ্চিত যে এফকে সংজ্ঞাটি সেই জায়গায় নয়! যদি তারা আপনার হয়ে থাকে - এটি অবশ্যই আপনার পক্ষ থেকে কিছু আরডিবিএমএস সরঞ্জাম দ্বারা সম্পন্ন করা উচিত।
স্ট্যামস্টার

6

আপনি এটি ব্যবহার করতে পারেন:

select
    table_name,column_name,referenced_table_name,referenced_column_name
from
    information_schema.key_column_usage
where
    referenced_table_name is not null
    and table_schema = 'my_database' 
    and table_name = 'my_table'

বা আরও ভাল ফর্ম্যাট আউটপুট জন্য এটি ব্যবহার করুন:

select
    concat(table_name, '.', column_name) as 'foreign key',  
    concat(referenced_table_name, '.', referenced_column_name) as 'references'
from
    information_schema.key_column_usage
where
    referenced_table_name is not null
    and table_schema = 'my_database' 
    and table_name = 'my_table'

ORA-00942: টেবিল বা দৃশ্যটি বিদ্যমান নেই 00942. 00000 - "টেবিল বা দর্শন বিদ্যমান নেই" * কারণ: * ক্রিয়া:
লাইনটিতে

2
আপনি যে নবাউন্ডারিগুলি চেষ্টা করছেন ওরাকলে, প্রশ্নটি মাইএসকিউএল
ইয়ামাজোরস

1

অনুরূপ @ Resh32 কিন্তু ব্যবহার করতে প্রয়োজন ছাড়াই USEবিবৃতি:

SELECT TABLE_NAME,
       COLUMN_NAME,
       CONSTRAINT_NAME,
       REFERENCED_TABLE_NAME,
       REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = "database_name" 
      AND TABLE_NAME = "table_name" 
      AND REFERENCED_COLUMN_NAME IS NOT NULL;

দরকারী, যেমন ওআরএম ব্যবহার করে।


এটি প্রকৃত বাধা বিধি প্রদর্শন করবে না - যেমনON UPDATE CASCADE
স্ট্যামস্টার

0

এছাড়াও একটি সরঞ্জাম রয়েছে যা ওরাকল তৈরি করেছে যাকে মাইএসকিএলশো বলে

আপনি যদি এটি --k keys $table_nameঅপশন দিয়ে চালান তবে এটি কীগুলি প্রদর্শন করবে।

SYNOPSIS
   mysqlshow [options] [db_name [tbl_name [col_name]]]
.......
.......
.......
·   --keys, -k
   Show table indexes.

উদাহরণ:

╰─➤  mysqlshow -h 127.0.0.1 -u root -p --keys database tokens
Database: database  Table: tokens
+-----------------+------------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field           | Type             | Collation          | Null | Key | Default | Extra          | Privileges                      | Comment |
+-----------------+------------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
| id              | int(10) unsigned |                    | NO   | PRI |         | auto_increment | select,insert,update,references |         |
| token           | text             | utf8mb4_unicode_ci | NO   |     |         |                | select,insert,update,references |         |
| user_id         | int(10) unsigned |                    | NO   | MUL |         |                | select,insert,update,references |         |
| expires_in      | datetime         |                    | YES  |     |         |                | select,insert,update,references |         |
| created_at      | timestamp        |                    | YES  |     |         |                | select,insert,update,references |         |
| updated_at      | timestamp        |                    | YES  |     |         |                | select,insert,update,references |         |
+-----------------+------------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
+--------+------------+--------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table  | Non_unique | Key_name                 | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+--------+------------+--------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| tokens | 0          | PRIMARY                  | 1            | id          | A         | 2           |          |        |      | BTREE      |         |               |
| tokens | 1          | tokens_user_id_foreign   | 1            | user_id     | A         | 2           |          |        |      | BTREE      |         |               |
+--------+------------+--------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.