1
4
GrokkingSQL与Grokking大多数编程语言有些不同,因为您需要对设置操作有一种感觉。尽管如此,要理解它并不比任何主要的编码模式更困难,比如从过程代码转移到OOP(我所看到的比函数编程简单得多)。 一个没有完全掌握SQL的人的标志是使用过程等,当设置操作变得简单和快速时,通过循环遍历记录来操作。人们经常会遇到这种情况。我发现一个好的符号是联合和有从句的适当使用——这两个都有点超出了初学者的陈述集。我见过由经验丰富的程序员编写的代码,这些代码显示了对SQL和相反的理解。 一个好的初学者思维练习,如果我第一个“啊哈”的时刻是在我理解交叉连接和限制连接之间的关系时。我认为在旧的SQL语法中,这个基本概念实际上更容易理解,例如,我们交叉联接表A和表B
我们得到了a和b的笛卡尔积,加入一个连接条件。
在概念上可以看作是处理笛卡尔积,然后在Where条件下过滤它。你可能会说得非常明显(尽管令人惊讶的是,有多少人第一次接触SQL并不了解笛卡尔产品是什么,这使得这个练习仅对这个概念而言是值得的),但这是一个有用的思路,一旦掌握了它,就可以更容易地理解自我连接和复杂的多表构造等内容。让你的头脑清醒过来。 |
2
5
关于SQL的一个好处是它的关键字比您遇到的许多编程语言都少。学习语法很容易,正如多夫所暗示的,这是很难的应用程序。 专业的过程编码人员成为专业的SQL编码人员需要多长时间? 这取决于程序员。我想说,您需要根据生产数据创建至少两个这些数据库对象:
所以,这不是时间问题,而是知识问题。 我想我知道这些是如何工作的,但是我现在正在处理1亿到8亿行集,以前的工作对于这些巨大的结果集来说是不够的。谢天谢地,现在很多数据库管理工具都好多了。这意味着我花更少的时间去抓我的头,更多的时间去编码。 我认为其中最困难的部分是特定于数据库的扩展。这些在数据库供应商之间都是不同的。我只使用过SQL Server、Oracle和Interbase/Firebird。过了一段时间,我放弃了追赶所有这些服务器的努力,只专注于SQL Server,因为这是我的Metro领域中最常见的。 |
3
4
从关系集的角度来思考需要大量的努力和理解。这种阻抗不匹配是ORM在SQL技能较低的公司中流行的一个重要原因。 |
4
2
我两者都认识。从专业角度讲,我对他们有很深的了解。从技术上讲,我觉得我经常只是触摸表面,几乎没有做一个酒窝。 最好的方法之一就是硬的方法,比如必须想出一些结果。如果你让我通过的话,其中一个智慧就是编码 T-SQL比理论更具经验。 基于。也就是说,在理论上,经常有一些难以选择的选项需要调整,但是如果运行实际的数据结果,那么很明显什么是合适的。 |
5
2
这取决于你对“专业”的定义。 如果你的意思是“可就业”,那么几周的深入学习/实践将使你领先于大多数从业者。规范化、基本关系理论、ansi-sql和至少一个主流DBMS提供者造成的变化,以及对平台的查询优化和索引功能的一些理解。 但是,在许多公司环境中(包括我的环境),除非您对SQL和关系数据库有合理的理解,否则很难声称您是任何一种开发专业人员;SQL是这些地方如何与它们的数据进行对话的。 我至少会选择Oracle、IBM DB2、MS SQL Server、MySQL、Postgres中的一种,它们都有免费的版本,可以用来启动学习过程。 虽然自学可以教会你很多,但如果你能得到资助,我也建议你参加课程:我花在学习实体建模上的那一周使我在过去的20年里一直处于良好的状态,而在平台特定的性能和优化技术方面的一门不错的实践课程将是一个有用的开端。 |