数据库总结--MySQL常见面试题


1.根据部门号从高到低,工资从低到高列出员工的信息

select * from employee order by dept_id desc,salary




2.union和union all的区别
用union连接表后,重复的记录会被删除掉
用union all连接表后,记录会被完整保留  




3.分页语句(用sql语句直接分页,效率高)
    pageSize = 20;
    pageNo = 5;

select * from tbname limit (pageNo-1)*pageSize,pageSize




4.数据库三范式
第一范式  字段具有原子性,不可再分
第二范式  表中的每列都和主键相关
第三范式  每列都和主键列直接相关,而不是间接相关




5.用一条SQL语句查询出每门课都大于80分的学生姓名
name   kecheng   fenshu 
张三     语文       81
张三     数学       75
李四     语文       76
李四     数学       90
王五     语文       81
王五     数学       100
王五     英语       90


SELECT name,`subject`,score,sum(score>80) as jg from result GROUP BY `name` HAVING jg=(SELECT COUNT(DISTINCT rs.subject) from result rs );

另一种写法,高大人写的


SELECT
ttt.name
FROM
(select  count(r.name) c, r.name  from  result  r WHERE r.score >80 GROUP BY r.`name`) ttt
WHERE
ttt.c=(select  count(DISTINCT `subject`) from  result)





6.
自动编号   学号   姓名 课程编号 课程名称 分数
1        2005001  张三  0001      数学    69
2        2005002  李四  0001      数学    89
3        2005001  张三  0001      数学    69
删除除了自动编号不同,其他都相同的学生冗余信息


create TABLE tmp as SELECT s.code FROM student s 
GROUP BY s.`name`,s.kname,s.scode,s.kcode,s.score ;

DELETE  from student
where code not in (select code from tmp);

drop table tmp;




7.一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应四个球对,现在四个球对进行比赛,用一条sql语句显示所有可能的比赛组合.

SELECT * FROM 
department INNER JOIN department as a
ON
department.`name` <> (a.`name`)


8.列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序

SELECT name,deptid,salary  from employee where salary>(select avg(salary) from employee) GROUP BY deptid asc


写完后把自己的练习SQL导出一份传上来


  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值