mysql数据表的连接实例

mysql数据表之间的连接
   本例以student表和teacher表为例;
   student:id,name,birthday,sex,goal,tid (id为主键,tid为外键);
   teacher: tid,name,sex,birthday;
1. 显示student表中学生的id,name,教师编号,以及教师编号所对应的教师姓名;
   student表中和teacher表中name相同必须注明是具体哪个表中的;
   select id,student.name,student.tid,teacher.name from student,teacher
   where student.tid=teacher.tid;
   用别名连接也可以: 别名使用: (表名 别名);
   select e.id,e.name,e.tid,d.name from student e,teacher d where    e.tid=d.tid;
   99年出的自然连接:前面一种在mysql下用不了查出来是空的,后面一种能够查出来!
   select e.id, e.name,tid,d.name from student e natural join teacher d;
   select e.id,e.name, tid,d.name from student e join teacher d using(tid);
   现在常见的用法是:
   select e.id,e.name,e.tid,d.name from student e join teacher d    on e.tid=d.tid;
2. 成绩高于90的学生编号,姓名,成绩,老师编号,姓名;
   select e.id,e.name,e.goal,e.tid,d.name from student e ,teacher d where 
   e.tid=d.tid and e.goal>90;
   select id,student.name,goal,student.tid,teacher.name from student,teacher
   where student.tid=teacher.tid and goal>90;
   select e.id,e.name,e.goal,e.tid,d.name from student e join teacher d on
   e.tid=d.tid and e.goal>90;
3.非等值连接
   select e.id,e.name,e.goal,g.level from student e,grade g where e.goal       between g.lower and g.heiger;
4. 自连接
   select e.id,e.name,m.monitor,m.name from student e,student m where e.monitor=m.id 
   order m.monitor;
5. 外连接
   左连接:(等右叫左,等式右边有加号叫左连接!);
   select e.id,e.name,e.goal,e.tid,d.name from student e left join teacher d 
   on e.tid=d.tid;
   右连接:(等左叫右,等式左边有加号叫右连接!);
   select e.id,e.name,e.goal,e.tid,d.name from student e right join teacher  
   d on e.tid=d.tid;
   全连接:mysql 中并不支持全链接,但可以将两个连接合并,可以达到相同的效果
   即:左连接 union 右连接
   select e.id,e.name,e.goal,e.tid,d.name from student e left join teacher d
   on e.tid=d.tid
   union 
   select e.id,e.name,e.goal,e.tid,d.name from student e right join teacher    d on e.tid=d.tid;
6. 子查询:
    单行子查询:后面的查询必须只有一个结果集!
    select id,name,sex ,goal from student where goal>(select goal from
    student where name='赵铁刚');
     mysql中聚合函数min(),max(),avg(),sum(),count(),不能嵌套使用
    通过表链接,from里面加上查询子句
    查询每个老师下面的学生的平均成绩,平均成绩要求大于最低平均成绩;
    最低平均成绩查询:student1 为每个老师带的学生平均成绩表的别名;
    goal1为平均分的别名:
    select min(goal1) from (select avg(goal)goal1 from student group by tid)     student1;
    平局成绩大于最低平均成绩查询:(注意判断条件里面的tid不要在前面加上e.或d.
    会导致查询出错Unkonwn e.tid);
     select e.tid,d.name,avg(e.goal) from student e join teacher d on             e.tid=d.tid group by
     e.tid having avg(e.goal)>(select min(goal1) from (select avg(goal)           goal1 from student group by tid)  student1); 
    查询与赵铁刚分数相同的人
    select id,name,sex,goal from student where goal=(select goal from            student where name='赵铁刚');
    或者查询与赵铁刚同一个老师的同学;
    select id,name,sex,goal,tid from student where tid=(select tid from
    student where name='赵铁刚');
    多行子查询:any>(大于最小),any<(小于最大),all>(大于最大),all<(小于最小);
    查询分数比最低平均分数低的学生信息 (小于最小的问题)
    select id,name,sex,goal from student  where goal<(select
    min(goal1) from (select avg(goal) goal1 from student group by tid)        student1);
    用<all也可以
    select id,name,sex,goal from student where goal<all(select avg(goal)     from    student group by tid);
    查询不必最低平局分数还低的学生信息
    select id,name,sex,goal from student where goal>any(select avg(goal)     from student group by tid);
    查询不比最高平均分还高的学生信息
    select id,name,sex,goal from student where goal<any(select avg(goal) 
    from student group by tid);
    查询比最高分还高的的学生信息
    select id,name,sex,goal from student where goal>all(select avg(goal)     from student group by tid);
7.  limit用法
    获取的是前5行的数据
    select id,name,sex,goal from student limit 0,5;
8.  差集: 
    NOT IN 表示差集 
    SELECT * FROM table1 WHERE name NOT IN (SELECT name FROM table2);
    交集:
    SELECT * FROM table1 AS a JOIN table2 AS b ON a.name =b.name;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于一个MySQL数据分析项目的实例,我们可以以电子商务网站为例。 假设我们有一个电子商务网站,其中包含关用户、产品和的数据。我们想要分析这些数据以获取有关用户购买行为、产品销售情况和订单趋势等方面的洞察。 以下是一个可能的MySQL数据分析项目的实例: 1. 数据收集:首先,我们需要收集和整理与电子商务网站相关的数据。这可能包括用户信息(如姓名、年龄、性别、注册日期等)、产品信息(如名称、价格、类别等)以及订单信息(如订单号、购买日期、购买数量、付款方式等)。 2. 数据导入:将收集到的数据导入MySQL数据库中,创建相应的表格来存储用户、产品和订单数据。确保表格的结构和字段类型与数据的特征相匹配。 3. 数据清洗:在进行数据分析之前,我们需要对数据进行清洗和预处理,以确保数据的准确性和一致性。这可能涉及去除重复值、处理缺失值、处理异常值等操作。 4. 数据查询:使用MySQL的查询语句来提取所需的数据,以回答特定的问题。例如,我们可以查询最畅销的产品是什么,哪些用户购买了最多的产品,每月的订单数量趋势等等。 5. 数据分析:基于查询结果,进行数据分析以获取有关用户购买行为、产品销售情况和订单趋势等方面的洞察。可以使用MySQL的聚合函数、子查询、连接操作等功能来进行数据分析。 6. 数据可视化:将分析结果可视化,以便更直观地展示数据洞察。可以使用一些可视化工具(如Python的Matplotlib、Seaborn库)将查询结果绘制成图表或图形。 7. 报告撰写:根据分析结果,撰写数据分析报告,总结和解释所得到的洞察。报告应包括问题陈述、数据分析方法、结果解释和建议等内容。 这只是一个简单的MySQL数据分析项目实例,实际项目可能会更加复杂和具体。希望这个例子能给你提供一些启发,帮助你开始进行MySQL数据分析项目的实践!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值