ホームページ > データベース > mysql チュートリアル > MySQLデータベースのテーブルに制約を設定する方法

MySQLデータベースのテーブルに制約を設定する方法

王林
リリース: 2023-06-01 15:55:30
転載
2341 人が閲覧しました

    1. PK (主キー制約)

    1. 主キーとは何ですか?

    • 主キーを理解する前に、まずキーワードとは何かを理解してください。

    • キーワード: テーブル内の一意のフィールド (例: A person's) ID番号と学籍番号です。テーブルには複数のキーワードを含めることができます。

    • 主キーは、1 つ以上のキーワードの組み合わせです。テーブル全体に関する情報は、主キーを通じて取得できます。主キーとも呼ばれます。注文テーブルを例にとると、注文番号を通じて注文の荷受人名、製品情報、価格、その他の関連情報を取得できます。

    注: キーワードは主キーである必要はありません。主キーはキーワードである必要があります。

    特徴: 主キーは空であってはならず、一意であり、繰り返すことはできません。テーブルには主キーが 1 つだけあるか、主キーがなく、複数の主キーを持つことはできません。

    2.主キーを設定するにはどうすればよいですか?

    方法 1: テーブルの作成時に主キーを設定する

    -- 建立User表
    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18),
    -- 在这里设置id为主键
    PRIMARY KEY(User_id)
    )
    ログイン後にコピー
    CREATE TABLE Users(
    -- 也可以在字段中直接设置主键
    User_id int NOT NULL PRIMARY KEY,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18)
    )
    ログイン後にコピー

    上記のどちらの方法でも、同じ効果を持つ主キーを作成できます。

    方法 2: テーブル作成時に主キーを設定せず、テーブルに主キーを設定します

    • 最初に主キーを設定せずにテーブルを作成します

    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18)
    )
    ログイン後にコピー
    • 次に主キーを設定します

    原則として、作成時にコードに PRIMARY KEY (User_id) を追加します。テーブル
    方法 1 の方法に従います。最初の原則は同じです。

    ALTER TABLE user ADD PRIMARY KEY(User_id)
    ログイン後にコピー

    原則は、User_id フィールドに PRIMARY KEY を追加することです。
    方法 1 の 2 番目の原則と同じです

    ALTER TABLE users MODIFY User_id INT PRIMARY KEY;
    ログイン後にコピー

    2. FK (外部キー制約)

    1. 外部キーとは何ですか?

    • 外部キーは外部キーワードとも呼ばれ、直接接続を表します。 2つのテーブルの間。あるテーブルの外部キーは、別のテーブルの主キーである必要があります。別のリレーションシップの外部キーを主キーとして持つテーブルはマスター テーブルと呼ばれ、外部キーを持つテーブルはマスター テーブルのスレーブ テーブルと呼ばれます。 。

    • たとえば、注文テーブルには、製品 ID とユーザー ID という 2 つの外部キーが含まれています。プロダクト ID は製品情報テーブルの主キーであり、ユーザー ID はユーザー テーブルの主キーです。

    注: テーブル内に外部キーが複数存在することも、外部キーが存在しないこともあります。

    2. 外部キーの設定方法

    方法 1: テーブル作成時に外部キー制約を設定する

    主キーの前の設定に基づいた例を見てみましょう。先ほど user テーブルを作成したので、今度はorders テーブルを作成します。

    CREATE TABLE dingdan(
    DDid INT PRIMARY KEY NOT NULL,
    User_id INT NOT null,
    DDname VARCHAR(20) NOT NULL,
    -- 设置约束关系,dingdan表中的User_id 与 user表中的User_id表示的是同一个数据
    constraint fk FOREIGN KEY(User_id) REFERENCES user(User_id)
    )
    ログイン後にコピー

    方法 2: テーブルの作成時に主キーは設定されず、後でテーブルに主キーが設定されます。

    alter table student add constraint stfk foreign key(stid) references teacher(tid)
    ログイン後にコピー

    注: 主キーと外部キーの関係が確立された後、メインテーブルのデータは自由に削除できません。注文データにユーザー情報が含まれている場合、ユーザー情報の削除時にエラーが発生するため、ユーザー情報を保持しておく必要があります。

    3. unique (一意制約)

    1. 一意制約とは何ですか?

    一意制約がフィールドに設定されている場合、そのフィールドは書き込まれないか、または書き込まれた場合でもそのフィールドを繰り返すことができません。

    2. 一意制約の設定方法

    さらにユーザー テーブルを作成します。今回はテーブルに電子メール フィールドがあります。電子メールの設定を繰り返すことはできません

    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18),
    User_Email VARCHAR(40) UNIQUE
    )
    ログイン後にコピー

    4. null ではない (空ではない)

    は、このフィールドを空にすることができないことを意味します

    上記の一意の制約に従って記述します。ここでは、それを記述します。

    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18),
    User_Email VARCHAR(40) UNIQUE not null
    )
    ログイン後にコピー

    5.default (デフォルト値)

    は、このフィールドを書き込まないと、次のメッセージが表示されることを意味します。デフォルトで値が設定され、上記の User テーブルへの書き込みを続けます。ここに性別フィールドを追加します。性別を書かない場合、デフォルトは男性

    CREATE TABLE User(
    User_id int NOT NULL,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18),
    User_gender enum('男','女') default '男'
    )
    ログイン後にコピー

    6です。auto_increment (self-increment)

    自動インクリメントとは、自動増分を意味します。つまり、このフィールドにデータを入力しない場合、システムは前のデータに基づいて 1

    を自動的に追加します。 ID で使用される数値

    は、ユーザー テーブル内の ID を自動インクリメントするように設定します

    CREATE TABLE User(
    User_id int auto_increment,
    User_name VARCHAR(20),
    User_pwd VARCHAR(18),
    User_gender enum('男','女') default '男'
    )
    ログイン後にコピー

    注: いいえ。データの一部が入力されていない場合、値は次のように指定されます。デフォルト。したがって、ID が主キーであっても、データを入力する必要はありません

    以上がMySQLデータベースのテーブルに制約を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:yisu.com
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート