javaWeb开发(二)——数据库表创建

从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



 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值