1
0
Fork 0
mirror of https://github.com/treffynnon/sqlstyle.guide.git synced 2025-03-09 12:49:51 -05:00

Indentation rules

This commit is contained in:
apurvis@lumoslabs.com 2016-05-25 07:26:20 +08:00
parent b8d8ddb2cd
commit 8dfd10336b

View file

@ -5,7 +5,7 @@
These are guidelines to help you write SQL queries that will be easier to read.
Remember that even if you hate a given style at first, generally speaking it is
far more important that we have _any_ agreed upon style than that we all like it,
far more important that we have _any_ agreed upon style than that we all like it,
and furthermore the odds are that you will eventually learn to like it once you
start to follow it.
@ -163,7 +163,10 @@ Although not exhaustive always include spaces:
comma or semicolon.
```sql
SELECT a.title, a.release_date, a.recording_date
SELECT
a.title,
a.release_date,
a.recording_date
FROM albums AS a
WHERE a.title = 'Charcoal Lane'
OR a.title = 'The New Danger';
@ -199,8 +202,8 @@ WHERE title = 'The New Danger';
```sql
SELECT a.title,
a.release_date,
a.recording_date,
a.release_date,
a.recording_date,
a.production_date
FROM albums AS a
WHERE a.title = 'Charcoal Lane'
@ -213,14 +216,24 @@ To ensure that SQL is readable it is important that standards of indentation
are followed.
**ONLY** the fundamental keywords - `SELECT`, `FROM`, `WHERE`, `GROUP BY`, `HAVING`, `LIMIT`,
and `ORDER BY`should be fully left justified. Other clauses should be indented to the end of
that keyword.
and `ORDER BY`should be fully left justified.
For single `SELECT`s, you can use the single line form:
```sql
SELECT first_name,
last_name,
is_still_tippin_on_four_fours,
is_still_wrapped_in_four_vogues
SELECT first_name
FROM rappers
```
If you are `SELECT`ing more than one column, place all selects on their own line indented 2
spaces in a block after the `SELECT` keyword.
```sql
SELECT
first_name,
last_name,
is_still_tippin_on_four_fours,
is_still_wrapped_in_four_vogues
FROM rappers
WHERE first_name = 'Mike'
AND last_name = 'Jones'
@ -228,6 +241,7 @@ WHERE first_name = 'Mike'
This allows the reader to quickly scan for the important building blocks of the query.
#### Joins
Joins should be indented 2 spaces right from the `FROM` keyword
@ -277,27 +291,30 @@ FROM my_tmp_table
#### Sub-queries
In PostgreSQL you should probably be doing subqueries with `WITH` clauses.
In PostgreSQL you should be doing subqueries with `WITH` clauses and avoiding the use of inline
subqueries.
Sub-queries should be left aligned 2 spaces to the right of the opening parentheses and then
laid out using the same style as a `WITH` statement w/r/t parentheses.
In MySQL or other query engines that do not support `WITH`, sub-queries should be left aligned 2
spaces to the right of the opening parentheses and then laid out using the same style as a `WITH`
statement w/r/t parentheses.
```sql
SELECT r.last_name,
(
SELECT MAX(YEAR(championship_date))
FROM champions AS c
WHERE c.last_name = r.last_name
AND c.confirmed = 'Y'
) AS last_championship_year
SELECT
r.last_name,
(
SELECT MAX(YEAR(championship_date))
FROM champions AS c
WHERE c.last_name = r.last_name
AND c.confirmed = 'Y'
) AS last_championship_year
FROM riders AS r
WHERE r.last_name IN
(
SELECT c.last_name
FROM champions AS c
WHERE YEAR(championship_date) > '2008'
AND c.confirmed = 'Y'
)
(
SELECT c.last_name
FROM champions AS c
WHERE YEAR(championship_date) > '2008'
AND c.confirmed = 'Y'
)
```
#### Case statements (PostreSQL)