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:
parent
b8d8ddb2cd
commit
8dfd10336b
1 changed files with 43 additions and 26 deletions
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue