ホームページ  >  記事  >  データベース  >  mysqlで制限とは何を意味しますか

mysqlで制限とは何を意味しますか

青灯夜游
青灯夜游オリジナル
2023-04-13 15:34:224025ブラウズ

mysql では、restrict は制限を意味し、テーブル内のデータに対する制限を指します。データベース管理者がデータベースをより適切に管理し、データベース内のデータの正確性と有効性を確保するのに役立ちます。 。 MySQL は、主キー制約、外部キー制約、一意制約、チェック制約、非ヌル制約、およびデフォルト値制約の 6 種類の制約をサポートします。

mysqlで制限とは何を意味しますか

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

mysql では、restrict は制限を意味します。

MySQL の制約とは何ですか?

restrict (制約) は、テーブル内のデータに対する制限を指します。これは、データベース管理者がデータベースをより適切に管理し、データベース内のデータの正確性、有効性、整合性を確保するのに役立ちます。

たとえば、年齢の値をデータテーブルに保存する場合、200 や 300 などの無効な値を保存しても意味がありません。したがって、制約を使用してテーブル内のデータの範囲を制限する必要があります。

MySQL の制約は、データの正確性と合理性を検出するために使用されます。一般的なエラーには、1. 同じ重複データが存在する、2. 間違ったデータ、3. データ損失エラー (空のデータ)、4. 参照が含まれます。不明瞭なエラー(テーブルを正確にリンクできない)など。

MySQL の制約は、ID 番号を重複して使用できない、配送先住所を空にすることができないなど、上記の問題を解決するために使用されます。制約に違反すると、データ操作動作が抑制されます。

MySQL では、主に次の 6 種類の制約がサポートされています。

1) 主キー制約

主キー制約は最も頻繁に使用されます。制約。データテーブルを設計するときは、通常、テーブルに主キーを設定する必要があります。

主キーは、テーブル内の各情報を一意に識別するテーブル内の特別なフィールドです。例えば、学生情報テーブルの学生番号は一意である。

2) 外部キー制約

外部キー制約は、データの一貫性を確保するために主キー制約と一緒に使用されることがよくあります。

たとえば、果物屋台には、リンゴ、桃、プラム、スイカの 4 種類の果物しかない場合、果物を買いに果物屋台に来たとき、選択できるのはリンゴ、モモ、プラムのみです。 、スイカ、その他の果物は購入できません。

3) 一意制約

一意制約は主キー制約と似ており、どちらも列の一意性を保証できます。主キー制約とは異なり、テーブル内に複数の一意制約を設定でき、一意制約が設定されている列には NULL 値を含めることができますが、NULL 値は 1 つだけです。

たとえば、ユーザー情報テーブルでは、テーブル内でユーザー名が重複するのを避けるために、ユーザー名列を一意制約として設定できます。

4) チェック制約

チェック制約は、データ テーブル内のフィールド値が有効かどうかをチェックする手段です。

たとえば、学生情報テーブルの年齢フィールドには負の数値はなく、値も制限されています。大学生の場合、年齢は通常 18 歳から 30 歳の間となります。フィールドのチェック制約を設定する際は、実際の状況に合わせて設定することで、不正なデータの入力を減らすことができます。

5) 非 null 制約

非 null 制約は、テーブル内のフィールドを空にできないように制約するために使用されます。たとえば、学生情報テーブルでは、学生名が追加されていない場合、このレコードは役に立ちません。

6) デフォルト値制約

デフォルト値制約は、データ テーブルのフィールドに値が入力されていない場合に、すでに設定されている値が自動的にフィールドに追加されることを制約するために使用されます。

例えば、生徒情報を登録する際に、生徒の性別を入力しないと、デフォルトで性別が設定されるか、「不明」が入力されます。

デフォルト値制約は通常、非 NULL 制約が設定されている列に使用され、データ テーブルにデータを入力する際のエラーを防ぐことができます。

上記の 6 つの制約のうち、データ テーブルに存在できる主キー制約は 1 つだけであり、他の制約は複数存在する可能性があります。

操作テーブルの制約

1. テーブルに主キー制約を追加します

テーブルの制約があります主キーは 1 つだけです。主キーを追加するには 2 つの方法があります。

単一の主キー: 1 つの列を主キー列として使用します。この列の値が繰り返されると、一意性制約に違反します。
ユニオン主キー: 複数の列を主キー列として使用します。複数の列の値が同じ場合、一意性制約に違反します。複数の列を組み合わせて主キーを決定することを指し、00,01,10,11,12,22の組み合わせのように組み合わせが重複すると無効となります。

