MySQLデータベース表間関係設定外部キーの作成


表の既存のフィールド設定外部キーをプライマリキーに設定できないようです定義時にプライマリキーが定義されていなくてもMultiple primary key definedのようにエラーが発生します
1.新しいフィールドalter tableテーブル名addフィールド名セグメントの説明を追加します.
alter table student add phone varchar(20);

2.外部キーalter tableテーブル名add constraintキー名foreign key(外部キー名)referencesプライマリテーブル名(プライマリテーブルプライマリキー名)の設定
alter table grade add constraint g_id foreign key(g_id) references school(id)

8.一対多の関係1.設計表1.クラステーブルcreate table classes(classid int primary key auto_increment,classname varchar(20));
2.学生表create table student 2(studentid int primary key auto_increment,studentname varchar(20)not null,classid int,foreign key(classid)references classes(classid))外部キーフォーマット:foreign key(外部キーフィールド名)referencesテーブル名(関連フィールド名)
   classid  id   ,    classes    classid  ,  

2.データ1を挿入する.クラステーブルinsert into classes values(0,“py 01”),(0,“py 02”),(0,“py 03”),(0,“java 01”),(0,“h 501”),(0,“ui 01”),(0,“java 02”),(0,“h 502”),(0,“ui 02”),(2.学生表insert into student 2 values(0、「張三」、4);Insert into student 2 values(0,「李四」,1);insert into student 2 values(0,「王五」,1);Insert into student 2 values(0,「趙六」,2);Insert into student 2 values(0,「田七」,1);
注意:関連付けられた外部キーが、関連付けられたテーブルに外部キーの値が存在しない場合、error:insert into student 2 values(0,「太った8」,11)の挿入に成功しません.
3.マルチテーブルクエリデータ1.需要:すべての学生の名前とそのクラスを表示しますか?例:select student 2.studentname,classes.classname from student2,classes where student2.classid = classes.classid; 注意:1.表名フィールド名は、対応するテーブルのフィールドに指定できます.複数のテーブルがクエリーを結合するときに2を使用します.複数のテーブルがクエリーを結合する場合、fromの後ろに複数のテーブルを付けることができます.需要2:py 01クラスのすべての学生を展示しますか?select student2.studentname,classes.classname from student2,classes where student2.classid = classes.classid and classes.classid=1; 3.ニーズ3:すべての学生のすべての情報を表示しますか?select student2.,classes. from student2,classes where student2.classid = classes.classid; 4.接続関係クエリー1.内部接続inner join 1.すべての学生と名前を調べますか?select student2.studentname,classes.classname from student2 inner join classes on student2.classid = classes.classid; 2.左外接続left join select student 2.studentname,classes.classname from classes left join student2 on student2.classid = classes.classid; 3.右外部接続right join
4.  :  select .... from  1 inner/left/right join  2  on    ;

9.多対多1.設計表1.学生表create table student 3(studentid int primary key auto_increment,studentname varchar(20)not null);2.カリキュラム表create table courses(coursesid int primary key auto_increment,coursesname varchar(20);3.学生-カリキュラムは選択科目表create table elective(studentid int,coursesid int,primary key(studentid,coursesid)、foreign key(studentid)references student 3(studentid)、foreign key(coursesid)references courses(coursesid))である.
選択科目
2.挿入データ挿入学生:insert into student 3 values(0、「張三」);Insert into student 3 values(0,「李四」);insert into student 3 values(0,「王五」);insert into student 3 values(0,「趙六」);Insert into student 3 values(0,「田七」);
コースの挿入:
insert into courses values(0,“python”); insert into courses values(0,“java”); insert into courses values(0,“h5”); insert into courses values(0,“ui”);
選択科目データの挿入:insert into elective values(1,1);
insert into elective values(1,2); insert into elective values(1,4); insert into elective values(3,1); insert into elective values(3,4);
insert into elective values(1,1); 注意:外部キーが関連付けられていて、外部キーの値が関連付けられたテーブルに存在しない場合は、正常に挿入できません.
3.照会データ照会学生の選択科目select student3.*,courses.* from student3,courses,elective where student3.studentid = elective.studentid and courses.coursesid = elective.coursesid;
mysqlデータベース.マルチテーブルクエリー時select...fromテーブル1 inner/left/right joinテーブル2 on条件;クラス表学生表inner join内連があると仮定します.クエリー・データは、2つのテーブルが重なる部分です.すなわち、学生テーブルの外部キーがクラステーブルの部分に関連付けられている.一方、学生テーブルの外部キーが空の部分クラステーブルが関連付けられていない部分はクエリーライブラリleft out join/left join左外部接続として扱われず、テーブル1に外部キーが関連付けられていなくてもクエリーライブラリとして扱われます.right out join/right join右外接続テーブル2のデータをクエリーライブラリとして使用します.左外と接続する.