MySQL学习笔记之基础操作(三) - 海筒研习社.SeaSilo.CN

/ 0评 / 0

1. 外键约束和表关联关系

2. 表关联关系

​ 认识数据之间的依赖关系是更加合理创建数据表关联性的前提。常见表数据关系有一对多,多对多:

3. E-R模型图

4. 表连接

综合查询练习
•
create table class(cid int primary key auto_increment,
                  caption char(4) not null);
                  
create table teacher(tid int primary key auto_increment,
                    tname varchar(32) not null);
                    
create table student(sid int primary key auto_increment,
                    sname varchar(32) not null,
                    gender enum('male','female','others') not null default 'male',
                    class_id int,
                    foreign key(class_id) references class(cid)
                    on update cascade
                    on delete cascade);
                    
create table course(cid int primary key auto_increment,
                   cname varchar(16) not null,
                   teacher_id int,
                   foreign key(teacher_id) references teacher(tid)
                   on update cascade
                   on delete cascade);
                   
create table score(sid int primary key auto_increment,
                  student_id int,
                  course_id int,
                  number int(3) not null,
                  foreign key(student_id) references student(sid)
                   on update cascade
                   on delete cascade,
                   foreign key(course_id) references course(cid)
                   on update cascade
                   on delete cascade);
                   
数据插入过程省略...
•
1. 查询每位老师教授的课程数量
select tname,count(teacher_id) from
teacher left join course on course.teacher_id=teacher.tid
group by tname;
2. 查询学生的信息及学生所在班级信息
select sid,sname,gender,caption from student inner join class on class_id=cid;
3. 查询各科成绩最高和最低的分数,形式 : 课程ID  课程名称 最高分  最低分
select course.id as 课程ID,cname,max(number),min(number) from
course left join score
on course_id=cid
group by cname,course.id;
4. 查询平均成绩大于85分的所有学生学号,姓名和平均成绩
select student.sid,sname,avg(number) from
student left join score
on score.student_id=student.sid
group by sname,student.sid having avg(number)>85;
5. 查询课程编号为2且课程成绩在80以上的学生学号和姓名
select student.sid,sname
from student left join score
on score.student_id=student.sid
where course_id=2 and score.number>80;
6. 查询各个课程及相应的选修人数
select score.course_id,cname,count(score.course_id)
from course left join score
on course.cid=score.course_id
group by score.course_id,cname;

发表评论

邮箱地址不会被公开。 必填项已用*标注