mysql tutorial টেবিল কমান্ড উপর সীমাবদ্ধতা দেখান




sql server (7)

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


@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;

দরকারী, যেমন ORM ব্যবহার করে।


af_ik আপনি অনুরোধের প্রয়োজন info_schema একটি অনুরোধ করতে। যদি আপনার কীগুলির সাধারণ তালিকা প্রয়োজন হয় তবে আপনি এই কমান্ডটি ব্যবহার করতে পারেন:

SHOW INDEXES IN <tablename>

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

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"

কেবল 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;

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

SHOW CREATE TABLE mytable;

এটি আপনার বর্তমান ফর্মটিতে আমার mytable জন্য প্রয়োজনীয় SQL স্টেটমেন্ট দেখায়। আপনি সমস্ত কলাম এবং তাদের ধরন (যেমন DESC ) দেখতে পারেন তবে এটি আপনাকে সীমাবদ্ধতা তথ্য (এবং টেবিল টাইপ, অক্ষর, ইত্যাদি) দেখায়।


একটি টুল যে mysqlshow বলা mysqlshow

আপনি যদি --k keys $table_name দিয়ে এটি চালান তবে এটি --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      |         |               |
+--------+------------+--------------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

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

SHOW TABLE STATUS FROM credentialing1;

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





foreign-keys