データベーステーブル用に、複数のフィールドで構成される複合主キーを作成する必要がある場合があります。 MySQLで複合主キーを作成する方法は次のとおりです。
MySQLで複合主キーを作成する方法
MySQLで複合主キーを作成する手順は次のとおりです。複合主キーは、CREATE TABLEステートメントを使用してテーブルを作成している間、またはALTERTABLEステートメントを使用してテーブルを作成した後に作成できます。 MySQLで複合主キーを作成するために、これらの両方の例を見ていきます。
MySQLコンポジットの主キーの例
テーブルの作成中にMySQLで複合主キーを作成する方法は次のとおりです。 注文(order_id、product_id、amount)を作成するとします。 複合主キー(order_id、product_id)を持つテーブル。
mysql> CREATE TABLE orders_list ( order_id INT, product_id INT, amount INT, PRIMARY KEY (order_id, product_id) ) ; mysql> describe orders_list; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | order_id | int(11) | NO | PRI | 0 | | | product_id | int(11) | NO | PRI | 0 | | | amount | int(11) | YES | | NULL | | +------------+---------+------+-----+---------+-------+
上記のクエリでは、複合主キー(order_id、product_id)を作成しました。 上記の出力では、PRIが order_id、product_idの[キー]列に表示されています。 両方が主キーの一部であることを示します。
ボーナスリード:MySQLでテーブルを切り捨てる方法
既存のテーブルに複合主キーを追加
これは、既存のテーブルに複合主キーを追加する方法の例です。次の表があるとします
mysql> CREATE TABLE new_orders ( order_id INT, product_id INT, amount INT ) ; mysql> describe new_orders; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | order_id | int(11) | YES | | NULL | | | product_id | int(11) | YES | | NULL | | | amount | int(11) | YES | | NULL | | +------------+---------+------+-----+---------+-------+
ご覧のとおり、 new_orders テーブルには主キーがありません。これが、ALTERTABLEを使用して複合主キーを追加するSQLクエリです。
ボーナスリード:MySQL DROP VIEW
mysql> alter table new_orders ADD PRIMARY KEY (order_id, product_id); mysql> describe new_orders; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | order_id | int(11) | NO | PRI | 0 | | | product_id | int(11) | NO | PRI | 0 | | | amount | int(11) | YES | | NULL | | +------------+---------+------+-----+---------+-------+
自動インクリメントを使用してMySQL複合主キーを作成することはできないことに注意してください。
ボーナスリード:MySQLでインデックスを作成する方法
MySQL複合主キーインデックス
複合主キーに存在するのと同じフィールドを使用する複合主キーのインデックスを作成できます。
mysql> alter table new_orders ADD INDEX new_index (order_id, product_id);
うまくいけば、MySQLで複合主キーを作成できるようになりました。
Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。