MySQLの基本6 [制約]

1.制約とは何ですか

データの整合性と整合性を確保するために、SQL仕様では、制約された方法でテーブルデータに追加の条件を課しています。

•制約はテーブルレベルで必須です

•テーブルの作成時(CREATE TABLEステートメントを使用)またはテーブルの作成後(ALTER TABLEステートメントを使用)に制約を指定できます。

2つの一般的な制約

次の6つの制約があります。

-NOT NULL非空制約。これは、特定のフィールドを空にすることはできないことを規定しています。

-UNIQUE一意制約。これは、特定のフィールドがテーブル全体で一意であることを規定します。

-PRIMARY KEY主キー(空ではなく一意)

–外部キー外部キー

–チェックチェック制約

–デフォルトのデフォルト値

注:MySQLはチェック制約をサポートしていませんが、チェック制約は効果なしで使用できます。

制約データ列の制約に従って、制約は次のように分割できます。

–単一列の制約:各制約は1つの列のみを制約します

–複数列の制約:各制約はデータの複数の列を制約できます

•制約の範囲に応じて、制約は次のように分類できます。

-列レベルの制約は、列の定義に従って、1つの列にのみ適用できます。

–テーブルレベルの制約は、列と一緒ではなく、個別に定義された複数の列に作用できます。

常见约束
一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性
CREATE TABLE 表名(
字段名 字段类型 约束
)

分类
六大约束
NOT NULL 非空约束 保证该字段的值不能为空
比如姓名 学号

DEFAULT 默认约束 用于保证该字段有默认值
比如性别

PRIMARY KEY 主键约束 用于保证该字段的值具有非空 唯一性
比如学号

UNIQUE :唯一,用于保证该字段的值具有唯一性,可以为空
比如座位号 也可以为空

CHECK 检查约束 MySQL中不支持,虽然语法没错
性别只能是男或者女 那么添加的数据只能是二者之一 不然无法添加

FOREIGN KEY 外键约束 用于限制两个表的关系,用于保证该字段的值必须来自于
主表关联列的值

比如
表一:学生信息表里有一个专业列
表二:专业信息表 假如只有两个专业 1 Java 2 h5
那么表一中的专业列号只能是1或者2,来自于专业信息表
这个约束就叫做外键约束,一般添加在从表(学生信息表)中,
引用主表(专业信息表)中某列的值。

比如:专业编号,员工表的部门编号,工种编号,都可添加外键约束。

添加约束时机:
1.创建表时
2.修改表时

约束的添加分类:
1.列级约束
创建表时,写在:
字段名 字段类型 列级约束;
六大约束语法上都没问题,但外键约束无效果

2.表级约束
在写完列后,最后加上:
表级约束
不支持非空和默认

 

3つ目は、テーブルを作成するときに列レベルの制約を追加することです。

1.添加列级约束
CREATE TABLE stuinfo(
id INT PRIMARY KEY,
stuName VARCHAR(20) NOT NULL,
gender CHAR(1) CHECK(gender = '男' OR gender = '女'),
seat INT UNIQUE,
age INT DEFAULT 18,
majorId INT REFERENCES major(id)
);

CREATE TABLE major(
id INT PRIMARY KEY,
majorName VARCHAR(20)
);

SELECT * FROM stuinfo;

语法:直接在字段名和类型后面追加约束类型即可。
只支持默认 非空 主键和唯一

 

4つ目は、テーブルを作成するときにテーブルレベルの制約を追加することです。

2.添加表级约束
DROP TABLE IF EXISTS stuinfo;

VARCHAR:可变长 CHAR:定长
CREATE TABLE stuinfo(
id INT,
stuname VARCHAR(20),
gender CHAR(1),
seat INT,
age INT,
majorid INT,

CONSTRAINT pk PRIMARY KEY(id),#主键
CONSTRAINT uq UNIQUE(seat),
CONSTRAINT ck CHECK(gender = '男' OR gender = '女'),
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
)

SHOW INDEX FROM stuinfo;

语法:
【constraint 约束名】

通用写法:
CREATE TABLE IF EXISTS stuinfo(
id INT PRIMARY KEY,
stuName VARCHAR(20) NOT NULL,
gender CHAR(1),
seat INT UNIQUE,
age INT DEFAULT 18,
majorId INT,
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorId) REFERENCES major(id)
)

 

5つの主キーと独自の比較

1.一意性を保証できます

2.主キーを空にすることはできません

3.テーブルには最大で1つの主キーを含めることができ、複数の一意のキーを含めることができます。

4.すべての組み合わせが許可されますが、推奨されません

たとえば、学生テーブルには、主キーである学生IDが含まれています。

優秀な生徒にはそれぞれ1対1のチューターを割り当てることができます。

メンターIDの列もあります

チューターを持つ学生は、互いに異なるチューターIDを持っています。

もちろん、一部の学生はチューターIDを持っていないこともできます

 

6、外部キー

1.テーブルから外部キー関係を設定する必要があります

2.スレーブテーブルの外部キー列のタイプは、メインテーブルの関連する列のタイプと一致しています。

3.メインテーブルの関連する列はキーである必要があり、通常は主キーまたは一意である必要があります

4.データを挿入するときは、最初にマスターテーブルを挿入してから、スレーブテーブルを挿入します。

5.データを削除するときは、最初にセカンダリテーブルを削除してから、プライマリテーブルを削除してください

おすすめ

転載: blog.csdn.net/Kukeoo/article/details/114275183