mysql では、restrict はテーブル内のデータに対する制限を意味する制約を意味します。データベース管理者がデータベースをより適切に管理し、データベース内のデータが正しいことを確認するのに役立ちます。 、有効性と完全性。 MySQL では、主キー制約、外部キー制約、一意制約、チェック制約、非 null 制約、およびデフォルト値制約を含む 6 種類の制約を使用できます。
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中添加主键:
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、给一张表添加外键约束
使用DDL语句添加外键约束。可以给一张表设置多个外键。
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表示。
5、删除一张表的外键约束
外键约束可以通过使用DDL语句来删除。或者在Navicat中主动删除外键。
ALTER TABLE 表名 DROP FOREIGN KEY 约束名; alter table emp drop foreign key emp_fk;
6、给表中某字段添加唯一性约束
使用DDL语句添加唯一性约束。或在在Navicat中添加唯一性约束。
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名); alter table emp add constraint emp_uk unique(name);
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;
9、删除表中某个字段的非空约束
使用DDL语句删除非空约束。
ALTER TABLE 表名 MODIFY 列名 类型 NULL; alter table emp modify salary float(8,2) NULL;
上面介绍了当一张表已经存在之后如何添加约束。下面介绍在一开始新建表的时候如何添加约束。
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の制限の意味は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。