DDL ステートメントを使用して主キー制約を追加します。例:

ALTER TABLE 表名 ADD PRIMARY KEY(列名);
alter table emp add primary key(employee_id);//选取employee_id作为主键
alter table emp add primary key(employee_id,shenfen_id);//联合主键

2. 自動インクリメント主キー制約をテーブル

auto_incrementに追加します。主キーは、データベース管理システムがテーブルを自動管理する際に自動的に追加されるものであり、主キーは自然数を用いて自動的に増加するように決定される。同様に、自己増加主キーも特定の列を主キーとして使用します。テーブルの主キーが追加されているフィールドにデータが追加されると、主キーは自動的に 1 ずつ増加します。

自己成長主キーと一般主キーは相互に変換できます。

1. テーブル内の 1 つの列のみ 自動的に拡張できます。 2. 自動的に拡張される列の型は integer type である必要があります。 3. 自動拡張は、主キー制約および一意制約を持つ列にのみ追加できます。 4. 主キー制約または一意制約を削除します。列に自動拡張機能がある場合は、まず自動拡張を削除してから、制約を削除する必要があります。

注: 以前に自動インクリメント属性をフィールドに追加したことがある場合は、このフィールドを削除するときに最初に自動インクリメント属性を削除する必要があります。

alter table 表名 modify 主键 类型 auto_increment;
alter table emp modify employee_id int auto_increment;

または、Navicat に主キーを追加します:

mysqlで制限とは何を意味しますか

3. テーブル内の主キー制約を削除します

DDL ステートメントを使用して主キーを削除します。

ALTER TABLE 表名 DROP PRIMARY KEY;
alter table emp drop primary key;

注: 主キーを削除するときに、主キー列に自動拡張機能がある場合は、まず自動拡張を削除してから主キーを削除する必要があります。

alter table emp modify employee_id int;//去掉自增长,与添加自增长代码地区别就是没有auto_increament
alter table emp drop primary key;

4. 外部キー制約をテーブルに追加します

UseDDL ステートメントは外部キー制約を追加します。テーブルには複数の外部キーを設定できます。

ALTER  TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN  KEY(列名) REFERENCES 参照的表名(参照的列名);
alter table emp add constraint emp_fk
foreign key(dept_id) references
departments(department_id);

または、Navicat に外部キーを追加します。外部キー名がよく使用されます: テーブル名 _fk、テーブル名 _fk1 は表します。

mysqlで制限とは何を意味しますか

#5. テーブルの外部キー制約を削除します

# DDL を使用します 外部キー制約を削除するステートメント。または、Navicat で外部キーを積極的に削除します。
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
alter table emp drop foreign key emp_fk;

mysqlで制限とは何を意味しますか

6、给表中某字段添加唯一性约束

        使用DDL语句添加唯一性约束。或在在Navicat中添加唯一性约束。

ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);
alter table emp add constraint emp_uk unique(name);

mysqlで制限とは何を意味しますか

7、删除表中某字段的唯一性约束

        使用DDL语句删除唯一性约束。删除之前需要弄清楚删除的约束名是对哪一个字段进行约束的。

ALTER TABLE 表名 DROP KEY 约束名;
alter table emp drop key emp_uk;

8、给表中某个字段添加非空约束

        使用DDL语句添加非空约束。或者Navicat。

ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;
alter table emp modify salary float(8,2) not NULL;

mysqlで制限とは何を意味しますか

9、删除表中某个字段的非空约束

        使用DDL语句删除非空约束。

ALTER TABLE 表名 MODIFY 列名 类型 NULL;
alter table emp modify salary float(8,2) NULL;

mysqlで制限とは何を意味しますか

创建表的时候添加约束

        上面介绍了当一张表已经存在之后如何添加约束。下面介绍在一开始新建表的时候如何添加约束。

1、查询表中加了哪些约束?

 SHOW KEYS FROM 表名;

2、创建表时添加约束

        创建 depts 表包含 department_id 该列为主键且自动增长,department_name 列不允许重复,location_id 列不允含有空值。

create table depts
(
department_id int primary key auto_increment,
department_name varchar(30) unique,
location_id int not null;
);

【相关推荐:mysql视频教程

以上がmysqlで制限とは何を意味しますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。