ホームページ >データベース >mysql チュートリアル >MySQL データベースの制約タイプとは何ですか?

MySQL データベースの制約タイプとは何ですか?

WBOY
WBOY転載
2023-05-28 23:02:001041ブラウズ

データベースの制約は、名前が示すように、データベースに挿入されるデータを制限します。これを行う目的は、データの有効性と整合性を確保することです。これにより、データベース内のデータの品質が大幅に向上し、データを呼び出すためのデータベースのスペースと時間が節約されます。

MySQL データベースの制約タイプとは何ですか?

NOT NULL 制約は、列を NULL にすることができないことを指定する列レベルの制約です。これは、列レベルの制約構文を使用してのみ定義できます。

SQL の null 値は大文字と小文字が区別されず、次の特性があります: int、float、boolean などを含むすべてのデータ型の値が null になる可能性があります。空の文字列は null と等しくなく、0 は null と等しくありません。指定した列に非 null 制約を設定する場合は、列定義の後に「not null」を追加するだけです。たとえば、テーブルを作成する場合:

create table t_test
(
   id int not null,
   name varchar(255) default 'xyz' not null,
   gender varchar(2) null
);

alter table を使用してテーブルを変更するときに、非 null 制約を追加または削除します。たとえば:

#增加非空约束alter table t_test modify gender varchar(2) not null;#取消非空约束alter table t_test modify gender varchar(2) null;#取消非空约束,并指定默认值alter table t_test modify name varchar(255) default 'abc' null;

2.UNIQUE: 一意の制約、列を指定するか、複数の列の組み合わせを繰り返すことはできません。

データベースでは、一意制約列で重複する値は許可されませんが、null は null と等しくないため、複数の null 値が出現する可能性があります。複数の一意制約を同じテーブル内に作成でき、一意制約を複数の列で構成することもできます。カラムに一意制約が作成されると、MySQL はカラムの一意のインデックスを作成します。一意制約に名前が付けられていない場合、一意制約はデフォルトでカラム名になります。一意の制約は、列レベルの構文またはテーブル レベルの構文を使用して確立できます。テーブル レベルの構文を介してのみ、複合制約を設定したり、複数の列に制約名を指定したりできます。

列レベルの構文を使用して一意の制約を作成します。列の定義の後に一意のキーワードを追加するだけです:

#创建表时建立唯一约束,使用列级语法建立create table unique_test
(
   #建立非空约束,意味着id不能为null   id int not null,
   #建立唯一约束,意味着多行数据的该列值不能相等   name varchar(255) unique
);

一意の制約を作成するテーブル レベルの構文の形式: [制約制約名] unique ( 列名 [, 列名,...]) の場合、上記のテーブル レベルの制約構文形式は、列定義と並行して create table ステートメントに配置することも、add を使用して alter table ステートメントに配置することもできます。追加するキーワード:

#创建表时,使用表级语法创建唯一约束create table uniques_test2
(
   #为id建立非空约束,意味着id不能为null   id int not null,
   name varchar(255),
   pass varchar(255),
   #使用表级语法为name建立唯一约束   unique (name),
   #使用表级语法为pass建立唯一约束,并指定约束名为test2_uk   constraint test2_uk unique (pass)
);#创建表时,使用表级语法建立组合列的唯一约束create table unique_test3
(
   id int not null,
   name varchar(255),
   pass varchar(255),
   #指定name和pass两列组合不能重复   constraint test3_uk unique (name, pass)
);#在修改表时,使用add关键字来增加唯一约束alter table unique_test3 add unique (id, name);#在修改表时,使用modify关键字,来为单列设置唯一约束alter table unique_test3 modify name varchar(100) unique;

MySQL の一意制約の削除:

alter table tableName drop index 约束名;
   例句:#删除unique_test3表中的test3_uk唯一约束alter table unique_test3 drop index test3_uk;

3.PRIMARY KEY: 主キー制約。このカラムの値を指定すると、レコードを一意に識別できます。

「外部キー」は、行レコードがメイン テーブル内のレコードに関連付けられていることを指定する制約です。主な目的は、参照整合性を確保することです。

5.CHECK (MySQL ではサポートされていません): 制約をチェックし、対応する列の値が式を満たす必要があることを指定するために使用されるブール式を指定します。

以上がMySQL データベースの制約タイプとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。