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プライマリテーブルのレコードはセカンダリテーブルによって参照され、削除できません。