sql >> データベース >  >> RDS >> Mysql

MySQLで複合主キーを作成する方法

    データベーステーブル用に、複数のフィールドで構成される複合主キーを作成する必要がある場合があります。 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);
    

    うまくいけば、My​​SQLで複合主キーを作成できるようになりました。

    Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。

    1. SQL Server 2016:関係を作成する

    2. Oracleデータベースでの元に戻すとやり直しとは

    3. MySQLの長時間実行クエリの処理

    4. 50マイル離れたポイントを計算します(北、45%NE、45%SW)