【面试】数据库相关

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数据库分页查询code

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的区别ci

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

8.union和union all的区别数学

两者都是合并查询结果集,UNION用的比较多
union all是直接链接,取到得是全部值,记录可能有重复   
union 是取惟一值,记录没有重复

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

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

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

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.建立合适的索引
相关文章
相关标签/搜索