Hacker Newsnew | comments | leaders | jobs | submitlogin
Awesome SQL blog (explainextended.com)
154 points by niklas 80 days ago | 20 comments


11 points by sivers 79 days ago | link

Fans of this will probably also like Joe Celko's SQL for Smarties. ISBN: 0123693799

It's unfortunate that a lot of new programmers are relying on their framework's ORM to abstract the SQL away from them, weakening their understanding of it.

-----

17 points by quassnoi 79 days ago | link

Hi, I'm the author of the blog.

Actually, most askers (both on Stack Overflow and on the site) are either the ORM developers or the people who need to deal with huge volumes of data (financial reports etc).

As with every other abstracting tool, it's perfectly OK to rely on an ORM — as long as you know which load can it handle and under which carpet the service hatch is.

-----

6 points by kingkilr 79 days ago | link

I think that's a little unfair to people using ORMs. Obviously I'd hope people don't want to avoid knowledge, but I'll be damned if I want to write SQL, it's not fun for me. That being said I contribute to the ORM of my framework of choice, if I write the solution to my problem once I'll never have to do it again. I think it's a bit like complaining that C programs are trying to abstract away assembly. Yes they are, but as long as they have some level understanding of how machines work they'll be ok, and a hell of a lot more productive.

-----

3 points by samuel 79 days ago | link

Personally I don't get ORM's. May be it's because the only I have had to deal with was Hibernate, and seemed to me as an innecesary layer of complexity and bloat, and objects and relations sometimes doesn't map nicely. If you want to persist objects, use an object datastore in the first place, not a relational one.

And, what's wrong with SQL? It's simple, powerful, widely known and deployed, and cool(declarative programming, dude!).

I've read a some introductory examples about distinct ORM's and just don't get it. Where's the gain? Apart from database independence(which I don't think it's even desirable in most cases, may be Tom Kyte's books have brainwashed me irremediably), can't see one. How an ORM makes you more productive?

-----

2 points by gaius 78 days ago | link

The people who hate SQL don't know about any of the cool stuff it can do as they've only ever used MySQL's very basic implementation.

-----

1 point by JoachimSchipper 79 days ago | link

Yes, but C maps pretty cleanly to the underlying assembly, whereas there is a very large gap between (proper, nontrivial) SQL and the typical ORM.

Perhaps "Haskell is trying to abstract away assembly" is a better comparison.

-----

3 points by pradocchia 79 days ago | link

I like this style better than SQL for Smarties. Celko tries to stick with the ANSI standard, which is fine, but I much to prefer to know how to get the most out of each platform.

Like here, http://explainextended.com/2009/09/, he covers adjacency list vs. nested sets on MySQL, Postgres, Oracle and SQL Server. Different platforms, different optimal solutions. The man knows his database internals.

-----

3 points by notauser 79 days ago | link

I'm good enough at SQL to know about normal forms and how to write recursive queries.

I also know that there is very little value in me writing a new set of CRUD queries for a low-load site when someone else has written a well-debugged interface for me.

-----

1 point by artsrc 78 days ago | link

Are both a full featured object model, and an SQL database really essential for that kind of site?

I essentially share the same SQL, OO, ORM hammer, as you, so I would likely use the same solution.

It may be that all 3 complex technologies, the database, the object model, and the ORM are unwarranted by the low load/crud problem.

-----

1 point by artsrc 78 days ago | link

Maintaining a model feature in three places, the SQL, the class and a manual mapping, violates the basic principles of database modelling (store facts once), at the meta level (rather than the data level).

ORM is a flawed attempt to remedy this. It is flawed because client/server sql databases create a distributed system, and distribution is hard to abstract away.

Other solutions solution are to ditch the SQL model (something like bigtable, db4o or Gemstone?), or to ditch the object model (something like PHP or Access?).

-----

5 points by russell 79 days ago | link

It's an excellent cookbook of useful SQL queries with well written explanations. I've used SQL for decades, but after reading a few articles, it was obvious that I could learn some new tricks. The articles are bite sized an tasty.

-----

4 points by quassnoi 79 days ago | link

Thanks!

-----

0 points by leandrod 79 days ago | link

Sorry, it is wrong. SQL is not baſed on ſets, but bags, which are quite different and more complicated. And, by the way, CTEs are a feature of ISO SQL, not only of MS SQL Server.

Finally, entity‐relationſhip is not terribly practical as a model, but as diagrammiŋ.

-----

12 points by jacobolus 79 days ago | link

(It’s off-topic, but why the long esses and engs? The latter are not letters in English, and the former haven’t really been used in at least a century.)

-----

2 points by pradocchia 79 days ago | link

This is true, SQL does not require everything to be a set, strictly speaking, but internally many platforms append a unique row identifier to bags, so that they can be processed as sets.

I often wish platforms would expose their internal calculus in a separate syntax, so we wouldn't have to work through the SQL translation layer. Algebraic operators would be nice too.

-----

1 point by leandrod 79 days ago | link

Ðat may be true, but what platforms do internally ſhould not affect ðeir flavours of SQL.

In oðer words, internal implementation as ſets do not make SQL ſet‐baſed.

-----

1 point by pradocchia 79 days ago | link

No argument there (ðere?), SQL is an unfortunate language.

-----

1 point by cturner 79 days ago | link

Do you have any thoughts about why there has been no challenge to the SQL syntax? We can easily imagine notations based on relational algebra and relational calculus emerging that could be interpreted at the same levels of an RDBMS as SQL, yet I've not seen anyone attempt it. A good PhD topic for someone?

-----

2 points by shaunxcode 78 days ago | link

APL? (seriously)

-----

2 points by encoderer 79 days ago | link

SQL was designed to make data accessible to non-programmers. That's why it lacks more advanced/obscure syntax.

And the reason why it's stuck is the same story that you can tell over and over about standards.

-----




Lists | RSS | Bookmarklet | Guidelines | FAQ | News News | Feature Requests | Y Combinator | Apply | Library

Analytics by Mixpanel