从ER图到 数据库表
1.每个实体,对应一个数据库表
表中的字段:实体的属性+ id字段作为唯一标识\主键(自增/32位随机数)
2.联系
(1)1:n : 在n端实体对应的表中增加一个外键字段,指向1端对应的表
(2)n:m 新增加一个表,里面包含
id,以及 每个实体对应的外键字段,联系的属性
表的个数 = ER图上实体的个数 + n:m联系的个数
三、SQL语句
1.单表查询
select字段列表
From 表名
Where 条件
Order by
2.多表联合查询
select 表1.字段列表,表2.字段雷彪
From 表1 联合(join)表2
on 表1.字段名 = 表2.字段名 and 其他条件
order by
Eg1: 查询学生信息,列出如下字段
学号 姓名 所在班级名称
Select tb_student.*, tb_class.name as class_name
From tb_student,tb_class
Where tb_student.class_id = tb_class.id
带条件的联合查询
Eg2 查询姓朱的学生信息,列出如下字段
学号 姓名 所在班级名称
SELECT tb_student.*, tb_class.name AS class_name
FROM tb_student, tb_class
WHERE tb_student.class_id = tb_class.id AND tb_student.name LIKE '魏%';
带条件的联合查询 ==>先按条件缩小范围 再联合
Eg2: 查询 姓“魏”的学生信息,列出如下字段
学号 姓名 所在班级名称
Select t1.*, tb_class.name as class_name
From ( select * from tb_student
Where name like '魏%'
)as t1 ,tb_class
Where t1.class_id = tb_class.id
多表深度联合查询
Eg3: 查询 所学专业名称中含有 工程 两个字 的学生信息
Select *
From tb_student
Where class_id in (
Select id
From tb_class
Where major_id in(
Select id
From tb_major
Where name like '%工程%'
)
)
3.统计 利用count,sum ,avg,max,min等函数进行统计
Group by
Order by
以及 将统计结果进行联合
Eg4: 列出每个学生的平均分,列出学生姓名 平均分数
Select t1.*, tb_student.name
From (
Select student_id, avg(point) as avg_point
From tb_score
Group by student_id
) as t1, tb_student
Where t1.student_id = tb_student.id
Eg4: 列出平均分排名前2的学生信息,列出学生姓名 平均分数
Select t1.*, tb_student.name
From
(
Select student_id,avg(point) as avg_point
From tb_score
Group by student_id
Order by avg(point) desc
Limit 0,2
)as t1, tb_student
Where t1.student_id = tb_student.id