【面试】数据库相关

1.有如下数据,怎么查询显示结果为 张三, 北京 河北, 12:00

name      address     arrive_time 
张三       北京        10:00  
张三       河北        12:00  

SELECT name, GROUP_CONCAT(DISTINCT address SEPARATOR ' ') AS address, max(arrive_time) AS arrive_time
FROM mytable
GROUP BY name;

2.如何查询重复数据?

SELECT * FROM student GROUP BY name HAVING count(name ) > 1

3.查询结果如何去重?

distinct关键字或者group by

4.Oracle数据库分页查询

select a1.* 
from (select student.*,rownum rn from student where rownum <=5) a1 
where rn >=3;

5.delete、truncate、drop都是删除语句,他们的区别是什么

在速度上,一般来说,drop> truncate > delete
delete用于删除部分数据
truncate 删除整个表然后重新创建这个表(相当于清空了表数据)
drop 摧毁整个表

6.数据库主键和外键作用

主键是表格里的(一个或多个)字段,只有一个,用来定义表格里的行值
外键是一个用来建立两个表格之间关系的约束,可以有多个

7.where和having的区别

Where子句中不能使用聚合函数 而Having子句中可以 
having位于where后面

8.union和union all的区别

二者都是合并查询结果集,UNION用的比较多
union all是直接连接,取到得是所有值,记录可能有重复   
union 是取唯一值,记录没有重复   

9.数据库事务正确执行的四个基本要素是什么

原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)

10.有如下数据,查询出每门课都大于80分的学生姓名

name    class    score
蔡徐坤    语文    80
蔡徐坤    英语    55
吴亦凡    语文    100
吴亦凡    英语    90
邓紫棋    英语    85
邓紫棋    数学    70
邓紫棋    语文    95

select name from table group by name having min(score)>80

11.数据库优化策略

a.多条件查询时将更精准的条件放在前面
b.尽量用in代替or
c.尽量查具体字段而不是无脑查*
d.当只需要一条结果时可以在查询语句后面加一句rownum = 1或者limit 1
e.选用合适的数据库引擎
f.创建合适的索引


    原文作者:剑锋所指
    原文地址: https://segmentfault.com/a/1190000019085116
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