假如我们现在要建立三张表
学生表(students):
id
name
gender
科目表(subjects):
id
title
成绩表(scores):
id
score
stutid(外键)
subid(外键)
create database stu chartset=utf8;
use stu;
create table students(int id auto_increment primary key,name varchar(10) not null,gender bit default 1 )
create table subjects(int id auto_increment primary key,title varchar(10) not null)
create table scores(int id auto_increment primary key,score decimal(4,1) not null,stuid int,subid int,foreign key(stuid) references students(id),foreign key(subid) references subjects(id)
);
最有一个分数表的建立,也可以先建立表,然后在添加外键
建立表:create table scores(int id auto_increate primary key not null,score decimal(4,1) not null);
添加外键:alter table scores add constraint stu_scores foreign key(stuid) references students(id);
alter table scores add constraint sub_scores foreign key(subid) references subjects(id);
从建立数据库,到建立表,全部完成。外键的建立是重点。
不管是那种连接,join 左边的表 在头,右边的表在尾
我们想查询成绩,想要显示名字,科目,分数这样形式的显示(小明,语文,95)
select students.name , subjects.title , scores.score from scores inner join scores.stuid = students.id inner join scores.subid = subjects.id;
有关系的所有数据会显示,如果没有关系的 就不会显示
例如,小明没有语文成绩,则就不会显示小明语文成绩这一项
例子同上
select students.name , subjects.title , scores.score from scores left join scores.stuid = students.id left join scores.subid = subjects.id;
以左表为准,就算左表中有部分数据在右表中没有数据,也要显示出来,没有数据的地方填写null
使用right关键字同理。