mirror of
https://github.com/treffynnon/sqlstyle.guide.git
synced 2025-03-09 12:49:51 -05:00
Add footer links, some spelling corrections, etc.W
This commit is contained in:
parent
7cae26db5b
commit
f5343cb501
5 changed files with 100 additions and 32 deletions
|
@ -1,7 +1,41 @@
|
||||||
<footer class="foot">
|
<footer class="foot wrap">
|
||||||
<p>© Copyright Simon Holywell 2015</p>
|
<hr/>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons Licence" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">SQL style guide</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="https://www.simonholywell.com" property="cc:attributionName" rel="cc:attributionURL">Simon Holywell</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.<br />Based on a work at <a xmlns:dct="http://purl.org/dc/terms/" href="http://www.sqlstyle.guide" rel="dct:source">http://www.sqlstyle.guide</a>.
|
<span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">
|
||||||
|
SQL style guide
|
||||||
|
</span> by
|
||||||
|
<a xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
href="https://www.simonholywell.com"
|
||||||
|
property="cc:attributionName"
|
||||||
|
rel="cc:attributionURL">
|
||||||
|
Simon Holywell
|
||||||
|
</a> is licensed under a
|
||||||
|
<a rel="license"
|
||||||
|
href="http://creativecommons.org/licenses/by-sa/4.0/">
|
||||||
|
Creative CommonsAttribution-ShareAlike 4.0 International License
|
||||||
|
</a>.<br />Based on a work at
|
||||||
|
<a xmlns:dct="http://purl.org/dc/terms/"
|
||||||
|
href="http://www.sqlstyle.guide"
|
||||||
|
rel="dct:source">
|
||||||
|
http://www.sqlstyle.guide
|
||||||
|
</a>.
|
||||||
</p>
|
</p>
|
||||||
|
<div class="buttons">
|
||||||
|
<ul class="quick-links">
|
||||||
|
<li>
|
||||||
|
<iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=treffynnon&repo=sqlstyle.guide&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="112px" height="20px"></iframe>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=treffynnon&repo=sqlstyle.guide&type=fork&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="98px" height="20px"></iframe>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="quick-links">
|
||||||
|
<li class="follow-btn">
|
||||||
|
<a href="https://twitter.com/treffynnon" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @treffynnon</a>
|
||||||
|
</li>
|
||||||
|
<li class="tweet-btn">
|
||||||
|
<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://www.sqlstyle.guide" data-text="SQL style guide by @treffynnon" data-dnt="true">Tweet</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</footer>
|
</footer>
|
|
@ -4,8 +4,11 @@
|
||||||
<header class="top">
|
<header class="top">
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<h1>SQL Style Guide</h1>
|
<h1>SQL Style Guide</h1>
|
||||||
<p class="author">by <a href="https://www.simonholywell.com">Simon Holywell</a></p>
|
<p class="author">by
|
||||||
|
<a href="https://www.simonholywell.com">Simon Holywell</a> ·
|
||||||
|
<a href="https://twitter.com/treffynnon">@Treffynnon</a>
|
||||||
|
</p>
|
||||||
<p class="twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="http://www.sqlstyle.guide" data-text="SQL style guide by @treffynnon" data-size="large" data-dnt="true">Tweet</a>
|
<p class="twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="http://www.sqlstyle.guide" data-text="SQL style guide by @treffynnon" data-size="large" data-dnt="true">Tweet</a>
|
||||||
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script></p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
|
@ -14,7 +14,7 @@ contains anecdotes and reasoning behind each rule as thoughtful prose.
|
||||||
|
|
||||||
It is easy to include this guide in [Markdown format][dl-md] as a part of a
|
It is easy to include this guide in [Markdown format][dl-md] as a part of a
|
||||||
project's code base or reference it here for anyone on the project to freely
|
project's code base or reference it here for anyone on the project to freely
|
||||||
read—much harder with a physical book
|
read—much harder with a physical book.
|
||||||
|
|
||||||
SQL style guide by [Simon Holywell][simon] is licensed under a [Creative Commons
|
SQL style guide by [Simon Holywell][simon] is licensed under a [Creative Commons
|
||||||
Attribution-ShareAlike 4.0 International License][licence].
|
Attribution-ShareAlike 4.0 International License][licence].
|
||||||
|
@ -25,12 +25,12 @@ Based on a work at [http://www.sqlstyle.guide][self].
|
||||||
### Do
|
### Do
|
||||||
|
|
||||||
* Use consistent and descriptive identifiers and names.
|
* Use consistent and descriptive identifiers and names.
|
||||||
* Make judicious use of white space and indentation to make code easer to read.
|
* Make judicious use of white space and indentation to make code easier to read.
|
||||||
* Store [ISO-8601][iso-8601] compliant time and date information
|
* Store [ISO-8601][iso-8601] compliant time and date information
|
||||||
`YYYY-MM-DD HH:MM:SS.SSSSS`.
|
(`YYYY-MM-DD HH:MM:SS.SSSSS`).
|
||||||
* Try to use only standard SQL functions instead of vendor specific functions for
|
* Try to use only standard SQL functions instead of vendor specific functions for
|
||||||
reasons of portability.
|
reasons of portability.
|
||||||
* Keep code succinct and devoid of redundant SQL—unnecessary quoting or
|
* Keep code succinct and devoid of redundant SQL—such as unnecessary quoting or
|
||||||
parentheses or `WHERE` clauses that can otherwise be derived.
|
parentheses or `WHERE` clauses that can otherwise be derived.
|
||||||
* Include comments in SQL code where necessary. Use the C style opening `/*` and
|
* Include comments in SQL code where necessary. Use the C style opening `/*` and
|
||||||
closing `*/` where possible otherwise preceed comments with `--` and finish
|
closing `*/` where possible otherwise preceed comments with `--` and finish
|
||||||
|
@ -40,7 +40,8 @@ Based on a work at [http://www.sqlstyle.guide][self].
|
||||||
|
|
||||||
* CamelCase—it is difficult to scan quickly.
|
* CamelCase—it is difficult to scan quickly.
|
||||||
* Descriptive prefixes or Hungarian notation such as `sp_` or `tbl`.
|
* Descriptive prefixes or Hungarian notation such as `sp_` or `tbl`.
|
||||||
* Plurals—use the more natural collective term instead.
|
* Plurals—use the more natural collective term where possible instead. For example
|
||||||
|
`staff` instead of `employees` or `people` instead of `individuals`.
|
||||||
* Quoted identifiers—if you must use them then stick to SQL92 double quotes for
|
* Quoted identifiers—if you must use them then stick to SQL92 double quotes for
|
||||||
portability (you may need to configure your SQL server to support this depending
|
portability (you may need to configure your SQL server to support this depending
|
||||||
on vendor).
|
on vendor).
|
||||||
|
@ -71,8 +72,8 @@ UPDATE file_system
|
||||||
* Names must begin with a letter and may not end with an underscore.
|
* Names must begin with a letter and may not end with an underscore.
|
||||||
* Only use letters, numbers and underscores in names.
|
* Only use letters, numbers and underscores in names.
|
||||||
* Avoid the use of multiple consecutive underscores—these can be hard to read.
|
* Avoid the use of multiple consecutive underscores—these can be hard to read.
|
||||||
* Use underscores where you would naturally include a space in name (first name
|
* Use underscores where you would naturally include a space in the name (first
|
||||||
becomes `first_name`).
|
name becomes `first_name`).
|
||||||
* Avoid abbreviations and if you have to use them make sure they are commonly
|
* Avoid abbreviations and if you have to use them make sure they are commonly
|
||||||
understood.
|
understood.
|
||||||
|
|
||||||
|
@ -84,23 +85,18 @@ SELECT first_name
|
||||||
### Tables
|
### Tables
|
||||||
|
|
||||||
* Use a collective name or, less ideally, a plural form. For example (in order of
|
* Use a collective name or, less ideally, a plural form. For example (in order of
|
||||||
preference) staff and employees.
|
preference) `staff` and `employees`.
|
||||||
* Do not prefix with `tbl` or any other such descriptive prefix or Hungarian
|
* Do not prefix with `tbl` or any other such descriptive prefix or Hungarian
|
||||||
notation.
|
notation.
|
||||||
* Never give a table the same name as one of its columns.
|
* Never give a table the same name as one of its columns and vice versa.
|
||||||
* Avoid, where possible, concatenating two table names together to create the name
|
* Avoid, where possible, concatenating two table names together to create the name
|
||||||
of a relationship table. Rather than `car_mechanic` prefer `service`.
|
of a relationship table. Rather than `car_mechanic` prefer `service`.
|
||||||
|
|
||||||
```sql
|
|
||||||
SELECT first_name
|
|
||||||
FROM staff;
|
|
||||||
```
|
|
||||||
|
|
||||||
### Columns
|
### Columns
|
||||||
|
|
||||||
* Always use the singular name.
|
* Always use the singular name.
|
||||||
* Avoid simply using `id` as the primary identifier for the table.
|
* Avoid simply using `id` as the primary identifier for the table.
|
||||||
* Do not add a column with the same name as its table.
|
* Do not add a column with the same name as its table and vice versa.
|
||||||
* Always use lowercase except where it may make sense not to such as proper nouns.
|
* Always use lowercase except where it may make sense not to such as proper nouns.
|
||||||
|
|
||||||
### Aliasing or correlations
|
### Aliasing or correlations
|
||||||
|
@ -118,7 +114,8 @@ SELECT first_name AS fn
|
||||||
FROM staff AS s1
|
FROM staff AS s1
|
||||||
JOIN students AS s2
|
JOIN students AS s2
|
||||||
ON s2.mentor_id = s1.staff_num;
|
ON s2.mentor_id = s1.staff_num;
|
||||||
|
```
|
||||||
|
```sql
|
||||||
SELECT SUM(s.monitor_tally) AS monitor_total
|
SELECT SUM(s.monitor_tally) AS monitor_total
|
||||||
FROM staff AS s;
|
FROM staff AS s;
|
||||||
```
|
```
|
||||||
|
@ -264,7 +261,7 @@ SELECT r.last_name
|
||||||
|
|
||||||
Sub-queries should also be aligned to the right side of the river and then laid
|
Sub-queries should also be aligned to the right side of the river and then laid
|
||||||
out using the same style as any other query. Sometimes it will make sense to have
|
out using the same style as any other query. Sometimes it will make sense to have
|
||||||
the closing parenthesis on new line at the same character position as it's
|
the closing parenthesis on a new line at the same character position as it's
|
||||||
opening partner—this is especially true where you have nested sub-queries.
|
opening partner—this is especially true where you have nested sub-queries.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
|
@ -338,10 +335,10 @@ Deciding the column(s) that will form the keys in the definition should be a
|
||||||
carefully considered activity as it will effect performance and data integrity.
|
carefully considered activity as it will effect performance and data integrity.
|
||||||
|
|
||||||
1. The key should be unique to some degree.
|
1. The key should be unique to some degree.
|
||||||
2. Consistency in data type for the value across the schema and a lower likelihood
|
2. Consistency in terms of data type for the value across the schema and a lower
|
||||||
of this changing.
|
likelihood of this changing in the future.
|
||||||
3. Can the value be validated against standard format? Encouraging conformity to
|
3. Can the value be validated against a standard format (such as one published by
|
||||||
point 2.
|
ISO)? Encouraging conformity to point 2.
|
||||||
4. Keeping the key as simple as possible whilst not being scared to use compound
|
4. Keeping the key as simple as possible whilst not being scared to use compound
|
||||||
keys where necessary.
|
keys where necessary.
|
||||||
|
|
||||||
|
@ -352,7 +349,7 @@ changes to the definitions to keep them up to date.
|
||||||
#### Defining constraints
|
#### Defining constraints
|
||||||
|
|
||||||
Once the keys are decided it is possible to define them in the system using
|
Once the keys are decided it is possible to define them in the system using
|
||||||
constraints.
|
constraints along with field value validation.
|
||||||
|
|
||||||
##### General
|
##### General
|
||||||
|
|
||||||
|
@ -372,9 +369,10 @@ constraints.
|
||||||
* If it is a table level constraint that applies to the entire table then it
|
* If it is a table level constraint that applies to the entire table then it
|
||||||
should also appear at the end.
|
should also appear at the end.
|
||||||
* Use alphabetical order where `ON DELETE` comes before `ON UPDATE`.
|
* Use alphabetical order where `ON DELETE` comes before `ON UPDATE`.
|
||||||
* If it make sense to do so align each aspect of the query on the same character
|
* If it make senses to do so align each aspect of the query on the same character
|
||||||
position. For example all `NOT NULL` definitions should start at the same
|
position. For example all `NOT NULL` definitions could start at the same
|
||||||
character position.
|
character position. This is not hard and fat, but it certainly makes the code
|
||||||
|
much easier to scan and read.
|
||||||
|
|
||||||
##### Validation
|
##### Validation
|
||||||
|
|
||||||
|
@ -419,7 +417,7 @@ CREATE TABLE staff (
|
||||||
|
|
||||||
### Reserved keyword reference
|
### Reserved keyword reference
|
||||||
|
|
||||||
A list of ANSI SQL 92, ANSI SQL 99, ANSI SQL 2003, MySQL 3.23.x, MySQL 4.x, MySQL 5.x, PostgreSQL 8.1, MS SQL Server 2000, MS ODBC, Oracle 10.2 reserved keywords.
|
A list of ANSI SQL (92, 99 and 2003), MySQL 3 to 5.x, PostgreSQL 8.1, MS SQL Server 2000, MS ODBC and Oracle 10.2 reserved keywords.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
A
|
A
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
{{ content }}
|
{{ content }}
|
||||||
</div>
|
</div>
|
||||||
{% include foot.html %}
|
{% include foot.html %}
|
||||||
|
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
|
||||||
<script src="scripts.js"></script>
|
<script src="scripts.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
32
style.css
32
style.css
|
@ -129,6 +129,38 @@ ul#markdown-toc {
|
||||||
-webkit-column-gap: 1em;
|
-webkit-column-gap: 1em;
|
||||||
-moz-column-gap: 1em;
|
-moz-column-gap: 1em;
|
||||||
column-gap: 1em;
|
column-gap: 1em;
|
||||||
|
|
||||||
|
margin-bottom: 2.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.foot hr {
|
||||||
|
font-family: 'Roboto Slab', serif;
|
||||||
|
padding: 0;
|
||||||
|
border: none;
|
||||||
|
border-top: 0.1em solid #E2E2E2;
|
||||||
|
color: #E2E2E2;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.foot hr:after {
|
||||||
|
content: "§";
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
top: -0.925em;
|
||||||
|
font-size: 1.5em;
|
||||||
|
padding: 0 0.25em;
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.foot .buttons {
|
||||||
|
margin-top: 3em;
|
||||||
|
}
|
||||||
|
.quick-links {
|
||||||
|
list-style: none;
|
||||||
|
margin-left: 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.quick-links li {
|
||||||
|
display: inline;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Syntax highlighting */
|
/* Syntax highlighting */
|
||||||
|
|
Loading…
Reference in a new issue