几道经典的SQL面试题讲解

1 . 结果:SELECT class, COUNT(id) AS Stu_num FROM demo.stu_table GROUP BY class; 2 .结果:SELECT class, sex, COUNT(id) AS Stu_num FROM demo.stu_table GROUP BY class, sex; 3 . 结果:SELECT COUNT(id) AS Stu_num FROM demo.stu_table WHERE NAME LIKE '张%'; 4 . 结果:SELECT FROM demo.stu_table ORDER BY id ASC LIMIT 2 , 3 ; 5 、分数:从demo.score_table中选择分数小于6 0的; 6 . 分数:从 demo.score_table 中选择,其中分数小于 6 0,名称为“张%”; 7 . 结果:SELECT ID, NAME, COUNT(month_num) AS NUMBER FROM TRIAL GROUP BY ID, NAME HAVING COUNT(month_num) > 2 ; 8 . 结果:SELECT MAX(sales) A​​S max_sales, MIN(sales) A​​S min_sales, MAX(sales)
MIN(sales) A​​S cha, (MAX(sales)
MIN(sales)) / MIN(sales) A​​S 来自 demo_sale_table 的增长,其中year_num = 2 01 9 ; 9 . 结果: SELECT id, name FROM demo.score_info_table GROUP BY id, name HAVING MIN(score) > 7 0; 1 0、结果:SELECT Grade,Class FROM demo.stu_info_table GROUP BY Grade,Class ORDER BY Grade;
实用提醒:熟悉基本的SQL操作,练习不同场景下的查询语句。

sql优化面试怎么回答

你好,我给你讲讲SQL优化面试。
当我接受采访时,我感到非常疲倦。

就说去年,朋友去一家互联网公司面试DBA,面试官问他,你的订单单上每天有多少QPS?他说大约五千。
然后面试官问,如何优化SQL查询订单明细?
朋友说,首先你得看业务,你是否经常检查特定用户的请求。
如果是,请在用户 ID 上创建索引。
他当时说,去年他们的系统很慢,因为没有索引,每次查询都需要全表扫描,速度很慢。
添加索引后,查询速度立刻提升了至少三级。

面试官又问,JOIN呢?他说是的。
请求表和用户表在它们的系统中是递归相关的。
连接时,两个表都必须建立索引。
他还举了一个例子。
之前有SQL,JOIN时没有加索引。
结果,持续了一两分钟。
最后发现用户的表没有索引,速度慢得离谱。

后来面试官问他有没有想过对数据库和表进行分区?他当时很困惑,说他从来没有联系过我。
面试官说,你的表已经有近 2 000 万行。
再这样下去,服务器迟早会崩溃。
然后他意识到他必须考虑分割桌子。

如您所见,SQL优化必须结合实际场景。
您必须了解工作的性质和数据量,以便您可以开出适当的药物。
指标很关键,但并不是一切。
有时你必须考虑表结构,甚至子数据库和表。

我们就来说说今年吧。
我的另一个朋友,扫描他们的系统订单表很慢。
他先加了一个索引,然后发现还是慢。
后来检查执行计划,发现JOIN的时候出了问题。
于是他重写了SQL,将JOIN改为子查询,结果速度减半了。

正如你所看到的,改进必须一步一步地进行。
先添加索引,然后看执行计划,最后考虑重写SQL。
每一步都必须要做,不能跳过。
否则,虽然进步了一半,但趋势却是错误的。
这并不是浪费精力。

还有一件事,他们公司去年举办过一次活动订单量一下子增加了三倍。
结果系统崩溃了,我要等很长时间才能验证订单。
最后,他们发现数据库缓存设置不正确。
于是我赶紧加了一个缓存,用Redis来缓存热点数据。
结果,系统立刻就正常了。

如你所见,SQL优化确实需要综合考虑。
必须考虑索引、表结构、缓存、子数据库和表。
但这并不意味着越多越好,要根据实际情况而定。
比如你的表很小,数据量不大,可能就没有必要创建子库和表。
但如果桌子太大的话,肯定不行。

总之,面试的时候,你要把你的想法说清楚。
先说业务需求,然后我打算如何改进,最后说结果会怎样。
我就说我朋友去年去面试了。
当他说出这句话时,面试官感觉很专业,他终于拿到了offer。

您还应该关心什么?哦,对了,你还需要知道SQL的执行计划。
去年面试我朋友的时候,面试官让他分析一个复杂的SQL执行计划。
当时他一头雾水,面试官就打了他一巴掌。
后来他很快回来了解了实施方案,面试时感觉好多了。

如您所见,这确实取决于实践。
在练习变得完美之前,你需要编写更多的SQL并进行更多的分析。
我当年也是这样过来的,走过很多坎,终于慢慢明白了。
你现在还年轻。
如果你多练习,将来就会好的。

面试题目(sql)

嗯,这个问题我也知道一点。
上周,有客户问我有关数据库操作的问题。
他说他看到的第一个字段类型是日期类型,然后说不同的数据库操作日期数据的方式不同,感觉没有统一的SQL语句。

我告诉他这是事实,每个数据库都有自己的玩法。
例如查询语句为:
sql 请选择ID、姓名、地址、电话号码和登录日期 来自T先生 其中 ID 是(通过 NAME 从 T 组中选择 ID,且 count() > 1 ) 按名称排序;
该查询是查找名称重复的记录并按名称排序。
不同的数据库(例如 SQL Server 和 Access)可能有不同的方法来实现此功能。

另一个例子是删除语句。

sql 从 T 中删除 如果不包含 ID(从 T 组中按名称选择 min(id));
这是删除名称组不是最低ID的记录。
此操作也是特定于数据库的。

还有一个更新声明。

sql 更新T 设置 T.ADDRESS =(从 E 中选择 E.ADDRESS,其中 E.NAME = T.NAME), T.PHONE =(从 E 中选择 E.PHONE,其中 E.NAME = T.NAME);
这是将T表的ADDRESS和PHONE字段更新为等于E表相同NAME字段的ADDRESS和PHONE字段。
这个操作还要根据具体的数据库来确定。

所以嘉宾的问题其实只是想强调一点。
数据库操作实际上取决于具体的数据库类型。
没有数据库就无法谈论 SQL 语句。
正如你所说,不同的数据库可能会以不同的方式处理事情。
例如,SQL Server 可以使用 TOP,Oracle 可以使用 ROWNUM。

无论如何,这些细节很重要,对吧?我希望这些解释有帮助。
我还在思考这个问题,因为我每次使用数据库都会遇到各种小挑战。
无论如何,这取决于你。