創建三張表
1、學生表
mysql> create table students( sid int primary key auto_increment, sname varchar(100) not null, age int, address varchar(100), courseid int, constraint fk_stu_cid foreign key(courseid) references course(cid) );
mysql> insert into students(sname,age,address,courseid) values('小海子',23,'北京',1003); mysql> insert into students(sname,age,address,courseid) values('小沈陽',45,'沈陽',1003); mysql> insert into students(sname,age,address,courseid) values('劉陽',25,'山東',1002); mysql> insert into students(sname,age,address,courseid) values('甘能',22,'廣東',1002);
mysql> select * from students; +-----+--------+-----+---------+----------+ | sid | sname | age | address | courseid | +-----+--------+-----+---------+----------+ | 1 | 小海子 | 23 | 北京 | 1003 | | 2 | 小沈陽 | 45 | 沈陽 | 1003 | | 3 | 劉陽 | 25 | 山東 | 1002 | | 4 | 甘能 | 22 | 廣東 | 1002 | +-----+--------+-----+---------+----------+
2、老師表
mysql> create table teacher( -> tid int(5) primary key auto_increment, -> tname varchar(100) not null, -> age int(4), -> address varchar(100), -> courseid int -> )engine=innodb auto_increment=101;
mysql> insert into teacher(tname,age,address) values('馬雲',50,'杭州'); mysql> insert into teacher(tname,age,address) values('趙本山',52,'沈陽'); mysql> insert into teacher(tname,age,address) values('劉強東',45,'北京');
mysql> select* from teacher; +-----+--------+-----+---------+----------+ | tid | tname | age | address | courseid | +-----+--------+-----+---------+----------+ | 101 | 馬雲 | 50 | 杭州 | NULL | | 102 | 趙本山 | 52 | 沈陽 | NULL | | 103 | 劉強東 | 45 | 北京 | NULL | +-----+--------+-----+---------+----------+
3、課程表
mysql> create table course( -> cid int primary key auto_increment, -> cname varchar(100) not null, -> xuefen int, -> tid int, -> constraint fk_course_tid foreign key(tid) -> references teacher(tid) -> )engine=innodb auto_increment = 1001;
mysql> insert into course(cname,xuefen,tid) values('C++',3,'101'); mysql> insert into course(cname,xuefen,tid) values('java',5,'101'); mysql> insert into course(cname,xuefen,tid) values('相聲表演',2,'102'); mysql> insert into course(cname,xuefen,tid) values('電子商務',3,'103');
mysql> select * from course; +------+----------+--------+-----+ | cid | cname | xuefen | tid | +------+----------+--------+-----+ | 1001 | C++ | 3 | 101 | | 1002 | java | 5 | 101 | | 1003 | 相聲表演 | 2 | 102 | | 1004 | 電子商務 | 3 | 103 | +------+----------+--------+-----+
學生修了哪些課程
mysql> select s.sname,c.cid,c.cname -> from students s left join course c -> on s.courseid = c.cid; +--------+------+----------+ | sname | cid | cname | +--------+------+----------+ | 劉陽 | 1002 | java | | 甘能 | 1002 | java | | 小海子 | 1003 | 相聲表演 | | 小沈陽 | 1003 | 相聲表演 | +--------+------+----------+
學生修的課程有哪些老師教
mysql> select s.sname,c.cid,c.cname,t.tname -> from students s,course c,teacher t -> where s.courseid = c.cid and c.tid = t.tid; +--------+------+----------+--------+ | sname | cid | cname | tname | +--------+------+----------+--------+ | 劉陽 | 1002 | java | 馬雲 | | 甘能 | 1002 | java | 馬雲 | | 小海子 | 1003 | 相聲表演 | 趙本山 | | 小沈陽 | 1003 | 相聲表演 | 趙本山 | +--------+------+----------+--------+
或者
mysql> select s.sname,c.cid,c.cname,t.tname -> from students s inner join course c inner join teacher t -> on s.courseid = c.cid and c.tid = t.tid; +--------+------+----------+--------+ | sname | cid | cname | tname | +--------+------+----------+--------+ | 劉陽 | 1002 | java | 馬雲 | | 甘能 | 1002 | java | 馬雲 | | 小海子 | 1003 | 相聲表演 | 趙本山 | | 小沈陽 | 1003 | 相聲表演 | 趙本山 | +--------+------+----------+--------+
其他關聯不行。left join ,right join
2018年1月17日01:07:40