MySql-詳細な制約

MySqlでテーブルを作成するときに、フィールドに制約を設定できます。これらの制約の一部を次に示します。

主キー制約(空にすることはできません)

テーブル内のレコードを一意に判別できます。つまり、フィールドを介して制約を追加できるため、フィールドが繰り返されたり空になったりすることはありません。
テーブル作成時の主キー制約の設定
CREATETABLEステートメントでは、主キーはPRIMARYKEYキーワードで指定さます。
列を定義するときに主キーを指定します。構文規則は次のとおりです。

--<字段名> <数据类型>  PRIMARY KEY  [默认值](默认值可设置可不设置)
create table student1(
    code int primary key, --加主键约束
      name varchar(50) not null unique,
    sex char(2)
    phone char(18),
    age int,
      enter_time date,
);

フィールドを選択して、主キー制約を設定します

主キーの制約は、テーブル内のデータの各行の識別子を一意に決定するために、テーブル内の主キーを定義することです。主キーは、テーブル内の列または複数の列の組み合わせにすることができ、複数の列で構成される主キーは複合主キーと呼ばれます。主キーは次のルールに準拠する必要があります。

テーブルごとに定義できる主キーは1つだけです。
主キー値は、テーブル内の各行を一意に識別する必要があり、NULLにすることはできません。つまり、テーブル内の2行のデータが同じ主キー値を持つことはできません。これが独自性の原則です。
列名は、複合主キーリストに1回だけ表示できます。
複合主キーに不要な余分な列を含めることはできません。複合主キーの列が削除されたときに、残りの列で構成される主キーが引き続き一意性の原則を満たしている場合、複合主キーは正しくありません。これが最小化の原則です。

主キーの役割を設定します

全員のIDカードなど、データの一意のIDとして。

1)通常、idなどの意味のないフィールドに追加されます

2)主キーフィールドの要件:値は繰り返されず、値は一意です。主キーを空にすることはできません

3)「シングルフィールド主キー」と「マルチフィールド主キー(複合主キー)」を設定し、複数のフィールドを使用して一意性を判断できます。

4)書き込み時にプライマリを省略できます

自己インクリメント制約

auto_increment(キーワード)管理値自動拡張

特徴:

(1)テーブルには自己インクリメントを維持する変数が1つしかないため、テーブルに持つことができる自己インクリメント制約は1つだけです。
(2)自動インクリメント制約の列は整数列のみにすることができます。
(3)自動インクリメント制約の列はキー列(主キー、一意キー、外部キー)である必要があります。
実際には、主キーキーは最も自動インクリメントされます

create table 表明(
    id int praimary key auto_increment,--自增约束
    name varchar(20)
);

テーブルが構築された後に増加します

alter table 表名 modify 字段名 数据类型 auto_increment;

自動インクリメントをキャンセルする方法

alter table 表名 modify 字段名 数据类型;

一意性制約(空にすることができます)

制約によって変更されたフィールドの値を繰り返すことはできません

フィールドの一意性制約の説明:

UNIQUE制約は、データベーステーブル内の各レコードを一意に識別します
(1)。一意制約は、レコードの一意性を保証できます。つまり、同じテーブル内で、同じフィールドの値が繰り返されることはありません。
(2)一意性制約のフィールドはNULLにすることができます。
(3)各データテーブルには、複数の一意の制約フィールドを含めることができます。

制約を追加する

alter table 表名 add unique(字段);

一意性制約を削除する

alter table 表名 drop index name 字段;

modife add

テーブルテーブル名の変更フィールドデータ型の一意の変更。

--建表时约束
create table 表名(
    id int,
    name varchar(20) ,
    unique(name)
);

create table 表名(
    id int,
    name varchar(20) unique
);

create table 表名(
    id int,
    name varchar,
    unique(id,name)//两个键在一起不重复就可以
);

概要:
1。テーブルを作成するときに制約を追加
できます。2。変更を使用できます。追加。
変更します。modif。
4.変更を削除します。落とす。

空でない制約

変更されたフィールドは空NULLにすることはできません
NOT NULL制約のフィールドは空にすることはできません

create table 表名(
id int,
name varchar(20) not null,//创建id和name字段 id可以为空 name不可
);

ここに画像の説明を挿入
ここに画像の説明を挿入

デフォルトの制約

つまり、フィールド値を挿入するときに、値が渡されない場合、デフォルト値の
defaultキーワードが使用されます。

create table 表名(
id int,
name varchar(20),
age int default 10--设置默认值为10
)

ここに画像の説明を挿入

–値が渡されない場合、デフォルト値が使用されます。
テーブル名(id、name)の値に挿入します(1、 'zhangsan');
ここに画像の説明を挿入
–値が渡される場合、デフォルト値は使用されません。
テーブル名に挿入values(1、 'zhangsan'、19);
ここに画像の説明を挿入

外部キー制約

親テーブル、子テーブル、
メインテーブル、および副テーブルの
外部キーキーワードの2つのテーブルが含まれます。
ここに画像の説明を挿入

--班级
create table classes(
    id int primary key,
    name varchar(20)
);

--学生表
create table students(
    id int primary key,
    name varchar(20),
    class_id int,
    forenign key(class_id references classes(id))
);



insert into calsses values(1,'一班');
insert into calsses values(2,'二班');
insert into calsses values(3,'三班');
insert into calsses values(4,'四班');

--向学生表(副表/子表)添加值
insert into students values(1001,'张三',1);
insert into students values(1002,'张三',2);
insert into students values(1003,'张三',3);
insert into students values(1004,'张三',4);

ここに画像の説明を挿入
–1メインテーブル(親テーブル)のクラスにないデータ値は、セカンダリテーブル(子テーブル)では使用できません。
–2プライマリテーブルのレコードはセカンダリテーブルによって参照され、削除できません。

おすすめ

転載: blog.csdn.net/m0_47605113/article/details/110640656