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

mysqlの制限の意味は何ですか

WBOY
WBOY転載
2023-05-31 11:41:101129ブラウズ

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

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、给一张表添加外键约束

使用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表示。

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の制限の意味は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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