Msql面试zongjie

前言

说到数据库每次面试都会在sql语句上吃大亏,考察的问题无非是去重,连表查询,求最值,平均值等,看起来很简单吧,但是写起来还真有点困难,不会sql面试会大打折扣。于是决定好好整理下sql,希望对大家有帮助

创建student和grade表

student:

grade:

基本语法总结

插入数据

insert into student values(1001 , '周星驰' , 18)

查询所有

select *from student

关键查询

select *from student where id = 1001 select *from student where id = 1001 or name = '周冬雨' or age select *from student where age>18 select *from student where age>18 and age < 22

排序查询

正向: select *from student order by age asc 逆向: select *from student order by age desc

最值查询最大 select max(age) from student 最小 select min(age) from student

平均

select avg(age) from student

统计条数

select count(*) from student

求和

select sum(age) from student

分页查询

select *from student limit 1,3

指定查询

select *from student where age in (22,21)

模糊查询

select *from student where name like '%周%' 去重查询

select distinct age from student select *from student group by age

修改数据

update student set name = "周zz" where id = 1002 update student set name = "周zz" age = 18 where id = 1002

删除数据

delete from student where id = 1006 and id = 1005

实战题

根据student和grade表

1.查询所有学生的数学成绩,显示学生姓名name, 分数, 由高到低

2.统计每个学生的总成绩,显示字段:姓名,总成绩

3.统计每个学生的总成绩(由于学生可能有重复名字),显示字段:学生id,姓名,总成绩

4.列出各门课程成绩最好的学生, 要求显示字段: 学号,姓名,科目,成绩

5.列出各门课程成绩最好的2位学生, 要求显示字段: 学号,姓名, 科目,成绩

1.select a.name ,b.score ,b.course from student 
a,grade b where a.id = b.id and course = '数学' order by score desc
2.select a.name ,sum(b.score) as sum_score 
from student a ,grade b where a.id =b.id group by name desc
3.
SELECT a.id, a.name, c.sum_score
from student a, 
(SELECT b.id, sum(b.score) as sum_score
FROM grade b
GROUP BY id
) c
WHERE a.id = c.id
ORDER BY sum_score
DESC

4.SELECT c.id , a.name, c.course, c.score
FROM grade c, student a,
(SELECT b.course, MAX(b.score) as max_score
FROM grade b
GROUP BY course) t
WHERE c.course = t.course
AND c.score = t.max_score
AND a.id = c.id
5.SELECT t1.id, a.name, t1.course,t1.score
FROM grade t1, student a
WHERE
  (SELECT count(*) FROM grade t2 
  WHERE t1.course=t2.course AND t2.score>t1.score
  )<2
and a.id = t1.id
ORDER BY t1.course,t1.score 
DESC

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。

本文分享自微信公众号 - 自动化测试 To share(gh_92d7607a3e04),作者:wencheng

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Pytest+Allure接口自动化

    pytest是一个成熟的全功能的Python测试工具,可以帮助你写出更好的程序。适合从简单的单元到复杂的功能测试

    wencheng
  • Python3 练习题 100例

    企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分...

    wencheng
  • TestDog-接口测试post实战

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。

    wencheng
  • Hive SQL50道练习题

    – 4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩: – (包括有成绩的和无成绩的)

    大数据技术与架构
  • hiveQL去重

    去重: 以id进行分组,然后取出每组的第一个 select * from (select *,row_number() over (partition by i...

    用户1225216
  • Hive快速入门系列(10) | Hive的查询语法

    注: 1、order by 会对输入做全局排序,因此只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。 2、sort by不是全局排序,其...

    不温卜火
  • Oracle数据库 拾漏补缺

    select语句的基本使用 可以查询需要的列,行,可以进行多表链接,连接查询。 ? select e.*,e.sal/30 from p_emp e selec...

    二十三年蝉
  • 小学生SQL50题

    已知有如下4张表: 学生表: student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 课程表: cou...

    大数据真好玩
  • 学习python第三天单行函数

    解答:会出现问题(报错了),出错原因,因为在执行代码的过程中对于employee_id,last_name这两列都有107条数据, 而department_i...

    hankleo
  • 大数据-Hive查询语法

    因此,如果分桶和sort字段是同一个时,此时, cluster by = distribute by + sort by 分桶表的作用:最大的作用是用来提高j...

    cwl_java

扫码关注云+社区

领取腾讯云代金券