简介:
所以,我明天有一个面试,我正在尝试复习 SQL 和数据库。招聘启事称,他们想要的人具有:
- Experience with database design and development
- Strong knowledge of SQL
- Experience with SQL Server and/or Postgres
我已通读 Questions every good database SQL developer should be able to answer ,以及一堆用 SQL 和面试问题标记的问题。所以我意识到我需要了解 SELECT
, JOIN
和WHERE
.
问题:
为了在面试中取得好成绩,我需要了解哪些基本的 SQL、Postgres 和数据库概念?
关于交易和规范化,我需要了解哪些信息?
优化慢查询的一般方法有哪些?
我应该了解函数、关键字还是两者都了解?
最佳答案
这取决于该角色有多少是基于数据库开发和设计的。对于 SQL 语法,您还应该了解联接类型之间的差异,并能够使用 GROUP BY
、ORDER BY
、HAVING
以及可以与它们结合使用的聚合函数。
在性能监控方面,我会查看执行计划(不确定 Postgres 的等效项)以及它们如何提供提高性能的提示,以及使用 SQL Profiler 查看服务器实际执行的指令时间。
事务对于回滚事务(存储过程、临时查询等)非常有用,这些事务需要查询以某种方式完成以保持数据一致性。有些人(包括我自己)的做法是将任何对数据进行任何更改的语句放入自动回滚的事务中(BEGIN TRAN ... ROLLBACK TRAN
)以检查数据量是否正确在将更改推送到实时服务器之前进行操作。看一下 ACID 模型 - 原子性、一致性、隔离性、持久性。
标准化可能需要一些时间来完成,但只要了解并部分理解第三种形式的标准化,就可以开始。
优化可能是一个很大的话题。只需记住尝试使用基于集合的查询而不是基于行的查询来执行诸如 UPDATE 之类的操作(在 WHILE 循环中更新是基于行的更新的一个示例,但它可以有其用途)。
希望这会有所帮助。
关于SQL 和 Postgres 面试概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952026/