Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Comments on Why is SQL usually written in CAPS?
Parent
Why is SQL usually written in CAPS?
Why are keywords in SQL usually written in capital letters? For example:
SELECT * FROM person WHERE mood = 'happy';
My understanding is that SQL is case insensitive, so the case doesn't actually make a difference?
Post
SQL is actually quite old, dating to 1973. It is also probably an evolution of similar previous languages. Seems like in those days, upper case was favored in programming. See BASIC, COBOL, Fortran. Assembly from those days also seems to use uppercase. My guess would be that computers back then had limited resolution, and uppercase letters were easier to work with.
Some say that uppercase makes the text easier to parse. I haven't seen empirical evidence for this, and my own experience is that there's little difference but lowercase is more pleasant to read and type.
These days, I think syntax highlighting is much more effective as a reading aid. Once you do have highlighting, casing doesn't help much, and arguably makes it worse. These days, it's often possible to set things up so that you develop your SQL in your favorite advanced text editor, and most SQL platforms also have built in highlighting. But this was not always so (and color display was not always a given).
Notably, SQL is not entirely case insensitive. For keywords, casing usually doesn't matter. But for identifiers it can. Snowflake, for example, is case sensitive for identifiers -- you can even have tables FOO, Foo, foo all in the same schema. Snowflake gives the appearance that identifiers are not case sensitive because its default name resolution policy is to ignore casing variations, but you can see the case sensitive behavior if you quote them like select * from "FoO".

0 comment threads