diff --git a/CNAME b/CNAME
deleted file mode 100644
index 3a299b8..0000000
--- a/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-www.sqlstyle.guide
diff --git a/Gemfile b/Gemfile
deleted file mode 100644
index 37f5eaa..0000000
--- a/Gemfile
+++ /dev/null
@@ -1,2 +0,0 @@
-source 'https://rubygems.org'
-gem 'github-pages', group: :jekyll_plugins
diff --git a/README.md b/README.md
index 001f94b..eea2f05 100644
--- a/README.md
+++ b/README.md
@@ -1,62 +1,339 @@
# SQL style guide
-**[☛ Read the guide](http://www.sqlstyle.guide)**
+## Overview
----
+This document is a work in progress to generate a SQL query style guide for use in our department
## General
-The guide is written in [Markdown][md-lang] and uses [Jekyll][jekyll] via
-[GitHub's Pages][gh-pages] facility to render itself upon pushing to the `gh-pages`
-branch.
+### Do
-## Sources
+* Use consistent and descriptive identifiers and names.
+* Make judicious use of white space and indentation to make code easier to read.
+* Store [ISO-8601][iso-8601] compliant time and date information
+ (`YYYY-MM-DD HH:MM:SS.SSSSS`).
+* Try to use only standard SQL functions instead of vendor specific functions for
+ reasons of portability.
+* Keep code succinct and devoid of redundant SQL—such as unnecessary quoting or
+ parentheses or `WHERE` clauses that can otherwise be derived.
+* Include comments in SQL code where necessary. Use the C style opening `/*` and
+ closing `*/` where possible otherwise precede comments with `--` and finish
+ them with a new line.
-The markdown source for the guide can be found in [_includes/sqlstyle.guide.md][md]
+```sql
+SELECT
+ file_hash -- stored ssdeep hash
+FROM
+ file_system
+WHERE
+ file_name = '.vimrc';
+```
+```sql
+/* Updating the file record after writing to the file */
+UPDATE
+ file_system
+SET
+ file_modified_date = '1980-02-22 13:19:01.00000',
+ file_size = 209732
+WHERE
+ file_name = '.vimrc';
+```
-## Installing for local development
+### Avoid
-There is a Gemfile supplied so you just need to follow the
-[GitHub Pages documentation][gh-pages-help] to install the dependencies.
+* Object oriented design principles should not be applied to SQL or database
+ structures.
-To then run it locally `bundle exec jekyll serve`
+## Naming conventions
-## Translations of the guide
+### All Naming Conventions
+* See Confluence documentation for [Ives Database Design Guide][design-guide] when creating new tables or altering existing tables for the complete naming conventions to be used.
-If you would like to translate the guide then please open a pull request or open an issue
-if you need some help getting it setup.
+### Aliasing or correlations
-* [German/Deutsch](http://www.sqlstyle.guide/de/) by [AStasyK](https://github.com/AStasyK)
-* [Japanese/日本語](http://www.sqlstyle.guide/ja/) by [nkurigit](https://github.com/nkurigit)
-* [Portuguese (Brazil)/Português (BR)](http://www.sqlstyle.guide/pt-br/) by [pmarcus93](https://github.com/pmarcus93)
-* [Russian/Русский](http://www.sqlstyle.guide/ru/) by [denpatin](https://github.com/denpatin)
-* [Simplified Chinese/简体中文](http://www.sqlstyle.guide/zh/) by [wontoncoder](https://github.com/wontoncoder)
-* [Traditional Chinese/正體中文](http://www.sqlstyle.guide/zh-tw/) by [Leon0824](https://github.com/Leon0824)
+#### Aliasing Column Names
+* Avoid unnecessary aliases at all times
+* Must always alias `COUNT(*)` columns
+* Must always alias computed data (`SUM()` or `AVG()` or `IF()`). Use the name you would give it were it a column defined in the schema.
+* Must always include the `AS` keyword, which makes it easier to read since it is explicit.
+* Should relate in some way to the object or expression they are aliasing.
-## Projects known to be implementing the guide
+#### Aliasing Table Names
+* All Tables must be aliased when using more than one in a JOIN
+* Table aliases will be made up of the first letter of every word in the table name unless
+ * unless the alias is a reseverd word ie. `FROM INTERNATIONAL_FILINGS AS IF` will cause an error in SQL
+ * in this case us an abbreviated name for the table ie. `FROM INTERNATIONAL_FILINGS AS IFILINGS`
+ * if the aliases for two tables will be the same, or the same table is used more than once, append a number in order of apperance in the query
+* When a query contains multiple databases the first letter of the database, in lower case will be prepended to the table alias ie. `FROM international.ENTITY_MAP AS iEM INNER JOIN secdocs.COMPANY AS sC`
-If your project uses this styleguide and you'd like to be mentioned in this readme then
-please open a pull request adding it below in alphabetical order with a URL and short
-description.
+```sql
+SELECT
+ COUNT(*) as student_staff_count
+FROM
+ STAFF AS S1
+ INNER JOIN
+ STUDENTS AS S2
+ ON S2.mentor_id = S1.staff_num;
+```
+```sql
+SELECT
+ SUM(s.monitor_tally) AS monitor_total
+FROM
+ STAFF AS S
+GROUP BY
+ S.staff_department_fkey;
+```
-* [BEdita](https://github.com/bedita/bedita) - a Symfony based PHP CMF
-* [SQLQuery.jl](https://github.com/yeesian/SQLQuery.jl) - A Julia lang package for representing sql queries, and converting them to valid SQL statements
-* [Stock Talk](https://github.com/nigelgilbert/stock-talk) - a realtime dashboard that displays the stock data of the most Tweeted Nasdaq companies.
+### Uniform suffixes
-## Notable forks of the guide
+The following suffixes have a universal meaning ensuring the columns can be read
+and understood easily from SQL code. Use the correct suffix where appropriate.
-These are based on, but deviate in some way from sqlstyle.guide.
+* `_key`—a unique identifier such as a column that is a primary key.
+* `_status`—flag value or some other status of any type such as `publication_status`.
+* `_total`—the total or sum of a collection of values.
+* `_num`—denotes the field contains any kind of number.
+* `_name`—signifies a name such as `first_name`.
+* `_date`—denotes a column that contains the date of something.
+* `_count`—a count.
-If you have forked this styleguide and you'd like to be mentioned in this readme then
-please open a pull request adding it below in alphabetical order with a URL and short
-description of your deviance.
+## Query syntax
-* [Lumos Labs](https://github.com/lumoslabs/sqlstyle.guide) - removed the river, Redshift, etc. [www](http://engineering.lumosity.com/sqlstyle.guide)
+### Reserved words
+
+Always use uppercase for the [reserved keywords][reserved-keywords] like `SELECT`, `WHERE` or `IF`.
+
+Data manipulation statements should have every clause keyword on a line of its own unless performing extremely simple statements. Examples of the clause keywords are `SELECT`, `DELETE`, `UPDATE`, `FROM`, `WHERE`, `HAVING`, `GROUP BY`, `ORDER BY`, `LIMIT`. An example of a simple single line statements `SELECT COUNT(*) as student_count FROM STUDENTS WHERE graduated = 0;`
+
+### White space
+
+To make the code easier to read it is important that the correct compliment of
+spacing is used. Do not crowd code or remove natural language spaces.
+
+#### Spaces
+
+Spaces should never be used to line up the code so that the root keywords all end on the same character boundary.
+* Indentations of 4 spaces are the standard that is utilized throughout the codebase.
+* All `(` and `)` must be placed on a line of there own unless only operating on two or less items
+
+```sql
+(
+ SELECT
+ species_name,
+ AVG(height) AS average_height,
+ AVG(diameter) AS average_diameter
+ FROM
+ FLORA
+ WHERE
+ species_name = 'Banksia'
+ OR
+ species_name = 'Sheoak'
+ OR
+ species_name = 'Wattle'
+ GROUP BY
+ species_name,
+ observation_date
+)
+
+ UNION ALL
+
+(
+ SELECT
+ species_name,
+ AVG(height) AS average_height,
+ AVG(diameter) AS average_diameter
+ FROM
+ BOTANIC_GARDEN_FLORA
+ WHERE
+ species_name = 'Banksia'
+ OR
+ species_name = 'Sheoak'
+ OR
+ species_name = 'Wattle'
+ GROUP BY
+ species_name,
+ observation_date
+)
+```
+Although not exhaustive always include spaces:
+
+* before and after equals (`=`)
+* after commas (`,`)
+* surrounding apostrophes (`'`) where not within parentheses or with a trailing
+ comma or semicolon.
+
+```sql
+SELECT
+ title,
+ release_date,
+ recording_date
+FROM
+ ALBUMS
+WHERE
+ title = 'Charcoal Lane'
+ OR
+ title = 'The New Danger';
+```
+
+#### Line spacing
+
+Always include newlines/vertical space:
+
+* after semicolons to separate queries for easier reading
+* after each `VALUE` group in an `INSERT` statement
+* to separate code into related sections, which helps to ease the readability of large chunks of code.
+
+Always on their own line:
+* Data manipulation statements should have every clause keyword on a line of its own unless performing extremely simple statements. Examples of the clause keywords are `SELECT`, `DELETE`, `UPDATE`, `FROM`, `WHERE`, `HAVING`, `GROUP BY`, `ORDER BY`, `LIMIT`. An example of a simple single line statements `SELECT COUNT(*) as student_count FROM STUDENTS WHERE graduated = 0;`
+* Every field being selected, updated, grouped on or limted by in the query should be on their own line. Unless involved in a functional operation such as an `IF()`, `CASE`, `COALESCE()` ... etc. which require additional fields to function
+* `AND` and `OR` should appear on their own lines
-[md-lang]: http://daringfireball.net/projects/markdown/
-[jekyll]: http://jekyllrb.com/
-[gh-pages]: https://pages.github.com/
-[md]: https://github.com/treffynnon/sqlstyle.guide/blob/gh-pages/_includes/sqlstyle.guide.md
-[gh-pages-help]: https://help.github.com/articles/setting-up-your-github-pages-site-locally-with-jekyll/
+```sql
+INSERT INTO albums (title, release_date, recording_date)
+VALUES ('Charcoal Lane', '1990-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000'),
+ ('The New Danger', '2008-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000');
+```
+```sql
+UPDATE
+ ALBUMS
+SET
+ release_date = '1990-01-01 01:01:01.00000',
+ producer_name = NULL
+WHERE
+ title = 'The New Danger';
+```
+
+```sql
+SELECT
+ title,
+ release_date,
+ recording_date,
+ production_date
+FROM
+ ALBUMS
+WHERE
+ title = 'Charcoal Lane'
+ OR
+ title = 'The New Danger';
+```
+
+### Indentation
+
+To ensure that SQL is readable it is important that standards of indentation
+are followed.
+
+#### Clause Keywords
+* Should be at the top level with the least indentation of anything else contained in their statement.
+* These words should be on a line alone
+
+#### Joins
+
+* Natural Joins are not allowed ... ever
+* A Join type must be indicated `LEFT OUTER`, `RIGHT OUTER`, `INNER`
+* Joins should be indented one indent under their tables or sub-queries
+* ON clauses should be indented to be left justified with the JOINs
+* Multiple ON clauses should be indented to be vertically aligned with the ON and JOIN keywords
+
+```sql
+SELECT
+ R.last_name
+FROM
+ RIDERS AS R
+ INNER JOIN
+ BIKES AS B
+ ON R.bike_vin_num = B.vin_num
+ AND
+ B.engines > 2
+ INNER JOIN
+ CREW AS C
+ ON R.crew_chief_last_name = C.last_name
+ AND
+ C.chief = 'Y';
+```
+
+#### Subqueries
+
+Subqueries should be aligned with the indentation level that their non-subquery counterpart would reside. Subqueries should begin with a line containing only an opening `(` then the next line being indented 1 indent deeper. The subquery should end with a closing `)` and the alias for that subquery if appropriate. Try and include a commend line to describe the subquery
+
+```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
+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'
+ );
+```
+
+### Preferred formalisms
+
+* Make use of `BETWEEN` where possible instead of combining multiple statements
+ with `AND`.
+* Similarly use `IN()` instead of multiple `OR` clauses.
+* Where a value needs to be interpreted before leaving the database use the `CASE`
+ expression. `CASE` statements can be nested to form more complex logical structures.
+* Avoid the use of `UNION` clauses and temporary tables where possible. If the schema can be optimised to remove the reliance on these features then it most likely should be.
+
+```sql
+SELECT
+ CASE postcode
+ WHEN 'BN1' THEN 'Brighton'
+ WHEN 'EH1' THEN 'Edinburgh'
+ END AS city
+FROM
+ OFFICE_LOCATIONS
+WHERE
+ country = 'United Kingdom'
+ AND
+ opening_time BETWEEN 8 AND 9
+ AND
+ postcode IN ('EH1', 'BN1', 'NN1', 'KW1')
+```
+
+[simon]: https://www.simonholywell.com/?utm_source=sqlstyle.guide&utm_medium=link&utm_campaign=md-document
+ "SimonHolywell.com"
+[issue]: https://github.com/treffynnon/sqlstyle.guide/issues
+ "SQL style guide issues on GitHub"
+[fork]: https://github.com/treffynnon/sqlstyle.guide/fork
+ "Fork SQL style guide on GitHub"
+[pull]: https://github.com/treffynnon/sqlstyle.guide/pulls/
+ "SQL style guide pull requests on GitHub"
+[celko]: https://www.amazon.com/gp/product/0120887975/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=treffynnon-20&linkId=9c88eac8cd420e979675c815771313d5
+ "Joe Celko's SQL Programming Style (The Morgan Kaufmann Series in Data Management Systems)"
+[dl-md]: https://raw.githubusercontent.com/treffynnon/sqlstyle.guide/gh-pages/_includes/sqlstyle.guide.md
+ "Download the guide in Markdown format"
+[iso-8601]: https://en.wikipedia.org/wiki/ISO_8601
+ "Wikipedia: ISO 8601"
+[rivers]: http://practicaltypography.com/one-space-between-sentences.html
+ "Practical Typography: one space between sentences"
+[reserved-keywords]: #reserved-keyword-reference
+ "Reserved keyword reference"
+[eav]: https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
+ "Wikipedia: Entity–attribute–value model"
+[sqlstyleguide]: http://www.sqlstyle.guide
+ "SQL style guide by Simon Holywell"
+[licence]: http://creativecommons.org/licenses/by-sa/4.0/
+ "Creative Commons Attribution-ShareAlike 4.0 International License"
+[design-guide]: https://auditanalytics.atlassian.net/wiki/spaces/WEBDEV/pages/25198598/Database+Design
+ "Ives Database Design Guide"
\ No newline at end of file
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index e671fc8..0000000
--- a/_config.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-name: SQL style guide by Simon Holywell
-description: A consistent code style guide for SQL to ensure legible and maintainable projects
-
-ga_ua_code: UA-65071829-1
-
-url: http://www.sqlstyle.guide
-domain: sqlstyle.guide
-port: 4040
-
-markdown: kramdown
-permalink: pretty
-highlighter: rouge
-
-kramdown:
- input: GFM
- hard_wrap: false
- toc_levels: "2,3"
- auto_ids: true
- transliterated_header_ids: true
- auto_id_stripping: true
-
-plugins:
- - jekyll-redirect-from
- - jekyll-sitemap
-
-langs:
- de:
- de: Deutsch
- en: German
- en:
- en: English
- ja:
- ja: 日本語
- en: Japanese
- pt-BR:
- pt-BR: Português (BR)
- en: Portuguese - Brazil
- ru:
- ru: Русский
- en: Russian
- zh:
- zh: 简体中文
- en: Simplified Chinese
- zh-TW:
- zh-TW: 正體中文
- en: Traditional Chinese
diff --git a/_includes/layout_partials/foot.html b/_includes/layout_partials/foot.html
deleted file mode 100644
index 78f4a6c..0000000
--- a/_includes/layout_partials/foot.html
+++ /dev/null
@@ -1,65 +0,0 @@
-
diff --git a/_includes/layout_partials/head.html b/_includes/layout_partials/head.html
deleted file mode 100644
index 6ec9c29..0000000
--- a/_includes/layout_partials/head.html
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
Translated by:
- {% for user in page.contributors -%}
-
- {{- user.user -}}
-
- {%- if forloop.last != true %} · {% endif -%}
- {%- endfor %}
-
- {%- endif %}
-
-
diff --git a/_includes/layout_partials/language_dropdown_option.html b/_includes/layout_partials/language_dropdown_option.html
deleted file mode 100644
index 027ecc3..0000000
--- a/_includes/layout_partials/language_dropdown_option.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
\ No newline at end of file
diff --git a/_includes/layout_partials/language_nav_links.html b/_includes/layout_partials/language_nav_links.html
deleted file mode 100644
index 9cf9c00..0000000
--- a/_includes/layout_partials/language_nav_links.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
- {{ local }}
-
-{%- if forloop.last != true %} · {% endif -%}
\ No newline at end of file
diff --git a/_includes/layout_partials/language_rel_alternate.html b/_includes/layout_partials/language_rel_alternate.html
deleted file mode 100644
index 7fcd5f0..0000000
--- a/_includes/layout_partials/language_rel_alternate.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/_includes/layout_partials/languages.html b/_includes/layout_partials/languages.html
deleted file mode 100644
index 3d35927..0000000
--- a/_includes/layout_partials/languages.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{%- assign lpages=site.pages | where_exp:"page", "page contains 'lang'" | sort: 'lang' -%}
-
-{%- assign content_template="layout_partials/language_nav_links.html" -%}
-{%- if include.dropdown == true -%}
- {%- assign content_template="layout_partials/language_dropdown_option.html" -%}
-{%- endif -%}
-{%- if include.rel_alternate == true -%}
- {%- assign content_template="layout_partials/language_rel_alternate.html" -%}
-{%- endif -%}
-
-{% for l in lpages %}
- {%- assign local=site.langs[l.lang][l.lang] -%}
- {%- assign english=site.langs[l.lang]['en'] -%}
- {%- assign iso=l.lang -%}
- {%- assign url=l.url | absolute_url -%}
- {%- capture full -%}
- {{ local }}{% if l.lang_title %} ({{ english }}){% endif %}
- {%- endcapture -%}
-
- {% include {{ content_template }} %}
-{% endfor %}
\ No newline at end of file
diff --git a/_includes/sqlstyle.guide.de.md b/_includes/sqlstyle.guide.de.md
deleted file mode 100644
index 46509dc..0000000
--- a/_includes/sqlstyle.guide.de.md
+++ /dev/null
@@ -1,1341 +0,0 @@
-# SQL-Styleguide
-
-## Überblick
-
-Sie können diese Reihe von Richtlinien verwenden, [abspalten][fork] oder zu
-Ihrem eigenen machen — der Kniff hier ist, dass Sie einen Stil wählen und dann
-dabei bleiben. Um Änderungen vorzuschlagen oder Bugs zu beheben, öffnen Sie
-bitte ein [Issue][issue] oder [Pull Request][pull] auf GitHub.
-
-Diese Richtlinien sind entworfen worden, um mit Joe Celkos [SQL Programming
-Style][celko] Buch kompatibel zu sein, um Adoption für Teams zu machen, die
-dieses Buch schon gelesen haben. Dieser Guide ist ein wenig mehr
-meinungsorientiert in einigen Bereichen und in anderen ein wenig mehr
-entspannt. Es ist sicherlich prägnanter, wo [Celkos Buch][celko] Anekdoten und
-Argumentationen hinter jeder Regel als nachdenkliche Prosa enthält.
-
-Es ist einfach, diesen Leitfaden im [Markdown-Format][dl-md] als Teil der
-Code‑Basis eines Projekts einzuschließen oder irgendjemanden auf dieses
-Projekt zu verweisen, um frei zu lesen — viel härter mit einem physischen
-Buch.
-
-SQL Style Guide von [Simon Holywell][simon] ist unter einer [Creative Commons
-Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International]
-[licence-de] lizenziert. Basierend auf einer Arbeit auf
-[http://www.sqlstyle.guide][sqlstyleguide].
-
-## Allgemein
-
-### Befolgen
-
-* Verwenden Sie konsistente und beschreibende Bezeichner und Namen.
-* Verwenden Sie den Leerraum und die Einrückung vernünftigerweise, um den Code
- lesbarer zu machen.
-* Speichern Sie [ISO‑8601][iso-8601-de] konforme Zeit- und
- Datumsinformationen: `YYYY‑MM‑DD HH:MM:SS.SSSSS`.
-* Versuchen Sie, aus Gründen der Portabilität nur Standard‑SQL‑Funktionen
- anstelle von herstellerspezifischen Funktionen zu verwenden.
-* Halten Sie den Code prägnant und ohne redundante SQL, wie z.B. unnötige
- Anführungszeichen oder Klammern oder `WHERE`‑Klauseln, die anderweitig
- abgeleitet werden können.
-* Geben Sie ggf. Kommentare in SQL‑Code ein. Benutzen Sie die C‑ähnlichen
- öffenden `/*` und schließenden `*/` Kommentarzeichen wo möglich, sonst gehen
- Sie mit Kommentaren von `--` voraus und enden Sie mit einer neuen Zeile.
-
-```sql
-SELECT file_hash -- stored ssdeep hash
- FROM file_system
- WHERE file_name = '.vimrc';
-```
-
-```sql
-/* Updating the file record after writing to the file */
-UPDATE file_system
- SET file_modified_date = '1980-02-22 13:19:01.00000',
- file_size = 209732
- WHERE file_name = '.vimrc';
-```
-
-### Vermeiden
-
-* CamelCase. Es ist schwierig schnell zu scannen.
-* Beschreibende Präfixe oder [ungarische Notation][ungarische-notation] wie
- `sp_` oder `tbl`.
-* Plurale. Verwenden Sie stattdessen den natürlicheren Sammelbegriff. Zum
- Beispiel, `staff` anstelle von `employees`, oder `people` anstatt von
- `individuals`.
-* Zitierte Bezeichner. Wenn Sie sie verwenden müssen, dann halten Sie sich an
- die doppelten SQL92‑Anführungszeichen für Portabilität. Möglicherweise
- müssen Sie Ihren SQL‑Server konfigurieren, um dieses abhängig vom
- Hersteller zu stützen.
-* Objektorientierte Entwurfsmuster sollten auf SQL- oder Datenbankstrukturen
- nicht angewendet werden.
-
-## Namenskonventionen
-
-### Allgemein
-
-* Stellen Sie sicher, dass der Name einmalig ist und nicht als [reservierte
- Schlüsselwörter][reserved-keywords] existiert.
-* Halten Sie die Länge auf maximal 30 Bytes. In der Praxis entspricht das 30
- Zeichen, es sei denn, Sie verwenden einen Multi‑Byte‑Zeichensatz.
-* Die Namen müssen mit einem Buchstaben beginnen und dürfen nicht mit einem
- Unterstrich enden.
-* Verwenden Sie nur Buchstaben, Zahlen und Unterstriche in den Namen.
-* Vermeiden Sie die Verwendung von mehreren aufeinanderfolgenden Unterstrichen
- — das kann schwer zu lesen sein.
-* Verwenden Sie Unterstriche, wo Sie natürlich ein Leerzeichen im Namen
- eintragen: `first name` wird `first_name`.
-* Vermeiden Sie Abkürzungen, und wenn Sie sie verwenden müssen, stellen Sie
- sicher, dass sie allgemein verstanden werden.
-
-```sql
-SELECT first_name
- FROM staff;
-```
-
-### Tabellen
-
-* Verwenden Sie einen Sammelbegriff oder, aber weniger bevorzugt, eine
- Pluralform. Zum Beispiel (in absteigender Priorität) `staff` and
- `employees`.
-* Fügen Sie nicht das `tbl` Präfix oder ein anderes solches beschreibendes
- Präfix. Verwenden Sie keine [ungarische Notation][ungarische-notation].
-* Geben Sie niemals einer Tabelle denselben Namen wie einer ihrer Spalten und
- umgekehrt.
-* Vermeiden Sie, wo möglich, zwei Tabellennamen zusammen zu verketten, um eine
- Beziehungstabelle zu nennen. Anstatt `cars_mechanics` verwenden Sie
- `services`.
-
-### Spalten
-
-* Verwenden Sie immer Namen im Singular.
-* Vermeiden Sie, wo möglich, einfach `id` als Primärschlüssel für die Tabelle
- zu verwenden.
-* Fügen Sie keine Spalte mit demselben Namen wie ihre Tabelle und umgekehrt.
-* Verwenden Sie immer nur Kleinbuchstaben, es sei denn, es ist sinnvoll wie
- z.B. bei Eigennamen.
-
-### Aliasing oder Korrelationen
-
-* Aliasnamen sollen in gewisser Weise mit dem Objekt oder dem Ausdruck, das
- sie aliasieren, verbunden sein.
-* Als Faustregel wird der Korrelationsname aus ersten Buchstaben jedes Namens
- des Objekts zusammengesetzt.
-* Falls es schon eine Korrelation mit dem gleichen Namen gibt, fügen Sie eine
- Zahl hinzu.
-* Immer schließen das `AS` Keyword ein. Das macht es lesbarer, da es eindeutig
- ist.
-* Für berechnete Daten (`SUM()` oder `AVG()`) benutzen Sie den Namen, den Sie
- einer Spalte mit diesen Daten geben würden, falls solche Spalte im Schema
- definiert wäre.
-
-```sql
-SELECT first_name AS fn
- FROM staff AS s1
- JOIN students AS s2
- ON s2.mentor_id = s1.staff_num;
-```
-
-```sql
-SELECT SUM(s.monitor_tally) AS monitor_total
- FROM staff AS s;
-```
-
-### Gespeicherte Prozeduren
-
-* Der Name muss ein Verb enthalten.
-* Fügen Sie nicht das `sp_` Präfix oder ein anderes solches beschreibendes
- Präfix. Verwenden Sie keine [ungarische Notation][ungarische-notation].
-
-### Einheitliche Suffixe
-
-Die folgenden Suffixe haben eine universelle Bedeutung. Dabei wird
-sichergestellt, dass die Spalten in SQL‑Code lesbar und verständlich
-sind. Verwenden Sie ggf. das richtige Suffix.
-
-* `_id` — ein eindeutiger Bezeichner wie eine Spalte, die ein Primärschlüssel
- ist.
-* `_status` ein Flag oder ein anderer Status eines beliebigen Typs wie
- `publication_status`.
-* `_total` — die Gesamtmenge oder Gesamtsumme einer Collection von Werten.
-* `_num` — bezeichnet das Feld, dass jeglicher Art von Zahl enthält.
-* `_name` — bezeichnet einen Namen wie `first_name`.
-* `_seq` — enthält eine zusammenhängende Reihenfolge von Werten.
-* `_date` — bezeichnet eine Spalte, die das Datum von etwas enthält.
-* `_tally` — eine Zählung.
-* `_size` — die Größe von etwas wie eine Dateigröße oder Konfektionsgröße.
-* `_addr` — eine physikalische oder logische Adresse für den Datensatz wie
- `ip_addr`.
-
-## Abfragesyntax
-
-### Reservierte Wörter
-
-Verwenden Sie immer Großbuchstaben für
-[reservierte Schlüsselwörter][reserved-keywords] wie `SELECT` und `WHERE`.
-
-Es ist am besten, die abgekürzten Schlüsselwörter zu vermeiden und die in
-voller Länge zu verwenden, wo verfügbar (bevorzugen Sie `ABSOLUTE` zu `ABS`).
-
-Verwenden Sie keine DBMS‑Hersteller‑spezifischen Schlüsselwörter,
-wenn es ein ANSI‑SQL‑Schlüsselwort gibt, das die gleiche Funktion
-ausführt. Das hilft den Code mehr portabel zu machen.
-
-```sql
-SELECT model_num
- FROM phones AS p
- WHERE p.release_date > '2014-09-30';
-```
-
-### Weißraum
-
-Um den Code lesbarer zu machen, ist es wichtig die Zeichenabstände richtig zu
-verwenden. Verdichten Sie nicht den Code und entfernen Sie nicht die
-Zeichenabstände, die natürliche Sprache enthält.
-
-#### Leerzeichen
-
-Leerzeichen sollten verwendet werden, um den Code so auszurichten, dass die
-Hauptschlüsselwörter alle rechtsbündig ausgerichtet werden. Dies erstellt
-Gießbäche in der Mitte, die es dem Leser leichter macht, den Code zu lesen und
-die Schlüsselwörter von den Implementierungsdetails zu trennen.
-[Gießbäche][gießbäche] sind schlecht in der Typografie [schlecht][rivers],
-aber hier sind sie hilfreich.
-
-```sql
-(SELECT f.species_name,
- AVG(f.height) AS average_height, AVG(f.diameter) AS average_diameter
- FROM flora AS f
- WHERE f.species_name = 'Banksia'
- OR f.species_name = 'Sheoak'
- OR f.species_name = 'Wattle'
- GROUP BY f.species_name, f.observation_date)
-
- UNION ALL
-
-(SELECT b.species_name,
- AVG(b.height) AS average_height, AVG(b.diameter) AS average_diameter
- FROM botanic_garden_flora AS b
- WHERE b.species_name = 'Banksia'
- OR b.species_name = 'Sheoak'
- OR b.species_name = 'Wattle'
- GROUP BY b.species_name, b.observation_date)
-```
-
-Bemerken Sie, dass `SELECT`, `FROM`, usw. alle rechtsbündig, während die
-tatsächlichen Spaltennamen und spezifische Implementierungsdetails linksbündig
-ausgerichtet sind.
-
-Obwohl das nicht erschöpfend ist, schließen Sie immer Leerzeichen ein:
-
-* vor und nach Gleichheitszeichen (=)
-* nach Kommas (,)
-* umgebende Apostrophe ('), wenn sie nicht in Klammern oder mit einem
- nachlaufenden Komma oder Semikolon sind.
-
-```sql
-SELECT a.title, a.release_date, a.recording_date
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-#### Zeilenabstand
-
-Schließen Sie immer Zeilenumbruch / vertikalen Raum ein:
-
-* vor `AND` oder `OR`
-* nach Semikolons, um Abfragen für leichteres Lesen zu trennen
-* nach jeder Schlüsselwort‑Definition
-* nach einem Komma, um mehrfachen Spalten in logische Gruppen zu trennen
-* um den Code in verwandte Abschnitte zu trennen, was dazu beiträgt, großen
- Teilen des Codes lesbarer zu machen.
-
-Wenn alle Schlüsselwörter rechtsbündig und Implementierungsdetails linksbündig
-ausgerichtet sind, erstellt das ein Gießbach in der Mitte der Abfrage, der es
-dem Leser leichter macht, die Abfrage schneller durchzusuchen.
-
-```sql
-INSERT INTO albums (title, release_date, recording_date)
-VALUES ('Charcoal Lane', '1990-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000'),
- ('The New Danger', '2008-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000');
-```
-
-```sql
-UPDATE albums
- SET release_date = '1990-01-01 01:01:01.00000'
- WHERE title = 'The New Danger';
-```
-
-```sql
-SELECT a.title,
- a.release_date, a.recording_date, a.production_date -- grouped dates together
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-### Vertiefung
-
-Um sicherzustellen, dass SQL‑Abfrage lesbar ist, ist es wichtig, dass
-Standards der Einrückung eingehalten werden.
-
-#### Joins
-
-Joins sollten auf die rechte Seite des Gießbaches eingerückt werden und mit
-einer neuen Zeile gruppiert werden, wo nötig.
-
-```sql
-SELECT r.last_name
- FROM riders AS r
- INNER JOIN bikes AS b
- ON r.bike_vin_num = b.vin_num
- AND b.engines > 2
-
- INNER JOIN crew AS c
- ON r.crew_chief_last_name = c.last_name
- AND c.chief = 'Y';
-```
-
-#### Unterabfragen
-
-Unterabfragen sollten auch auf die rechte Seite des Gießbaches ausgerichtet
-werden und dann mit dem gleichen Stil wie jede andere Abfrage geordnet werden.
-Manchmal ist es sinnvoll, die abschließende Klammer auf einer neuen Zeile an
-der gleichen Charakterposition, genau unter der eröffnenden Klammer zu haben.
-Das ist besonders wichtig, wenn Sie verschachtelte Unterabfragen verwenden.
-
-```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
- 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');
-```
-
-### Bevorzugte Formalismen
-
-* Wo es möglich ist, verwenden Sie `BETWEEN` anstatt mehrere Anweisungen mit
- `AND` zu verbinden.
-* Verwenden Sie auch `IN()` anstelle von mehreren `OR`‑Klauseln.
-* Wenn ein Wert interpretiert werden muss, bevor er die Datenbank verlässt,
- verwenden Sie die `CASE`‑Anweisung. `CASE`‑Anweisungen können
- verschachtelt werden, um komplexere logische Strukturen zu bilden.
-* Vermeiden Sie `UNION`‑Klauseln und temporären Tabellen, soweit wie
- möglich. Wenn das Schema optimiert werden kann, um auf diese Funktionen
- nicht zu vertrauen, dann sollte es getan werden.
-
-```sql
-SELECT CASE postcode
- WHEN 'BN1' THEN 'Brighton'
- WHEN 'EH1' THEN 'Edinburgh'
- END AS city
- FROM office_locations
- WHERE country = 'United Kingdom'
- AND opening_time BETWEEN 8 AND 9
- AND postcode IN ('EH1', 'BN1', 'NN1', 'KW1')
-```
-
-## `CREATE`-Syntax
-
-Bei der Entwicklung von Datenschema ist es auch wichtig, den lesbaren Code zu
-pflegen. Um dies zu erleichtern, stellen Sie sicher, dass die Spaltenerklärung
-logisch geordnet und gruppiert werden, wo es sinnvoll ist, dies zu tun.
-
-Rücken Sie die Spaltenerklärung mit vier (4) Leerzeichen innerhalb der
-`CREATE`‑Anweisung ein.
-
-### Datentypen
-
-* Wo möglich, verwenden Sie keine herstellerspezifischen Datentypen, denn die
- sind nicht portabel und möglicherweise nicht in älteren Versionen
- derselben Software verfügbar.
-* Verwenden Sie `REAL`- oder `FLOAT`‑Typen, nur wenn es für die
- Gleitkommazahl unbedingt notwendig ist. Ansonsten verwenden Sie jederzeit
- `NUMERIC`- und `DECIMAL`‑Typen. Fließkomma‑Rundungsfehler sind
- ein Ärgernis.
-
-### Standardwerten
-
-* Der Vorschlagswert muss vom gleichen Typ sein, wie die Spalte - wenn eine
- Spalte als `DECIMAL` deklariert wird, setzen Sie keinen
- `INTEGER`‑Vorschlagswert ein.
-* Standardwerte müssen der Datentypdeklaration folgen und vor jeder
- `NOT NULL`‑Anweisung kommen.
-
-### Einschränkungen und Schlüssel
-
-Einschränkungen und ihre Untermenge, Schlüssel, sind eine sehr wichtige
-Komponente jeder Datenbankdefinition. Aber sie können schnell zu schwierig zu
-lesen und zu begreifen werden. Deshalb ist es wichtig, dass eine Standardreihe
-von Richtlinien gefolgt wird.
-
-#### Schlüssel
-
-Die Entscheidung über die Spalte(n), die die Schlüssel in der Definition
-bilden werden, sollte sorgfältig durchgeführt werden, denn sie wird Leistung
-und Datenintegrität beeinflussen.
-
-1. Der Schlüssel sollte bis zu einem gewissen Grad eindeutig sein.
-1. Konsistenz muss vorhanden sein - in Bezug auf den Datentyp für den Wert
- über das Schema und darauf, dass es in der Zukunft unwahrscheinlich
- verändern wird.
-1. Kann der Wert gegen ein Standardformat validiert werden (wie z.B. ein ISO)?
- Erfüllung der Konformität zum Punkt 2.
-1. Der Schlüssel sollte so einfach wie möglich sein. Aber man muss keine Angst
- davor haben, wo nötig, zusammengesetzte Schlüssel zu verwenden.
-
-Diese gewissermaßen Konventionen sollten bei der Definition einer Datenbank
-durchgeführt werden. Wenn die Anforderungen in Zukunft weiterentwickeln
-werden, ist es möglich, Änderungen an den Definitionen vorzunehmen, um sie
-aktuell zu halten.
-
-#### Einschränkungen
-
-Sobald die Schlüssel entschieden sind, ist es möglich, sie im System mit
-Einschränkungen zusammen mit Feldwertvalidierung zu definieren.
-
-##### Allgemein
-
-* Die Tabellen müssen mindestens einen Schlüssel haben, um vollständig und
- nützlich zu sein.
-* Man sollte benutzerdefinierten Namen alle Einschränkungen geben, mit
- Ausnahme von `UNIQUE`, `PRIMARY KEY` und `FOREIGN KEY`, denn
- Datenbankhersteller liefert in der Regel automatisch ausreichend
- verständliche Namen.
-
-##### Layout und Reihenfolge
-
-* Geben Sie zuerst den Primärschlüssel direkt nach der
- `CREATE TABLE`‑Anweisung an.
-* Einschränkungen sollten direkt unterhalb der Spalte definiert werden, der
- sie entsprechen. Rücken Sie die Einschränkung so ein, dass sie rechtsbündig
- vom Spaltennamen ausgerichtet werden.
-* Wenn es sich um eine mehrspaltige Einschränkung handelt, dann sollten Sie es
- so nah wie möglich bei den beiden Spaltendefinitionen setzen. Aber wenn es
- zu schwierig ist, als letzten Ausweg, setzen Sie es am Ende der
- `CREATE TABLE`‑Definition.
-* Wenn es eine tabellenebene Einschränkung ist, die für die gesamte Tabelle
- gilt, dann sollte es auch am Ende erscheinen.
-* Verwenden Sie die alphabetische Reihenfolge, in der `ON DELETE` vor
- `ON UPDATE` kommt.
-* Wenn es Sinn macht, dies zu tun, richten Sie jeden Aspekt der Abfrage auf
- die gleiche Zeichenposition aus. Zum Beispiel können alle
- `NOT NULL`‑Definitionen mit derselben Zeichenposition beginnen. Es macht
- den Code viel einfacher durchzusuchen und zu lesen.
-
-##### Validierung
-
-* Verwenden Sie `LIKE` und `SIMILAR TO` Einschränkungen, um die Integrität von
- Strings dort gewährleisten, deren Format bekannt ist.
-* Wenn der endgültige Bereich eines numerischen Wertes bekannt ist, muss er
- als ein Bereich `CHECK()` geschrieben werden, um zu verhindern, dass falsche
- Werte in die Datenbank eingegeben werden oder Daten, die größer als die
- Spaltendefinition ist, leise reduziert wird. Im Geringsten sollte es prüfen,
- ob der Wert in den meisten Fällen größer als Null ist.
-* `CHECK()` Einschränkungen sollten in separaten Klauseln gehalten werden, um
- das Debugging zu erleichtern.
-
-##### Beispiel
-
-```sql
-CREATE TABLE staff (
- PRIMARY KEY (staff_num),
- staff_num INT(5) NOT NULL,
- first_name VARCHAR(100) NOT NULL,
- pens_in_drawer INT(2) NOT NULL,
- CONSTRAINT pens_in_drawer_range
- CHECK(pens_in_drawer >= 1 AND pens_in_drawer < 100)
-);
-```
-
-### Zu vermeidende Entwürfe
-
-* Objektorientierte Gestaltungsprinzipien werden nicht effektiv in relationale
- Datenbankentwürfe übersetzt - vermeiden Sie diese Fallstricke.
-* Teilen Sie nicht die Werten und die Maßeinheiten in verschiedene Spalten
- auf. Die Spalten sollten die Maßeinheiten selbstverständlich machen, um die
- Anforderung zu vermeiden, Spalten später in der Anwendung zu kombinieren.
- Verwenden Sie `CHECK()`, um sicherzustellen, dass gültige Daten in die
- Spalte eingefügt werden.
-* [EAV (Entity Attribute Value)][eav] Tabellen - Verwenden Sie stattdessen
- spezielle Produkte, die für die Verarbeitung solcher schemafreier Daten
- bestimmt sind.
-* Teilen Sie nicht die Daten, die logisch zu einziger Tabelle gehören, in
- vielen verschidenen Tabellen auf, aus Gründen von beliebiger Bedenken, wie
- z. B. zeitbasierte Archivierung oder Standort in einer multinationalen
- Organisation. Spätere Abfragen müssen dann über mehrere Tabellen mit `UNION`
- arbeiten, anstatt einfach nur eine Tabelle abzufragen.
-
-## Anhang
-
-
-
-### Reservierte Schlüsselwörter-Referenz
-
-Eine Liste von ANSI SQL (92, 99 und 2003), MySQL 3 bis 5.x, PostgreSQL 8.1, MS
-SQL Server 2000, MS ODBC und Oracle 10.2 reservierte Schlüsselwörter.
-
-```sql
-A
-ABORT
-ABS
-ABSOLUTE
-ACCESS
-ACTION
-ADA
-ADD
-ADMIN
-AFTER
-AGGREGATE
-ALIAS
-ALL
-ALLOCATE
-ALSO
-ALTER
-ALWAYS
-ANALYSE
-ANALYZE
-AND
-ANY
-ARE
-ARRAY
-AS
-ASC
-ASENSITIVE
-ASSERTION
-ASSIGNMENT
-ASYMMETRIC
-AT
-ATOMIC
-ATTRIBUTE
-ATTRIBUTES
-AUDIT
-AUTHORIZATION
-AUTO_INCREMENT
-AVG
-AVG_ROW_LENGTH
-BACKUP
-BACKWARD
-BEFORE
-BEGIN
-BERNOULLI
-BETWEEN
-BIGINT
-BINARY
-BIT
-BIT_LENGTH
-BITVAR
-BLOB
-BOOL
-BOOLEAN
-BOTH
-BREADTH
-BREAK
-BROWSE
-BULK
-BY
-C
-CACHE
-CALL
-CALLED
-CARDINALITY
-CASCADE
-CASCADED
-CASE
-CAST
-CATALOG
-CATALOG_NAME
-CEIL
-CEILING
-CHAIN
-CHANGE
-CHAR
-CHAR_LENGTH
-CHARACTER
-CHARACTER_LENGTH
-CHARACTER_SET_CATALOG
-CHARACTER_SET_NAME
-CHARACTER_SET_SCHEMA
-CHARACTERISTICS
-CHARACTERS
-CHECK
-CHECKED
-CHECKPOINT
-CHECKSUM
-CLASS
-CLASS_ORIGIN
-CLOB
-CLOSE
-CLUSTER
-CLUSTERED
-COALESCE
-COBOL
-COLLATE
-COLLATION
-COLLATION_CATALOG
-COLLATION_NAME
-COLLATION_SCHEMA
-COLLECT
-COLUMN
-COLUMN_NAME
-COLUMNS
-COMMAND_FUNCTION
-COMMAND_FUNCTION_CODE
-COMMENT
-COMMIT
-COMMITTED
-COMPLETION
-COMPRESS
-COMPUTE
-CONDITION
-CONDITION_NUMBER
-CONNECT
-CONNECTION
-CONNECTION_NAME
-CONSTRAINT
-CONSTRAINT_CATALOG
-CONSTRAINT_NAME
-CONSTRAINT_SCHEMA
-CONSTRAINTS
-CONSTRUCTOR
-CONTAINS
-CONTAINSTABLE
-CONTINUE
-CONVERSION
-CONVERT
-COPY
-CORR
-CORRESPONDING
-COUNT
-COVAR_POP
-COVAR_SAMP
-CREATE
-CREATEDB
-CREATEROLE
-CREATEUSER
-CROSS
-CSV
-CUBE
-CUME_DIST
-CURRENT
-CURRENT_DATE
-CURRENT_DEFAULT_TRANSFORM_GROUP
-CURRENT_PATH
-CURRENT_ROLE
-CURRENT_TIME
-CURRENT_TIMESTAMP
-CURRENT_TRANSFORM_GROUP_FOR_TYPE
-CURRENT_USER
-CURSOR
-CURSOR_NAME
-CYCLE
-DATA
-DATABASE
-DATABASES
-DATE
-DATETIME
-DATETIME_INTERVAL_CODE
-DATETIME_INTERVAL_PRECISION
-DAY
-DAY_HOUR
-DAY_MICROSECOND
-DAY_MINUTE
-DAY_SECOND
-DAYOFMONTH
-DAYOFWEEK
-DAYOFYEAR
-DBCC
-DEALLOCATE
-DEC
-DECIMAL
-DECLARE
-DEFAULT
-DEFAULTS
-DEFERRABLE
-DEFERRED
-DEFINED
-DEFINER
-DEGREE
-DELAY_KEY_WRITE
-DELAYED
-DELETE
-DELIMITER
-DELIMITERS
-DENSE_RANK
-DENY
-DEPTH
-DEREF
-DERIVED
-DESC
-DESCRIBE
-DESCRIPTOR
-DESTROY
-DESTRUCTOR
-DETERMINISTIC
-DIAGNOSTICS
-DICTIONARY
-DISABLE
-DISCONNECT
-DISK
-DISPATCH
-DISTINCT
-DISTINCTROW
-DISTRIBUTED
-DIV
-DO
-DOMAIN
-DOUBLE
-DROP
-DUAL
-DUMMY
-DUMP
-DYNAMIC
-DYNAMIC_FUNCTION
-DYNAMIC_FUNCTION_CODE
-EACH
-ELEMENT
-ELSE
-ELSEIF
-ENABLE
-ENCLOSED
-ENCODING
-ENCRYPTED
-END
-END-EXEC
-ENUM
-EQUALS
-ERRLVL
-ESCAPE
-ESCAPED
-EVERY
-EXCEPT
-EXCEPTION
-EXCLUDE
-EXCLUDING
-EXCLUSIVE
-EXEC
-EXECUTE
-EXISTING
-EXISTS
-EXIT
-EXP
-EXPLAIN
-EXTERNAL
-EXTRACT
-FALSE
-FETCH
-FIELDS
-FILE
-FILLFACTOR
-FILTER
-FINAL
-FIRST
-FLOAT
-FLOAT4
-FLOAT8
-FLOOR
-FLUSH
-FOLLOWING
-FOR
-FORCE
-FOREIGN
-FORTRAN
-FORWARD
-FOUND
-FREE
-FREETEXT
-FREETEXTTABLE
-FREEZE
-FROM
-FULL
-FULLTEXT
-FUNCTION
-FUSION
-G
-GENERAL
-GENERATED
-GET
-GLOBAL
-GO
-GOTO
-GRANT
-GRANTED
-GRANTS
-GREATEST
-GROUP
-GROUPING
-HANDLER
-HAVING
-HEADER
-HEAP
-HIERARCHY
-HIGH_PRIORITY
-HOLD
-HOLDLOCK
-HOST
-HOSTS
-HOUR
-HOUR_MICROSECOND
-HOUR_MINUTE
-HOUR_SECOND
-IDENTIFIED
-IDENTITY
-IDENTITY_INSERT
-IDENTITYCOL
-IF
-IGNORE
-ILIKE
-IMMEDIATE
-IMMUTABLE
-IMPLEMENTATION
-IMPLICIT
-IN
-INCLUDE
-INCLUDING
-INCREMENT
-INDEX
-INDICATOR
-INFILE
-INFIX
-INHERIT
-INHERITS
-INITIAL
-INITIALIZE
-INITIALLY
-INNER
-INOUT
-INPUT
-INSENSITIVE
-INSERT
-INSERT_ID
-INSTANCE
-INSTANTIABLE
-INSTEAD
-INT
-INT1
-INT2
-INT3
-INT4
-INT8
-INTEGER
-INTERSECT
-INTERSECTION
-INTERVAL
-INTO
-INVOKER
-IS
-ISAM
-ISNULL
-ISOLATION
-ITERATE
-JOIN
-K
-KEY
-KEY_MEMBER
-KEY_TYPE
-KEYS
-KILL
-LANCOMPILER
-LANGUAGE
-LARGE
-LAST
-LAST_INSERT_ID
-LATERAL
-LEADING
-LEAST
-LEAVE
-LEFT
-LENGTH
-LESS
-LEVEL
-LIKE
-LIMIT
-LINENO
-LINES
-LISTEN
-LN
-LOAD
-LOCAL
-LOCALTIME
-LOCALTIMESTAMP
-LOCATION
-LOCATOR
-LOCK
-LOGIN
-LOGS
-LONG
-LONGBLOB
-LONGTEXT
-LOOP
-LOW_PRIORITY
-LOWER
-M
-MAP
-MATCH
-MATCHED
-MAX
-MAX_ROWS
-MAXEXTENTS
-MAXVALUE
-MEDIUMBLOB
-MEDIUMINT
-MEDIUMTEXT
-MEMBER
-MERGE
-MESSAGE_LENGTH
-MESSAGE_OCTET_LENGTH
-MESSAGE_TEXT
-METHOD
-MIDDLEINT
-MIN
-MIN_ROWS
-MINUS
-MINUTE
-MINUTE_MICROSECOND
-MINUTE_SECOND
-MINVALUE
-MLSLABEL
-MOD
-MODE
-MODIFIES
-MODIFY
-MODULE
-MONTH
-MONTHNAME
-MORE
-MOVE
-MULTISET
-MUMPS
-MYISAM
-NAME
-NAMES
-NATIONAL
-NATURAL
-NCHAR
-NCLOB
-NESTING
-NEW
-NEXT
-NO
-NO_WRITE_TO_BINLOG
-NOAUDIT
-NOCHECK
-NOCOMPRESS
-NOCREATEDB
-NOCREATEROLE
-NOCREATEUSER
-NOINHERIT
-NOLOGIN
-NONCLUSTERED
-NONE
-NORMALIZE
-NORMALIZED
-NOSUPERUSER
-NOT
-NOTHING
-NOTIFY
-NOTNULL
-NOWAIT
-NULL
-NULLABLE
-NULLIF
-NULLS
-NUMBER
-NUMERIC
-OBJECT
-OCTET_LENGTH
-OCTETS
-OF
-OFF
-OFFLINE
-OFFSET
-OFFSETS
-OIDS
-OLD
-ON
-ONLINE
-ONLY
-OPEN
-OPENDATASOURCE
-OPENQUERY
-OPENROWSET
-OPENXML
-OPERATION
-OPERATOR
-OPTIMIZE
-OPTION
-OPTIONALLY
-OPTIONS
-OR
-ORDER
-ORDERING
-ORDINALITY
-OTHERS
-OUT
-OUTER
-OUTFILE
-OUTPUT
-OVER
-OVERLAPS
-OVERLAY
-OVERRIDING
-OWNER
-PACK_KEYS
-PAD
-PARAMETER
-PARAMETER_MODE
-PARAMETER_NAME
-PARAMETER_ORDINAL_POSITION
-PARAMETER_SPECIFIC_CATALOG
-PARAMETER_SPECIFIC_NAME
-PARAMETER_SPECIFIC_SCHEMA
-PARAMETERS
-PARTIAL
-PARTITION
-PASCAL
-PASSWORD
-PATH
-PCTFREE
-PERCENT
-PERCENT_RANK
-PERCENTILE_CONT
-PERCENTILE_DISC
-PLACING
-PLAN
-PLI
-POSITION
-POSTFIX
-POWER
-PRECEDING
-PRECISION
-PREFIX
-PREORDER
-PREPARE
-PREPARED
-PRESERVE
-PRIMARY
-PRINT
-PRIOR
-PRIVILEGES
-PROC
-PROCEDURAL
-PROCEDURE
-PROCESS
-PROCESSLIST
-PUBLIC
-PURGE
-QUOTE
-RAID0
-RAISERROR
-RANGE
-RANK
-RAW
-READ
-READS
-READTEXT
-REAL
-RECHECK
-RECONFIGURE
-RECURSIVE
-REF
-REFERENCES
-REFERENCING
-REGEXP
-REGR_AVGX
-REGR_AVGY
-REGR_COUNT
-REGR_INTERCEPT
-REGR_R2
-REGR_SLOPE
-REGR_SXX
-REGR_SXY
-REGR_SYY
-REINDEX
-RELATIVE
-RELEASE
-RELOAD
-RENAME
-REPEAT
-REPEATABLE
-REPLACE
-REPLICATION
-REQUIRE
-RESET
-RESIGNAL
-RESOURCE
-RESTART
-RESTORE
-RESTRICT
-RESULT
-RETURN
-RETURNED_CARDINALITY
-RETURNED_LENGTH
-RETURNED_OCTET_LENGTH
-RETURNED_SQLSTATE
-RETURNS
-REVOKE
-RIGHT
-RLIKE
-ROLE
-ROLLBACK
-ROLLUP
-ROUTINE
-ROUTINE_CATALOG
-ROUTINE_NAME
-ROUTINE_SCHEMA
-ROW
-ROW_COUNT
-ROW_NUMBER
-ROWCOUNT
-ROWGUIDCOL
-ROWID
-ROWNUM
-ROWS
-RULE
-SAVE
-SAVEPOINT
-SCALE
-SCHEMA
-SCHEMA_NAME
-SCHEMAS
-SCOPE
-SCOPE_CATALOG
-SCOPE_NAME
-SCOPE_SCHEMA
-SCROLL
-SEARCH
-SECOND
-SECOND_MICROSECOND
-SECTION
-SECURITY
-SELECT
-SELF
-SENSITIVE
-SEPARATOR
-SEQUENCE
-SERIALIZABLE
-SERVER_NAME
-SESSION
-SESSION_USER
-SET
-SETOF
-SETS
-SETUSER
-SHARE
-SHOW
-SHUTDOWN
-SIGNAL
-SIMILAR
-SIMPLE
-SIZE
-SMALLINT
-SOME
-SONAME
-SOURCE
-SPACE
-SPATIAL
-SPECIFIC
-SPECIFIC_NAME
-SPECIFICTYPE
-SQL
-SQL_BIG_RESULT
-SQL_BIG_SELECTS
-SQL_BIG_TABLES
-SQL_CALC_FOUND_ROWS
-SQL_LOG_OFF
-SQL_LOG_UPDATE
-SQL_LOW_PRIORITY_UPDATES
-SQL_SELECT_LIMIT
-SQL_SMALL_RESULT
-SQL_WARNINGS
-SQLCA
-SQLCODE
-SQLERROR
-SQLEXCEPTION
-SQLSTATE
-SQLWARNING
-SQRT
-SSL
-STABLE
-START
-STARTING
-STATE
-STATEMENT
-STATIC
-STATISTICS
-STATUS
-STDDEV_POP
-STDDEV_SAMP
-STDIN
-STDOUT
-STORAGE
-STRAIGHT_JOIN
-STRICT
-STRING
-STRUCTURE
-STYLE
-SUBCLASS_ORIGIN
-SUBLIST
-SUBMULTISET
-SUBSTRING
-SUCCESSFUL
-SUM
-SUPERUSER
-SYMMETRIC
-SYNONYM
-SYSDATE
-SYSID
-SYSTEM
-SYSTEM_USER
-TABLE
-TABLE_NAME
-TABLES
-TABLESAMPLE
-TABLESPACE
-TEMP
-TEMPLATE
-TEMPORARY
-TERMINATE
-TERMINATED
-TEXT
-TEXTSIZE
-THAN
-THEN
-TIES
-TIME
-TIMESTAMP
-TIMEZONE_HOUR
-TIMEZONE_MINUTE
-TINYBLOB
-TINYINT
-TINYTEXT
-TO
-TOAST
-TOP
-TOP_LEVEL_COUNT
-TRAILING
-TRAN
-TRANSACTION
-TRANSACTION_ACTIVE
-TRANSACTIONS_COMMITTED
-TRANSACTIONS_ROLLED_BACK
-TRANSFORM
-TRANSFORMS
-TRANSLATE
-TRANSLATION
-TREAT
-TRIGGER
-TRIGGER_CATALOG
-TRIGGER_NAME
-TRIGGER_SCHEMA
-TRIM
-TRUE
-TRUNCATE
-TRUSTED
-TSEQUAL
-TYPE
-UESCAPE
-UID
-UNBOUNDED
-UNCOMMITTED
-UNDER
-UNDO
-UNENCRYPTED
-UNION
-UNIQUE
-UNKNOWN
-UNLISTEN
-UNLOCK
-UNNAMED
-UNNEST
-UNSIGNED
-UNTIL
-UPDATE
-UPDATETEXT
-UPPER
-USAGE
-USE
-USER
-USER_DEFINED_TYPE_CATALOG
-USER_DEFINED_TYPE_CODE
-USER_DEFINED_TYPE_NAME
-USER_DEFINED_TYPE_SCHEMA
-USING
-UTC_DATE
-UTC_TIME
-UTC_TIMESTAMP
-VACUUM
-VALID
-VALIDATE
-VALIDATOR
-VALUE
-VALUES
-VAR_POP
-VAR_SAMP
-VARBINARY
-VARCHAR
-VARCHAR2
-VARCHARACTER
-VARIABLE
-VARIABLES
-VARYING
-VERBOSE
-VIEW
-VOLATILE
-WAITFOR
-WHEN
-WHENEVER
-WHERE
-WHILE
-WIDTH_BUCKET
-WINDOW
-WITH
-WITHIN
-WITHOUT
-WORK
-WRITE
-WRITETEXT
-X509
-XOR
-YEAR
-YEAR_MONTH
-ZEROFILL
-ZONE
-```
-
-[simon]: https://www.simonholywell.com/?utm_source=sqlstyle.guide&utm_medium=link&utm_campaign=md-document
- "SimonHolywell.com"
-[issue]: https://github.com/treffynnon/sqlstyle.guide/issues
- "SQL style guide issues on GitHub"
-[fork]: https://github.com/treffynnon/sqlstyle.guide/fork
- "Fork SQL style guide on GitHub"
-[pull]: https://github.com/treffynnon/sqlstyle.guide/pulls/
- "SQL style guide pull requests on GitHub"
-[celko]: https://www.amazon.com/gp/product/0120887975/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=treffynnon-20&linkId=9c88eac8cd420e979675c815771313d5
- "Joe Celko's SQL Programming Style (The Morgan Kaufmann Series in Data Management Systems)"
-[dl-md]: https://raw.githubusercontent.com/treffynnon/sqlstyle.guide/gh-pages/_includes/sqlstyle.guide.md
- "Download the guide in Markdown format"
-[iso-8601-de]: https://de.wikipedia.org/wiki/ISO_8601
- "Wikipedia: ISO 8601"
-[ungarische-notation]: https://de.wikipedia.org/wiki/Ungarische_Notation
- "Ungarische Notation"
-[gießbäche]: https://de.wikipedia.org/wiki/Gie%C3%9Fbach_(Typografie)
- "Gießbach in Typografie"
-[rivers]: http://practicaltypography.com/one-space-between-sentences.html
- "Practical Typography: one space between sentences"
-[reserved-keywords]: #reserved-keyword-reference
- "Reserved keyword reference"
-[eav]: https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
- "Wikipedia: Entity–attribute–value model"
-[sqlstyleguide]: http://www.sqlstyle.guide
- "SQL style guide by Simon Holywell"
-[licence-de]: https://creativecommons.org/licenses/by-sa/4.0/deed.de
- "Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International"
diff --git a/_includes/sqlstyle.guide.ja.md b/_includes/sqlstyle.guide.ja.md
deleted file mode 100644
index ed2b24e..0000000
--- a/_includes/sqlstyle.guide.ja.md
+++ /dev/null
@@ -1,1209 +0,0 @@
-# SQLスタイルガイド(日本語訳)
-
-***
-
-**日本語訳について**
-
-日本語訳は誤訳や[原文の最新版][sqlstyleguide]に追随していない恐れがあります。誤訳や改善点があれば、GitHubの[issue][issue]または[pull request][pull]を使用するか、[Twitter][twitter-ja]でお知らせください。
-翻訳: 久利史之 [@nkuritw][twitter-ja]
-
-[twitter-ja]: https://twitter.com/nkuritw
-
-***
-
-## 概要
-
-このガイドラインは利用の他、[fork][fork]したり、自分自身のものに改変したりすることができます。ここで大事なのはスタイルを選択しそれを踏襲することです。変更の提案やバグの修正にはGitHubの[issue][]または[pull request][pull]を使用してください。
-
-このガイドラインは『[Joe Celko's SQL Programming Style][celko]』と互換性があり、すでにその本を読んだことがあるチームにとっては適用が容易です。このガイドはより独断的な部分もあればより緩やかな部分もあります。Celkoの書籍は各ルールの背後にあるエピソードや根拠を詳細に掲載していますが、このガイドはより簡潔になっています。
-
-このガイドの[Markdown版][dl-md]を活用すれば、紙の本では難しいプロジェクトのコード規約に含めたり、プロジェクトの参加者がその場で参照し自由に読んだりすることが容易になります。
-
-SQLスタイルガイド by [Simon Holywell][simon] は、[クリエイティブ・コモンズ 表示-継承4.0国際ライセンス][licence-ja]の下にあります。原本は[http://www.sqlstyle.guide][sqlstyleguide]です。
-
-## 全般
-
-### 推奨
-
-* 一貫性があり説明的な識別子と名前を使用する。
-* スペースとインデントを慎重に使用しコードを読みやすくする。
-* [ISO-8601][iso-8601]に準拠した日付時間フォーマット(`YYYY-MM-DD HH:MM:SS.SSSSS`)で格納する。
-* 移植性のためベンダー固有の関数の代わりに標準のSQL関数のみを使用する。
-* コードを簡潔で冗長なSQLのない状態に保つ。例えば、不必要なクォート、括弧、他の条件と重なる `WHERE` 句は避ける。
-* 必要に応じてSQLコードにコメントを挿入する。可能なら `/*` で始まり `*/` で終わるC言語スタイルのコメントを使用し、その他の場合、`--` で始まり改行で終わる行コメントを使用する。
-
-```sql
-SELECT file_hash -- stored ssdeep hash
- FROM file_system
- WHERE file_name = '.vimrc';
-```
-```sql
-/* Updating the file record after writing to the file */
-UPDATE file_system
- SET file_modified_date = '1980-02-22 13:19:01.00000',
- file_size = 209732
- WHERE file_name = '.vimrc';
-```
-
-### 非推奨
-
-* CamelCase - 読みづらくなる。
-* 説明的接頭辞やハンガリアン記法(`sp_`または`tbl`など)。
-* 複数形 - できるだけ集合体を表す用語を使用する。たとえば`employees`の代わりに`staff`、または`individuals`の代わりに`people`を使用する。
-* 引用符で囲まれた識別子 - 使用しなければならない場合、移植性のためSQL92の二重引用符が欠かせなくなる(ベンダーによってはサーバーを構成する必要がある)。
-* オブジェクト指向設計原則をSQLまたはデータベース構造に適用すべきではない。
-
-## 命名規則
-
-### 通則
-
-* 名前が一意であり、[予約語][reserved-keywords]に存在しないことを確認する。
-* 桁数を最大30バイトにする。実務的にはマルチバイト文字セットを除き30文字である。
-* 名前は文字で始めなければならずアンダースコアでは終わらない方が良い。
-* 名前には英字、数字、アンダースコアのみを使用する。
-* 複数の連続したアンダースコアの使用を避ける。読取るのが難しくなる。
-* 名前にスペースを含めるのが自然な場合はアンダースコアを使用する。(first nameは`first_name`)
-* 略語を避ける。略語を使う必要がある場合は、一般的に通じるものであることを確認する。
-
-```sql
-SELECT first_name
- FROM staff;
-```
-
-### 表
-
-* 集合名詞を使用するか、望ましくはないが、複数形を使用する。例えば、`employees`より`staff`が望ましい。
-* `tbl`などの接頭辞やハンガリアン記法による接頭辞を付けない。
-* 表に列の名前と同じ名前を付けない。その逆も同様である。
-* 関連付けする表の名前に2つの表名を連結した名前を付けないようにする。`cars_mechanics`より`services`が望ましい。
-
-### 列
-
-* 常に単数形の名前を使用する。
-* 主キーに単純に`id`を使うのは極力避ける。
-* 表と同じ名前の列を追加しない。逆もまた同様である。
-* 固有名詞など意味のある場合を除いて、常に小文字を使用する。
-
-### 別名、相関名
-
-* 何らかの方法でオブジェクトまたはその別名へ関連付けをすべきである。
-* 大雑把な方法として相関名はオブジェクト名の先頭文字を使う。
-* すでに同じ相関名がある場合は数値を追加する。
-* 常に`AS`キーワードを記載する。明示的であれば読みやすくなる。
-* 計算データ(`SUM()`、`AVG()`)には、それが実際の列にあるつもりで名付ける。
-
-```sql
-SELECT first_name AS fn
- FROM staff AS s1
- JOIN students AS s2
- ON s2.mentor_id = s1.staff_num;
-```
-```sql
-SELECT SUM(s.monitor_tally) AS monitor_total
- FROM staff AS s;
-```
-
-### ストアド・プロシージャ
-
-* 名前に動詞を含める。
-* `sp_`またはそのような説明的接頭辞やハンガリアン記法を含めない。
-
-### 統一的接尾辞
-
-以下の接尾辞は一般的意味を持ち、SQLコードから列を読み取り理解しやすくする。適切な箇所で正しい接尾辞を使用すること。
-
-* `_id` - 主キーである列など一意の識別子。
-* `_status` - flag値または任意のタイプの状況を表す(例: publication_status)。
-* `_total` - 値の集合の合計または総計。
-* `_num` - フィールドに数値が含まれていることを表す。
-* `_name` - first_nameのように名前を強調する。
-* `_seq` - 連続した数値を含む。
-* `_date` - 何かの日付を含む列であることを表す。
-* `_tally` - カウント。
-* `_size` - ファイルサイズや衣類などのサイズ。
-* `_addr` - 有形無形のデータのアドレス(例: ip_addr)。
-
-## 問合せ文
-
-### 予約語
-
-`SELECT`や`WHERE`など[予約語][reserved-keywords]は常に大文字を使用する。
-
-略語を避け利用可能な完全なキーワードを使用するのが最も望ましい。(`ABS`より`ABSOLUTE`が望ましい。)
-
-同じ機能を有するANSI SQLキーワードがすでに存在する場合はデータベース固有のものは使用しない。これはコードの移植性をより高くするためである。
-
-```sql
-SELECT model_num
- FROM phones AS p
- WHERE p.release_date > '2014-09-30';
-```
-
-### 空白類
-
-コードを読みやすくするには、適切にスペースを補完することが重要である。コードを密集させたり、自然言語にあるスペースを削除したりしてはならない。
-
-#### スペース
-
-スペースを活用し、基底のキーワードがすべて同じ位置で終わるようにコードを整列させる。これは途中で「リバー」[^river]を形作り、コードの見通しを良くし、実装の詳細からキーワードを分離することを容易にする。「リバー」は[タイポグラフィ(欧文組版)では望ましくない][rivers]とされるが、役に立つ。
-
-[^river]: [訳注] 行をまたがったスペースのつながり。横方向への視線の動きを妨げるため欧文組版では望ましくないとされる。
-
-```sql
-(SELECT f.species_name,
- AVG(f.height) AS average_height, AVG(f.diameter) AS average_diameter
- FROM flora AS f
- WHERE f.species_name = 'Banksia'
- OR f.species_name = 'Sheoak'
- OR f.species_name = 'Wattle'
- GROUP BY f.species_name, f.observation_date)
-
- UNION ALL
-
-(SELECT b.species_name,
- AVG(b.height) AS average_height, AVG(b.diameter) AS average_diameter
- FROM botanic_garden_flora AS b
- WHERE b.species_name = 'Banksia'
- OR b.species_name = 'Sheoak'
- OR b.species_name = 'Wattle'
- GROUP BY b.species_name, b.observation_date)
-```
-
-`SELECT`、`FROM`、その他キーワードはすべて右揃えされ、列名や実装の詳細は左揃えされている点に注意する。
-
-網羅していないが、以下の場合は常にスペースを入れる。
-
-* イコール(`=`)の前後
-* カンマ(`,`)の後
-* アポストロフィ(`'`)の外側(括弧内またはカンマやセミコロンが後に来る場合は除く)
-
-```sql
-SELECT a.title, a.release_date, a.recording_date
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-#### 行間
-
-以下のものは常に改行や空行を入れる。
-
-* `AND`または`OR`の前
-* セミコロンの後。問合せを分けて読みやすくするため。
-* キーワードの定義後。
-* 複数の列を論理的なグループに分けたコンマの後。
-* コードを関連するセクション単位に分離する場合。これはひとまとまりの大きなコードの可読性を向上させる。
-
-すべてのキーワードを右に寄せ、値を左揃えにすると、問合せ文の中程に一様に縦の空間ができる。これも問合せの定義を素早く把握するのに大きく役立つ。
-
-```sql
-INSERT INTO albums (title, release_date, recording_date)
-VALUES ('Charcoal Lane', '1990-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000'),
- ('The New Danger', '2008-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000');
-```
-
-``` sql
-UPDATE albums
- SET release_date = '1990-01-01 01:01:01.00000'
- WHERE title = 'The New Danger';
-```
-
-```sql
-SELECT a.title,
- a.release_date, a.recording_date, a.production_date -- grouped dates together
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-### インデント
-
-SQLを読みやすくするには以下のインデントについての基準が重要である。
-
-#### 結合
-
-JOIN句は、「リバー」の向こう側にインデントし、必要に応じて改行でグループ化する
-
-```sql
-SELECT r.last_name
- FROM riders AS r
- INNER JOIN bikes AS b
- ON r.bike_vin_num = b.vin_num
- AND b.engines > 2
-
- INNER JOIN crew AS c
- ON r.crew_chief_last_name = c.last_name
- AND c.chief = 'Y';
-```
-
-#### 副問合せ
-
-副問合せもまた「リバー」の右側に配置し、他の問合せと同じスタイルを使用してレイアウトすべきである。閉じ括弧を新しい行の開き括弧と同じ文字位置に配置することが有効な場合もある。特にネストされた副問合せの場合に有効である。
-
-```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
- 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');
-```
-
-### 望ましい形式
-
-* 複数の`AND`を組み合わせる代わりに`BETWEEN`を使用する。
-* 同様に複数のOR句を使用する代わりに`IN()`句を使用する。
-* 使用するデータベースに接続した状態で値を変換する必要がある場合には`CASE`式を使う。`CASE`式はネストしてより複雑な論理構造を形成することができる。
-* `UNION`節および一時表は極力避ける。これらの機能へ依存しないようにスキーマを最適化できる場合はそうした方が良い。
-
-```sql
-SELECT CASE postcode
- WHEN 'BN1' THEN 'Brighton'
- WHEN 'EH1' THEN 'Edinburgh'
- END AS city
- FROM office_locations
- WHERE country = 'United Kingdom'
- AND opening_time BETWEEN 8 AND 9
- AND postcode IN ('EH1', 'BN1', 'NN1', 'KW1')
-```
-
-## Create文
-
-スキーマ情報を宣言する際も人間が読めるコードにすることが重要である。必要に応じて列定義を順序付けしグループ化すると良い。
-
-`CREATE`文内の列定義は4つのスペースでインデントする。
-
-### データ型の選択
-
-* できるだけベンダー固有のデータ型は使用しないようにする。 これらは移植性がないだけでなく、同じベンダーのソフトウェアの古いバージョンでは使用できない可能性がある。
-* 浮動小数点による計算がどうしても必要な場合のみ`REAL`または`FLOAT`型を使い、それ以外は常に`NUMERIC`と`DECIMAL`型が望ましい。浮動小数点の丸め誤差は煩わしい。
-
-### デフォルト値の指定
-
-* 列のデフォルト値は列と同じ型でなければならない。列が`DECIMAL`型で宣言されている場合、`INTEGER`をデフォルト値にしないようにする。
-* デフォルト値は、データ型の宣言の後、`NOT NULL`文の前に来なければならない。
-
-### 制約とキー
-
-制約とそのサブセットであるキーは、データベース定義の非常に重要な要素である。それらはすぐに判別困難になる可能性がある。だからこそ次のようなガイドラインの基準が重要である。
-
-#### キーの選択
-
-定義においてキーとなる列を決定することは、パフォーマンスとデータの整合性に影響するため、慎重に検討されるべきである。
-
-1. キーはある程度一意でなければならない。
-2. スキーマ全体を通じデータ型の一貫性があり、将来の変更可能性が低いこと。
-3. 標準的なフォーマット(ISOで公開されているものなど)で値を検証できるようにする。これは項番2に通じる。
-4. キーをできるだけシンプルに保つ一方で、必要に応じて複合キーを恐れずに使用する。
-
-これはデータベース定義の時点で論理的かつ慎重に行われる作業である。万一、将来要件が変わっても定義を変更し最新の状態に保つことを可能にする。
-
-#### 制約の定義
-
-キーが決まれば、フィールド値の検証とともに制約を利用してシステム上でキーを定義することができる。
-
-##### 通則
-
-* 表には、完全で有用なキーが少なくとも1つ必要である。
-* `UNIQUE`、`PRIMARY KEY`、`FOREIGN KEY`と言ったデータベースベンダーが自動で付与する自明のものを除き、制約には独自の名称を付与する。
-
-##### レイアウトと順序
-
-* `CREATE TABLE`文の直後に`PRIMARY KEY`を定める。
-* 制約は、対応する列の直下に定義します。列名の右に揃うようにインデントする。
-* 複数列制約であれば、可能な限り両方の列定義に近くに配置することを検討する。それが困難な場合は、最後の手段として`CREATE TABLE`定義の最後に含める。
-* 表全体に適用される表レベルの制約であればそれも最後に表示する。
-* アルファベット順を使用する。`ON DELETE`は`ON UPDATE`の前に来る。
-* 必要に応じ問合せの各要素を同じ文字位置に揃える。例えば、`NOT NULL`の定義はすべて同じ文字位置から開始する。これは絶対必要というわけではないがコードを見通し良く読みやすくする。
-
-##### 検証
-
-* 文字列のフォーマットが分かっている場合は整合性を確保するために`LIKE`と`SIMILAR TO`制約を使用する。
-* 数値の範囲が完全に判明している場合は、範囲を`CHECK()`として記述し、データベースへの誤った値が入力されるのを抑止するか列の定義に合うように大きすぎるデータの自動切り捨てを行う。多くの場合、少なくとも値が0より大きいかどうかを確認する。
-* `CHECK()`制約はデバッグを容易にするため独立した節にすべきである。
-
-##### 例
-
-```sql
-CREATE TABLE staff (
- PRIMARY KEY (staff_num),
- staff_num INT(5) NOT NULL,
- first_name VARCHAR(100) NOT NULL,
- pens_in_drawer INT(2) NOT NULL,
- CONSTRAINT pens_in_drawer_range
- CHECK(pens_in_drawer >= 1 AND pens_in_drawer < 100)
-);
-```
-
-### 非推奨設計
-
-* オブジェクト指向設計原則は、リレーショナルデータベース設計へ効果的に変換されない。この落とし穴を避ける。
-* ある列に値を配置し、別の列に単位があること。その列の単位が自明となるようにし、アプリケーションで列を再度結合する必要性をなくすべきである。その列に挿入されたデータの有効性を確保するため`CHECK()`制約を使用する。
-* EAV(エンティティ・アトリビュート)表。そのようなスキーマレスデータを扱うための専用製品を使用する。
-* 本来1つにまとめるべきデータを時間単位のアーカイブや多国籍企業の所在地といった任意の問題により多数の表に分割すること。1つの表を照会する単純な問合せの代わりに`UNION`句により複数の表にまたがった問合せを作成する必要が出てくる。
-
-## 付録
-
-
-
-### 予約語リファレンス
-
-ANSI SQL(92,99および2003)、MySQL 3から5.x、PostgreSQL 8.1、MS SQL Server 2000、MS ODBCおよびOracle 10.2の予約語リスト
-
-```sql
-A
-ABORT
-ABS
-ABSOLUTE
-ACCESS
-ACTION
-ADA
-ADD
-ADMIN
-AFTER
-AGGREGATE
-ALIAS
-ALL
-ALLOCATE
-ALSO
-ALTER
-ALWAYS
-ANALYSE
-ANALYZE
-AND
-ANY
-ARE
-ARRAY
-AS
-ASC
-ASENSITIVE
-ASSERTION
-ASSIGNMENT
-ASYMMETRIC
-AT
-ATOMIC
-ATTRIBUTE
-ATTRIBUTES
-AUDIT
-AUTHORIZATION
-AUTO_INCREMENT
-AVG
-AVG_ROW_LENGTH
-BACKUP
-BACKWARD
-BEFORE
-BEGIN
-BERNOULLI
-BETWEEN
-BIGINT
-BINARY
-BIT
-BIT_LENGTH
-BITVAR
-BLOB
-BOOL
-BOOLEAN
-BOTH
-BREADTH
-BREAK
-BROWSE
-BULK
-BY
-C
-CACHE
-CALL
-CALLED
-CARDINALITY
-CASCADE
-CASCADED
-CASE
-CAST
-CATALOG
-CATALOG_NAME
-CEIL
-CEILING
-CHAIN
-CHANGE
-CHAR
-CHAR_LENGTH
-CHARACTER
-CHARACTER_LENGTH
-CHARACTER_SET_CATALOG
-CHARACTER_SET_NAME
-CHARACTER_SET_SCHEMA
-CHARACTERISTICS
-CHARACTERS
-CHECK
-CHECKED
-CHECKPOINT
-CHECKSUM
-CLASS
-CLASS_ORIGIN
-CLOB
-CLOSE
-CLUSTER
-CLUSTERED
-COALESCE
-COBOL
-COLLATE
-COLLATION
-COLLATION_CATALOG
-COLLATION_NAME
-COLLATION_SCHEMA
-COLLECT
-COLUMN
-COLUMN_NAME
-COLUMNS
-COMMAND_FUNCTION
-COMMAND_FUNCTION_CODE
-COMMENT
-COMMIT
-COMMITTED
-COMPLETION
-COMPRESS
-COMPUTE
-CONDITION
-CONDITION_NUMBER
-CONNECT
-CONNECTION
-CONNECTION_NAME
-CONSTRAINT
-CONSTRAINT_CATALOG
-CONSTRAINT_NAME
-CONSTRAINT_SCHEMA
-CONSTRAINTS
-CONSTRUCTOR
-CONTAINS
-CONTAINSTABLE
-CONTINUE
-CONVERSION
-CONVERT
-COPY
-CORR
-CORRESPONDING
-COUNT
-COVAR_POP
-COVAR_SAMP
-CREATE
-CREATEDB
-CREATEROLE
-CREATEUSER
-CROSS
-CSV
-CUBE
-CUME_DIST
-CURRENT
-CURRENT_DATE
-CURRENT_DEFAULT_TRANSFORM_GROUP
-CURRENT_PATH
-CURRENT_ROLE
-CURRENT_TIME
-CURRENT_TIMESTAMP
-CURRENT_TRANSFORM_GROUP_FOR_TYPE
-CURRENT_USER
-CURSOR
-CURSOR_NAME
-CYCLE
-DATA
-DATABASE
-DATABASES
-DATE
-DATETIME
-DATETIME_INTERVAL_CODE
-DATETIME_INTERVAL_PRECISION
-DAY
-DAY_HOUR
-DAY_MICROSECOND
-DAY_MINUTE
-DAY_SECOND
-DAYOFMONTH
-DAYOFWEEK
-DAYOFYEAR
-DBCC
-DEALLOCATE
-DEC
-DECIMAL
-DECLARE
-DEFAULT
-DEFAULTS
-DEFERRABLE
-DEFERRED
-DEFINED
-DEFINER
-DEGREE
-DELAY_KEY_WRITE
-DELAYED
-DELETE
-DELIMITER
-DELIMITERS
-DENSE_RANK
-DENY
-DEPTH
-DEREF
-DERIVED
-DESC
-DESCRIBE
-DESCRIPTOR
-DESTROY
-DESTRUCTOR
-DETERMINISTIC
-DIAGNOSTICS
-DICTIONARY
-DISABLE
-DISCONNECT
-DISK
-DISPATCH
-DISTINCT
-DISTINCTROW
-DISTRIBUTED
-DIV
-DO
-DOMAIN
-DOUBLE
-DROP
-DUAL
-DUMMY
-DUMP
-DYNAMIC
-DYNAMIC_FUNCTION
-DYNAMIC_FUNCTION_CODE
-EACH
-ELEMENT
-ELSE
-ELSEIF
-ENABLE
-ENCLOSED
-ENCODING
-ENCRYPTED
-END
-END-EXEC
-ENUM
-EQUALS
-ERRLVL
-ESCAPE
-ESCAPED
-EVERY
-EXCEPT
-EXCEPTION
-EXCLUDE
-EXCLUDING
-EXCLUSIVE
-EXEC
-EXECUTE
-EXISTING
-EXISTS
-EXIT
-EXP
-EXPLAIN
-EXTERNAL
-EXTRACT
-FALSE
-FETCH
-FIELDS
-FILE
-FILLFACTOR
-FILTER
-FINAL
-FIRST
-FLOAT
-FLOAT4
-FLOAT8
-FLOOR
-FLUSH
-FOLLOWING
-FOR
-FORCE
-FOREIGN
-FORTRAN
-FORWARD
-FOUND
-FREE
-FREETEXT
-FREETEXTTABLE
-FREEZE
-FROM
-FULL
-FULLTEXT
-FUNCTION
-FUSION
-G
-GENERAL
-GENERATED
-GET
-GLOBAL
-GO
-GOTO
-GRANT
-GRANTED
-GRANTS
-GREATEST
-GROUP
-GROUPING
-HANDLER
-HAVING
-HEADER
-HEAP
-HIERARCHY
-HIGH_PRIORITY
-HOLD
-HOLDLOCK
-HOST
-HOSTS
-HOUR
-HOUR_MICROSECOND
-HOUR_MINUTE
-HOUR_SECOND
-IDENTIFIED
-IDENTITY
-IDENTITY_INSERT
-IDENTITYCOL
-IF
-IGNORE
-ILIKE
-IMMEDIATE
-IMMUTABLE
-IMPLEMENTATION
-IMPLICIT
-IN
-INCLUDE
-INCLUDING
-INCREMENT
-INDEX
-INDICATOR
-INFILE
-INFIX
-INHERIT
-INHERITS
-INITIAL
-INITIALIZE
-INITIALLY
-INNER
-INOUT
-INPUT
-INSENSITIVE
-INSERT
-INSERT_ID
-INSTANCE
-INSTANTIABLE
-INSTEAD
-INT
-INT1
-INT2
-INT3
-INT4
-INT8
-INTEGER
-INTERSECT
-INTERSECTION
-INTERVAL
-INTO
-INVOKER
-IS
-ISAM
-ISNULL
-ISOLATION
-ITERATE
-JOIN
-K
-KEY
-KEY_MEMBER
-KEY_TYPE
-KEYS
-KILL
-LANCOMPILER
-LANGUAGE
-LARGE
-LAST
-LAST_INSERT_ID
-LATERAL
-LEADING
-LEAST
-LEAVE
-LEFT
-LENGTH
-LESS
-LEVEL
-LIKE
-LIMIT
-LINENO
-LINES
-LISTEN
-LN
-LOAD
-LOCAL
-LOCALTIME
-LOCALTIMESTAMP
-LOCATION
-LOCATOR
-LOCK
-LOGIN
-LOGS
-LONG
-LONGBLOB
-LONGTEXT
-LOOP
-LOW_PRIORITY
-LOWER
-M
-MAP
-MATCH
-MATCHED
-MAX
-MAX_ROWS
-MAXEXTENTS
-MAXVALUE
-MEDIUMBLOB
-MEDIUMINT
-MEDIUMTEXT
-MEMBER
-MERGE
-MESSAGE_LENGTH
-MESSAGE_OCTET_LENGTH
-MESSAGE_TEXT
-METHOD
-MIDDLEINT
-MIN
-MIN_ROWS
-MINUS
-MINUTE
-MINUTE_MICROSECOND
-MINUTE_SECOND
-MINVALUE
-MLSLABEL
-MOD
-MODE
-MODIFIES
-MODIFY
-MODULE
-MONTH
-MONTHNAME
-MORE
-MOVE
-MULTISET
-MUMPS
-MYISAM
-NAME
-NAMES
-NATIONAL
-NATURAL
-NCHAR
-NCLOB
-NESTING
-NEW
-NEXT
-NO
-NO_WRITE_TO_BINLOG
-NOAUDIT
-NOCHECK
-NOCOMPRESS
-NOCREATEDB
-NOCREATEROLE
-NOCREATEUSER
-NOINHERIT
-NOLOGIN
-NONCLUSTERED
-NONE
-NORMALIZE
-NORMALIZED
-NOSUPERUSER
-NOT
-NOTHING
-NOTIFY
-NOTNULL
-NOWAIT
-NULL
-NULLABLE
-NULLIF
-NULLS
-NUMBER
-NUMERIC
-OBJECT
-OCTET_LENGTH
-OCTETS
-OF
-OFF
-OFFLINE
-OFFSET
-OFFSETS
-OIDS
-OLD
-ON
-ONLINE
-ONLY
-OPEN
-OPENDATASOURCE
-OPENQUERY
-OPENROWSET
-OPENXML
-OPERATION
-OPERATOR
-OPTIMIZE
-OPTION
-OPTIONALLY
-OPTIONS
-OR
-ORDER
-ORDERING
-ORDINALITY
-OTHERS
-OUT
-OUTER
-OUTFILE
-OUTPUT
-OVER
-OVERLAPS
-OVERLAY
-OVERRIDING
-OWNER
-PACK_KEYS
-PAD
-PARAMETER
-PARAMETER_MODE
-PARAMETER_NAME
-PARAMETER_ORDINAL_POSITION
-PARAMETER_SPECIFIC_CATALOG
-PARAMETER_SPECIFIC_NAME
-PARAMETER_SPECIFIC_SCHEMA
-PARAMETERS
-PARTIAL
-PARTITION
-PASCAL
-PASSWORD
-PATH
-PCTFREE
-PERCENT
-PERCENT_RANK
-PERCENTILE_CONT
-PERCENTILE_DISC
-PLACING
-PLAN
-PLI
-POSITION
-POSTFIX
-POWER
-PRECEDING
-PRECISION
-PREFIX
-PREORDER
-PREPARE
-PREPARED
-PRESERVE
-PRIMARY
-PRINT
-PRIOR
-PRIVILEGES
-PROC
-PROCEDURAL
-PROCEDURE
-PROCESS
-PROCESSLIST
-PUBLIC
-PURGE
-QUOTE
-RAID0
-RAISERROR
-RANGE
-RANK
-RAW
-READ
-READS
-READTEXT
-REAL
-RECHECK
-RECONFIGURE
-RECURSIVE
-REF
-REFERENCES
-REFERENCING
-REGEXP
-REGR_AVGX
-REGR_AVGY
-REGR_COUNT
-REGR_INTERCEPT
-REGR_R2
-REGR_SLOPE
-REGR_SXX
-REGR_SXY
-REGR_SYY
-REINDEX
-RELATIVE
-RELEASE
-RELOAD
-RENAME
-REPEAT
-REPEATABLE
-REPLACE
-REPLICATION
-REQUIRE
-RESET
-RESIGNAL
-RESOURCE
-RESTART
-RESTORE
-RESTRICT
-RESULT
-RETURN
-RETURNED_CARDINALITY
-RETURNED_LENGTH
-RETURNED_OCTET_LENGTH
-RETURNED_SQLSTATE
-RETURNS
-REVOKE
-RIGHT
-RLIKE
-ROLE
-ROLLBACK
-ROLLUP
-ROUTINE
-ROUTINE_CATALOG
-ROUTINE_NAME
-ROUTINE_SCHEMA
-ROW
-ROW_COUNT
-ROW_NUMBER
-ROWCOUNT
-ROWGUIDCOL
-ROWID
-ROWNUM
-ROWS
-RULE
-SAVE
-SAVEPOINT
-SCALE
-SCHEMA
-SCHEMA_NAME
-SCHEMAS
-SCOPE
-SCOPE_CATALOG
-SCOPE_NAME
-SCOPE_SCHEMA
-SCROLL
-SEARCH
-SECOND
-SECOND_MICROSECOND
-SECTION
-SECURITY
-SELECT
-SELF
-SENSITIVE
-SEPARATOR
-SEQUENCE
-SERIALIZABLE
-SERVER_NAME
-SESSION
-SESSION_USER
-SET
-SETOF
-SETS
-SETUSER
-SHARE
-SHOW
-SHUTDOWN
-SIGNAL
-SIMILAR
-SIMPLE
-SIZE
-SMALLINT
-SOME
-SONAME
-SOURCE
-SPACE
-SPATIAL
-SPECIFIC
-SPECIFIC_NAME
-SPECIFICTYPE
-SQL
-SQL_BIG_RESULT
-SQL_BIG_SELECTS
-SQL_BIG_TABLES
-SQL_CALC_FOUND_ROWS
-SQL_LOG_OFF
-SQL_LOG_UPDATE
-SQL_LOW_PRIORITY_UPDATES
-SQL_SELECT_LIMIT
-SQL_SMALL_RESULT
-SQL_WARNINGS
-SQLCA
-SQLCODE
-SQLERROR
-SQLEXCEPTION
-SQLSTATE
-SQLWARNING
-SQRT
-SSL
-STABLE
-START
-STARTING
-STATE
-STATEMENT
-STATIC
-STATISTICS
-STATUS
-STDDEV_POP
-STDDEV_SAMP
-STDIN
-STDOUT
-STORAGE
-STRAIGHT_JOIN
-STRICT
-STRING
-STRUCTURE
-STYLE
-SUBCLASS_ORIGIN
-SUBLIST
-SUBMULTISET
-SUBSTRING
-SUCCESSFUL
-SUM
-SUPERUSER
-SYMMETRIC
-SYNONYM
-SYSDATE
-SYSID
-SYSTEM
-SYSTEM_USER
-TABLE
-TABLE_NAME
-TABLES
-TABLESAMPLE
-TABLESPACE
-TEMP
-TEMPLATE
-TEMPORARY
-TERMINATE
-TERMINATED
-TEXT
-TEXTSIZE
-THAN
-THEN
-TIES
-TIME
-TIMESTAMP
-TIMEZONE_HOUR
-TIMEZONE_MINUTE
-TINYBLOB
-TINYINT
-TINYTEXT
-TO
-TOAST
-TOP
-TOP_LEVEL_COUNT
-TRAILING
-TRAN
-TRANSACTION
-TRANSACTION_ACTIVE
-TRANSACTIONS_COMMITTED
-TRANSACTIONS_ROLLED_BACK
-TRANSFORM
-TRANSFORMS
-TRANSLATE
-TRANSLATION
-TREAT
-TRIGGER
-TRIGGER_CATALOG
-TRIGGER_NAME
-TRIGGER_SCHEMA
-TRIM
-TRUE
-TRUNCATE
-TRUSTED
-TSEQUAL
-TYPE
-UESCAPE
-UID
-UNBOUNDED
-UNCOMMITTED
-UNDER
-UNDO
-UNENCRYPTED
-UNION
-UNIQUE
-UNKNOWN
-UNLISTEN
-UNLOCK
-UNNAMED
-UNNEST
-UNSIGNED
-UNTIL
-UPDATE
-UPDATETEXT
-UPPER
-USAGE
-USE
-USER
-USER_DEFINED_TYPE_CATALOG
-USER_DEFINED_TYPE_CODE
-USER_DEFINED_TYPE_NAME
-USER_DEFINED_TYPE_SCHEMA
-USING
-UTC_DATE
-UTC_TIME
-UTC_TIMESTAMP
-VACUUM
-VALID
-VALIDATE
-VALIDATOR
-VALUE
-VALUES
-VAR_POP
-VAR_SAMP
-VARBINARY
-VARCHAR
-VARCHAR2
-VARCHARACTER
-VARIABLE
-VARIABLES
-VARYING
-VERBOSE
-VIEW
-VOLATILE
-WAITFOR
-WHEN
-WHENEVER
-WHERE
-WHILE
-WIDTH_BUCKET
-WINDOW
-WITH
-WITHIN
-WITHOUT
-WORK
-WRITE
-WRITETEXT
-X509
-XOR
-YEAR
-YEAR_MONTH
-ZEROFILL
-ZONE
-```
-
-[simon]: https://www.simonholywell.com/?utm_source=sqlstyle.guide&utm_medium=link&utm_campaign=md-document
- "SimonHolywell.com"
-[issue]: https://github.com/treffynnon/sqlstyle.guide/issues
- "SQL style guide issues on GitHub"
-[fork]: https://github.com/treffynnon/sqlstyle.guide/fork
- "Fork SQL style guide on GitHub"
-[pull]: https://github.com/treffynnon/sqlstyle.guide/pulls/
- "SQL style guide pull requests on GitHub"
-[celko]: https://www.amazon.co.jp/Celkos-Programming-Kaufmann-Management-Systems/dp/0120887975
- "Joe Celko's SQL Programming Style (The Morgan Kaufmann Series in Data Management Systems)"
-[dl-md]: https://raw.githubusercontent.com/treffynnon/sqlstyle.guide/gh-pages/_includes/sqlstyle.guide.ja.md
- "Download the guide in Markdown format"
-[iso-8601]: https://ja.wikipedia.org/wiki/ISO_8601
- "Wikipedia: ISO 8601"
-[rivers]: http://practicaltypography.com/one-space-between-sentences.html
- "Practical Typography: one space between sentences"
-[reserved-keywords]: #reserved-keyword-reference
- "Reserved keyword reference"
-[eav]: https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
- "Wikipedia: Entity-attribute-value model"
-[sqlstyleguide]: http://www.sqlstyle.guide
- "SQL style guide by Simon Holywell"
-[licence-ja]: https://creativecommons.org/licenses/by-sa/4.0/deed.ja
- "Creative Commons Attribution-ShareAlike 4.0 International License"
diff --git a/_includes/sqlstyle.guide.md b/_includes/sqlstyle.guide.md
deleted file mode 100644
index 0ae7dae..0000000
--- a/_includes/sqlstyle.guide.md
+++ /dev/null
@@ -1,1285 +0,0 @@
-# SQL style guide
-
-## Overview
-
-You can use this set of guidelines, [fork them][fork] or make your own - the
-key here is that you pick a style and stick to it. To suggest changes
-or fix bugs please open an [issue][issue] or [pull request][pull] on GitHub.
-
-These guidelines are designed to be compatible with Joe Celko's [SQL Programming
-Style][celko] book to make adoption for teams who have already read that book
-easier. This guide is a little more opinionated in some areas and in others a
-little more relaxed. It is certainly more succinct where [Celko's book][celko]
-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
-project's code base or reference it here for anyone on the project to freely
-read—much harder with a physical book.
-
-SQL style guide by [Simon Holywell][simon] is licensed under a [Creative Commons
-Attribution-ShareAlike 4.0 International License][licence].
-Based on a work at [http://www.sqlstyle.guide][sqlstyleguide].
-
-## General
-
-### Do
-
-* Use consistent and descriptive identifiers and names.
-* Make judicious use of white space and indentation to make code easier to read.
-* Store [ISO-8601][iso-8601] compliant time and date information
- (`YYYY-MM-DD HH:MM:SS.SSSSS`).
-* Try to use only standard SQL functions instead of vendor specific functions for
- reasons of portability.
-* Keep code succinct and devoid of redundant SQL—such as unnecessary quoting or
- parentheses or `WHERE` clauses that can otherwise be derived.
-* Include comments in SQL code where necessary. Use the C style opening `/*` and
- closing `*/` where possible otherwise precede comments with `--` and finish
- them with a new line.
-
-```sql
-SELECT file_hash -- stored ssdeep hash
- FROM file_system
- WHERE file_name = '.vimrc';
-```
-```sql
-/* Updating the file record after writing to the file */
-UPDATE file_system
- SET file_modified_date = '1980-02-22 13:19:01.00000',
- file_size = 209732
- WHERE file_name = '.vimrc';
-```
-
-### Avoid
-
-* CamelCase—it is difficult to scan quickly.
-* Descriptive prefixes or Hungarian notation such as `sp_` or `tbl`.
-* 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
- portability (you may need to configure your SQL server to support this depending
- on vendor).
-* Object oriented design principles should not be applied to SQL or database
- structures.
-
-## Naming conventions
-
-### General
-
-* Ensure the name is unique and does not exist as a
- [reserved keyword][reserved-keywords].
-* Keep the length to a maximum of 30 bytes—in practice this is 30 characters
- unless you are using multi-byte character set.
-* Names must begin with a letter and may not end with an underscore.
-* Only use letters, numbers and underscores in names.
-* Avoid the use of multiple consecutive underscores—these can be hard to read.
-* Use underscores where you would naturally include a space in the name (first
- name becomes `first_name`).
-* Avoid abbreviations and if you have to use them make sure they are commonly
- understood.
-
-```sql
-SELECT first_name
- FROM staff;
-```
-
-### Tables
-
-* Use a collective name or, less ideally, a plural form. For example (in order of
- preference) `staff` and `employees`.
-* Do not prefix with `tbl` or any other such descriptive prefix or Hungarian
- notation.
-* 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
- of a relationship table. Rather than `cars_mechanics` prefer `services`.
-
-### Columns
-
-* Always use the singular name.
-* Where possible avoid simply using `id` as the primary identifier for the 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.
-
-### Aliasing or correlations
-
-* Should relate in some way to the object or expression they are aliasing.
-* As a rule of thumb the correlation name should be the first letter of each word
- in the object's name.
-* If there is already a correlation with the same name then append a number.
-* Always include the `AS` keyword—makes it easier to read as it is explicit.
-* For computed data (`SUM()` or `AVG()`) use the name you would give it were it
- a column defined in the schema.
-
-```sql
-SELECT first_name AS fn
- FROM staff AS s1
- JOIN students AS s2
- ON s2.mentor_id = s1.staff_num;
-```
-```sql
-SELECT SUM(s.monitor_tally) AS monitor_total
- FROM staff AS s;
-```
-
-### Stored procedures
-
-* The name must contain a verb.
-* Do not prefix with `sp_` or any other such descriptive prefix or Hungarian
- notation.
-
-### Uniform suffixes
-
-The following suffixes have a universal meaning ensuring the columns can be read
-and understood easily from SQL code. Use the correct suffix where appropriate.
-
-* `_id`—a unique identifier such as a column that is a primary key.
-* `_status`—flag value or some other status of any type such as
- `publication_status`.
-* `_total`—the total or sum of a collection of values.
-* `_num`—denotes the field contains any kind of number.
-* `_name`—signifies a name such as `first_name`.
-* `_seq`—contains a contiguous sequence of values.
-* `_date`—denotes a column that contains the date of something.
-* `_tally`—a count.
-* `_size`—the size of something such as a file size or clothing.
-* `_addr`—an address for the record could be physical or intangible such as
- `ip_addr`.
-
-## Query syntax
-
-### Reserved words
-
-Always use uppercase for the [reserved keywords][reserved-keywords]
-like `SELECT` and `WHERE`.
-
-It is best to avoid the abbreviated keywords and use the full length ones where
-available (prefer `ABSOLUTE` to `ABS`).
-
-Do not use database server specific keywords where an ANSI SQL keyword already
-exists performing the same function. This helps to make code more portable.
-
-```sql
-SELECT model_num
- FROM phones AS p
- WHERE p.release_date > '2014-09-30';
-```
-
-### White space
-
-To make the code easier to read it is important that the correct compliment of
-spacing is used. Do not crowd code or remove natural language spaces.
-
-#### Spaces
-
-Spaces should be used to line up the code so that the root keywords all end on
-the same character boundary. This forms a river down the middle making it easy for
-the readers eye to scan over the code and separate the keywords from the
-implementation detail. Rivers are [bad in typography][rivers], but helpful here.
-
-```sql
-(SELECT f.species_name,
- AVG(f.height) AS average_height, AVG(f.diameter) AS average_diameter
- FROM flora AS f
- WHERE f.species_name = 'Banksia'
- OR f.species_name = 'Sheoak'
- OR f.species_name = 'Wattle'
- GROUP BY f.species_name, f.observation_date)
-
- UNION ALL
-
-(SELECT b.species_name,
- AVG(b.height) AS average_height, AVG(b.diameter) AS average_diameter
- FROM botanic_garden_flora AS b
- WHERE b.species_name = 'Banksia'
- OR b.species_name = 'Sheoak'
- OR b.species_name = 'Wattle'
- GROUP BY b.species_name, b.observation_date)
-```
-
-Notice that `SELECT`, `FROM`, etc. are all right aligned while the actual column
-names and implementation specific details are left aligned.
-
-Although not exhaustive always include spaces:
-
-* before and after equals (`=`)
-* after commas (`,`)
-* surrounding apostrophes (`'`) where not within parentheses or with a trailing
- comma or semicolon.
-
-```sql
-SELECT a.title, a.release_date, a.recording_date
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-#### Line spacing
-
-Always include newlines/vertical space:
-
-* before `AND` or `OR`
-* after semicolons to separate queries for easier reading
-* after each keyword definition
-* after a comma when separating multiple columns into logical groups
-* to separate code into related sections, which helps to ease the readability of
- large chunks of code.
-
-Keeping all the keywords aligned to the righthand side and the values left aligned
-creates a uniform gap down the middle of query. It makes it much easier to scan
-the query definition over quickly too.
-
-```sql
-INSERT INTO albums (title, release_date, recording_date)
-VALUES ('Charcoal Lane', '1990-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000'),
- ('The New Danger', '2008-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000');
-```
-
-```sql
-UPDATE albums
- SET release_date = '1990-01-01 01:01:01.00000'
- WHERE title = 'The New Danger';
-```
-
-```sql
-SELECT a.title,
- a.release_date, a.recording_date, a.production_date -- grouped dates together
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-### Indentation
-
-To ensure that SQL is readable it is important that standards of indentation
-are followed.
-
-#### Joins
-
-Joins should be indented to the other side of the river and grouped with a new
-line where necessary.
-
-```sql
-SELECT r.last_name
- FROM riders AS r
- INNER JOIN bikes AS b
- ON r.bike_vin_num = b.vin_num
- AND b.engines > 2
-
- INNER JOIN crew AS c
- ON r.crew_chief_last_name = c.last_name
- AND c.chief = 'Y';
-```
-
-#### Subqueries
-
-Subqueries 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
-the closing parenthesis on a new line at the same character position as its
-opening partner—this is especially true where you have nested subqueries.
-
-```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
- 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');
-```
-
-### Preferred formalisms
-
-* Make use of `BETWEEN` where possible instead of combining multiple statements
- with `AND`.
-* Similarly use `IN()` instead of multiple `OR` clauses.
-* Where a value needs to be interpreted before leaving the database use the `CASE`
- expression. `CASE` statements can be nested to form more complex logical structures.
-* Avoid the use of `UNION` clauses and temporary tables where possible. If the
- schema can be optimised to remove the reliance on these features then it most
- likely should be.
-
-```sql
-SELECT CASE postcode
- WHEN 'BN1' THEN 'Brighton'
- WHEN 'EH1' THEN 'Edinburgh'
- END AS city
- FROM office_locations
- WHERE country = 'United Kingdom'
- AND opening_time BETWEEN 8 AND 9
- AND postcode IN ('EH1', 'BN1', 'NN1', 'KW1')
-```
-
-## Create syntax
-
-When declaring schema information it is also important to maintain human
-readable code. To facilitate this ensure the column definitions are ordered and
-grouped where it makes sense to do so.
-
-Indent column definitions by four (4) spaces within the `CREATE` definition.
-
-### Choosing data types
-
-* Where possible do not use vendor specific data types—these are not portable and
- may not be available in older versions of the same vendor's software.
-* Only use `REAL` or `FLOAT` types where it is strictly necessary for floating
- point mathematics otherwise prefer `NUMERIC` and `DECIMAL` at all times. Floating
- point rounding errors are a nuisance!
-
-### Specifying default values
-
-* The default value must be the same type as the column—if a column is declared
- a `DECIMAL` do not provide an `INTEGER` default value.
-* Default values must follow the data type declaration and come before any
- `NOT NULL` statement.
-
-### Constraints and keys
-
-Constraints and their subset, keys, are a very important component of any
-database definition. They can quickly become very difficult to read and reason
-about though so it is important that a standard set of guidelines are followed.
-
-#### Choosing keys
-
-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.
-
-1. The key should be unique to some degree.
-2. Consistency in terms of data type for the value across the schema and a lower
- likelihood of this changing in the future.
-3. Can the value be validated against a standard format (such as one published by
- ISO)? Encouraging conformity to point 2.
-4. Keeping the key as simple as possible whilst not being scared to use compound
- keys where necessary.
-
-It is a reasoned and considered balancing act to be performed at the definition
-of a database. Should requirements evolve in the future it is possible to make
-changes to the definitions to keep them up to date.
-
-#### Defining constraints
-
-Once the keys are decided it is possible to define them in the system using
-constraints along with field value validation.
-
-##### General
-
-* Tables must have at least one key to be complete and useful.
-* Constraints should be given a custom name excepting `UNIQUE`, `PRIMARY KEY`
- and `FOREIGN KEY` where the database vendor will generally supply sufficiently
- intelligible names automatically.
-
-##### Layout and order
-
-* Specify the primary key first right after the `CREATE TABLE` statement.
-* Constraints should be defined directly beneath the column they correspond to.
- Indent the constraint so that it aligns to the right of the column name.
-* If it is a multi-column constraint then consider putting it as close to both
- column definitions as possible and where this is difficult as a last resort
- include them at the end of the `CREATE TABLE` definition.
-* If it is a table level constraint that applies to the entire table then it
- should also appear at the end.
-* Use alphabetical order where `ON DELETE` comes before `ON UPDATE`.
-* If it make senses to do so align each aspect of the query on the same character
- position. For example all `NOT NULL` definitions could start at the same
- character position. This is not hard and fast, but it certainly makes the code
- much easier to scan and read.
-
-##### Validation
-
-* Use `LIKE` and `SIMILAR TO` constraints to ensure the integrity of strings
- where the format is known.
-* Where the ultimate range of a numerical value is known it must be written as a
- range `CHECK()` to prevent incorrect values entering the database or the silent
- truncation of data too large to fit the column definition. In the least it
- should check that the value is greater than zero in most cases.
-* `CHECK()` constraints should be kept in separate clauses to ease debugging.
-
-##### Example
-
-```sql
-CREATE TABLE staff (
- PRIMARY KEY (staff_num),
- staff_num INT(5) NOT NULL,
- first_name VARCHAR(100) NOT NULL,
- pens_in_drawer INT(2) NOT NULL,
- CONSTRAINT pens_in_drawer_range
- CHECK(pens_in_drawer >= 1 AND pens_in_drawer < 100)
-);
-```
-
-### Designs to avoid
-
-* Object oriented design principles do not effectively translate to relational
- database designs—avoid this pitfall.
-* Placing the value in one column and the units in another column. The column
- should make the units self evident to prevent the requirement to combine
- columns again later in the application. Use `CHECK()` to ensure valid data is
- inserted into the column.
-* [EAV (Entity Attribute Value)][eav] tables—use a specialist product intended for
- handling such schema-less data instead.
-* Splitting up data that should be in one table across many because of arbitrary
- concerns such as time-based archiving or location in a multi-national
- organisation. Later queries must then work across multiple tables with `UNION`
- rather than just simply querying one table.
-
-
-## Appendix
-
-### Reserved keyword reference
-
-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
-A
-ABORT
-ABS
-ABSOLUTE
-ACCESS
-ACTION
-ADA
-ADD
-ADMIN
-AFTER
-AGGREGATE
-ALIAS
-ALL
-ALLOCATE
-ALSO
-ALTER
-ALWAYS
-ANALYSE
-ANALYZE
-AND
-ANY
-ARE
-ARRAY
-AS
-ASC
-ASENSITIVE
-ASSERTION
-ASSIGNMENT
-ASYMMETRIC
-AT
-ATOMIC
-ATTRIBUTE
-ATTRIBUTES
-AUDIT
-AUTHORIZATION
-AUTO_INCREMENT
-AVG
-AVG_ROW_LENGTH
-BACKUP
-BACKWARD
-BEFORE
-BEGIN
-BERNOULLI
-BETWEEN
-BIGINT
-BINARY
-BIT
-BIT_LENGTH
-BITVAR
-BLOB
-BOOL
-BOOLEAN
-BOTH
-BREADTH
-BREAK
-BROWSE
-BULK
-BY
-C
-CACHE
-CALL
-CALLED
-CARDINALITY
-CASCADE
-CASCADED
-CASE
-CAST
-CATALOG
-CATALOG_NAME
-CEIL
-CEILING
-CHAIN
-CHANGE
-CHAR
-CHAR_LENGTH
-CHARACTER
-CHARACTER_LENGTH
-CHARACTER_SET_CATALOG
-CHARACTER_SET_NAME
-CHARACTER_SET_SCHEMA
-CHARACTERISTICS
-CHARACTERS
-CHECK
-CHECKED
-CHECKPOINT
-CHECKSUM
-CLASS
-CLASS_ORIGIN
-CLOB
-CLOSE
-CLUSTER
-CLUSTERED
-COALESCE
-COBOL
-COLLATE
-COLLATION
-COLLATION_CATALOG
-COLLATION_NAME
-COLLATION_SCHEMA
-COLLECT
-COLUMN
-COLUMN_NAME
-COLUMNS
-COMMAND_FUNCTION
-COMMAND_FUNCTION_CODE
-COMMENT
-COMMIT
-COMMITTED
-COMPLETION
-COMPRESS
-COMPUTE
-CONDITION
-CONDITION_NUMBER
-CONNECT
-CONNECTION
-CONNECTION_NAME
-CONSTRAINT
-CONSTRAINT_CATALOG
-CONSTRAINT_NAME
-CONSTRAINT_SCHEMA
-CONSTRAINTS
-CONSTRUCTOR
-CONTAINS
-CONTAINSTABLE
-CONTINUE
-CONVERSION
-CONVERT
-COPY
-CORR
-CORRESPONDING
-COUNT
-COVAR_POP
-COVAR_SAMP
-CREATE
-CREATEDB
-CREATEROLE
-CREATEUSER
-CROSS
-CSV
-CUBE
-CUME_DIST
-CURRENT
-CURRENT_DATE
-CURRENT_DEFAULT_TRANSFORM_GROUP
-CURRENT_PATH
-CURRENT_ROLE
-CURRENT_TIME
-CURRENT_TIMESTAMP
-CURRENT_TRANSFORM_GROUP_FOR_TYPE
-CURRENT_USER
-CURSOR
-CURSOR_NAME
-CYCLE
-DATA
-DATABASE
-DATABASES
-DATE
-DATETIME
-DATETIME_INTERVAL_CODE
-DATETIME_INTERVAL_PRECISION
-DAY
-DAY_HOUR
-DAY_MICROSECOND
-DAY_MINUTE
-DAY_SECOND
-DAYOFMONTH
-DAYOFWEEK
-DAYOFYEAR
-DBCC
-DEALLOCATE
-DEC
-DECIMAL
-DECLARE
-DEFAULT
-DEFAULTS
-DEFERRABLE
-DEFERRED
-DEFINED
-DEFINER
-DEGREE
-DELAY_KEY_WRITE
-DELAYED
-DELETE
-DELIMITER
-DELIMITERS
-DENSE_RANK
-DENY
-DEPTH
-DEREF
-DERIVED
-DESC
-DESCRIBE
-DESCRIPTOR
-DESTROY
-DESTRUCTOR
-DETERMINISTIC
-DIAGNOSTICS
-DICTIONARY
-DISABLE
-DISCONNECT
-DISK
-DISPATCH
-DISTINCT
-DISTINCTROW
-DISTRIBUTED
-DIV
-DO
-DOMAIN
-DOUBLE
-DROP
-DUAL
-DUMMY
-DUMP
-DYNAMIC
-DYNAMIC_FUNCTION
-DYNAMIC_FUNCTION_CODE
-EACH
-ELEMENT
-ELSE
-ELSEIF
-ENABLE
-ENCLOSED
-ENCODING
-ENCRYPTED
-END
-END-EXEC
-ENUM
-EQUALS
-ERRLVL
-ESCAPE
-ESCAPED
-EVERY
-EXCEPT
-EXCEPTION
-EXCLUDE
-EXCLUDING
-EXCLUSIVE
-EXEC
-EXECUTE
-EXISTING
-EXISTS
-EXIT
-EXP
-EXPLAIN
-EXTERNAL
-EXTRACT
-FALSE
-FETCH
-FIELDS
-FILE
-FILLFACTOR
-FILTER
-FINAL
-FIRST
-FLOAT
-FLOAT4
-FLOAT8
-FLOOR
-FLUSH
-FOLLOWING
-FOR
-FORCE
-FOREIGN
-FORTRAN
-FORWARD
-FOUND
-FREE
-FREETEXT
-FREETEXTTABLE
-FREEZE
-FROM
-FULL
-FULLTEXT
-FUNCTION
-FUSION
-G
-GENERAL
-GENERATED
-GET
-GLOBAL
-GO
-GOTO
-GRANT
-GRANTED
-GRANTS
-GREATEST
-GROUP
-GROUPING
-HANDLER
-HAVING
-HEADER
-HEAP
-HIERARCHY
-HIGH_PRIORITY
-HOLD
-HOLDLOCK
-HOST
-HOSTS
-HOUR
-HOUR_MICROSECOND
-HOUR_MINUTE
-HOUR_SECOND
-IDENTIFIED
-IDENTITY
-IDENTITY_INSERT
-IDENTITYCOL
-IF
-IGNORE
-ILIKE
-IMMEDIATE
-IMMUTABLE
-IMPLEMENTATION
-IMPLICIT
-IN
-INCLUDE
-INCLUDING
-INCREMENT
-INDEX
-INDICATOR
-INFILE
-INFIX
-INHERIT
-INHERITS
-INITIAL
-INITIALIZE
-INITIALLY
-INNER
-INOUT
-INPUT
-INSENSITIVE
-INSERT
-INSERT_ID
-INSTANCE
-INSTANTIABLE
-INSTEAD
-INT
-INT1
-INT2
-INT3
-INT4
-INT8
-INTEGER
-INTERSECT
-INTERSECTION
-INTERVAL
-INTO
-INVOKER
-IS
-ISAM
-ISNULL
-ISOLATION
-ITERATE
-JOIN
-K
-KEY
-KEY_MEMBER
-KEY_TYPE
-KEYS
-KILL
-LANCOMPILER
-LANGUAGE
-LARGE
-LAST
-LAST_INSERT_ID
-LATERAL
-LEADING
-LEAST
-LEAVE
-LEFT
-LENGTH
-LESS
-LEVEL
-LIKE
-LIMIT
-LINENO
-LINES
-LISTEN
-LN
-LOAD
-LOCAL
-LOCALTIME
-LOCALTIMESTAMP
-LOCATION
-LOCATOR
-LOCK
-LOGIN
-LOGS
-LONG
-LONGBLOB
-LONGTEXT
-LOOP
-LOW_PRIORITY
-LOWER
-M
-MAP
-MATCH
-MATCHED
-MAX
-MAX_ROWS
-MAXEXTENTS
-MAXVALUE
-MEDIUMBLOB
-MEDIUMINT
-MEDIUMTEXT
-MEMBER
-MERGE
-MESSAGE_LENGTH
-MESSAGE_OCTET_LENGTH
-MESSAGE_TEXT
-METHOD
-MIDDLEINT
-MIN
-MIN_ROWS
-MINUS
-MINUTE
-MINUTE_MICROSECOND
-MINUTE_SECOND
-MINVALUE
-MLSLABEL
-MOD
-MODE
-MODIFIES
-MODIFY
-MODULE
-MONTH
-MONTHNAME
-MORE
-MOVE
-MULTISET
-MUMPS
-MYISAM
-NAME
-NAMES
-NATIONAL
-NATURAL
-NCHAR
-NCLOB
-NESTING
-NEW
-NEXT
-NO
-NO_WRITE_TO_BINLOG
-NOAUDIT
-NOCHECK
-NOCOMPRESS
-NOCREATEDB
-NOCREATEROLE
-NOCREATEUSER
-NOINHERIT
-NOLOGIN
-NONCLUSTERED
-NONE
-NORMALIZE
-NORMALIZED
-NOSUPERUSER
-NOT
-NOTHING
-NOTIFY
-NOTNULL
-NOWAIT
-NULL
-NULLABLE
-NULLIF
-NULLS
-NUMBER
-NUMERIC
-OBJECT
-OCTET_LENGTH
-OCTETS
-OF
-OFF
-OFFLINE
-OFFSET
-OFFSETS
-OIDS
-OLD
-ON
-ONLINE
-ONLY
-OPEN
-OPENDATASOURCE
-OPENQUERY
-OPENROWSET
-OPENXML
-OPERATION
-OPERATOR
-OPTIMIZE
-OPTION
-OPTIONALLY
-OPTIONS
-OR
-ORDER
-ORDERING
-ORDINALITY
-OTHERS
-OUT
-OUTER
-OUTFILE
-OUTPUT
-OVER
-OVERLAPS
-OVERLAY
-OVERRIDING
-OWNER
-PACK_KEYS
-PAD
-PARAMETER
-PARAMETER_MODE
-PARAMETER_NAME
-PARAMETER_ORDINAL_POSITION
-PARAMETER_SPECIFIC_CATALOG
-PARAMETER_SPECIFIC_NAME
-PARAMETER_SPECIFIC_SCHEMA
-PARAMETERS
-PARTIAL
-PARTITION
-PASCAL
-PASSWORD
-PATH
-PCTFREE
-PERCENT
-PERCENT_RANK
-PERCENTILE_CONT
-PERCENTILE_DISC
-PLACING
-PLAN
-PLI
-POSITION
-POSTFIX
-POWER
-PRECEDING
-PRECISION
-PREFIX
-PREORDER
-PREPARE
-PREPARED
-PRESERVE
-PRIMARY
-PRINT
-PRIOR
-PRIVILEGES
-PROC
-PROCEDURAL
-PROCEDURE
-PROCESS
-PROCESSLIST
-PUBLIC
-PURGE
-QUOTE
-RAID0
-RAISERROR
-RANGE
-RANK
-RAW
-READ
-READS
-READTEXT
-REAL
-RECHECK
-RECONFIGURE
-RECURSIVE
-REF
-REFERENCES
-REFERENCING
-REGEXP
-REGR_AVGX
-REGR_AVGY
-REGR_COUNT
-REGR_INTERCEPT
-REGR_R2
-REGR_SLOPE
-REGR_SXX
-REGR_SXY
-REGR_SYY
-REINDEX
-RELATIVE
-RELEASE
-RELOAD
-RENAME
-REPEAT
-REPEATABLE
-REPLACE
-REPLICATION
-REQUIRE
-RESET
-RESIGNAL
-RESOURCE
-RESTART
-RESTORE
-RESTRICT
-RESULT
-RETURN
-RETURNED_CARDINALITY
-RETURNED_LENGTH
-RETURNED_OCTET_LENGTH
-RETURNED_SQLSTATE
-RETURNS
-REVOKE
-RIGHT
-RLIKE
-ROLE
-ROLLBACK
-ROLLUP
-ROUTINE
-ROUTINE_CATALOG
-ROUTINE_NAME
-ROUTINE_SCHEMA
-ROW
-ROW_COUNT
-ROW_NUMBER
-ROWCOUNT
-ROWGUIDCOL
-ROWID
-ROWNUM
-ROWS
-RULE
-SAVE
-SAVEPOINT
-SCALE
-SCHEMA
-SCHEMA_NAME
-SCHEMAS
-SCOPE
-SCOPE_CATALOG
-SCOPE_NAME
-SCOPE_SCHEMA
-SCROLL
-SEARCH
-SECOND
-SECOND_MICROSECOND
-SECTION
-SECURITY
-SELECT
-SELF
-SENSITIVE
-SEPARATOR
-SEQUENCE
-SERIALIZABLE
-SERVER_NAME
-SESSION
-SESSION_USER
-SET
-SETOF
-SETS
-SETUSER
-SHARE
-SHOW
-SHUTDOWN
-SIGNAL
-SIMILAR
-SIMPLE
-SIZE
-SMALLINT
-SOME
-SONAME
-SOURCE
-SPACE
-SPATIAL
-SPECIFIC
-SPECIFIC_NAME
-SPECIFICTYPE
-SQL
-SQL_BIG_RESULT
-SQL_BIG_SELECTS
-SQL_BIG_TABLES
-SQL_CALC_FOUND_ROWS
-SQL_LOG_OFF
-SQL_LOG_UPDATE
-SQL_LOW_PRIORITY_UPDATES
-SQL_SELECT_LIMIT
-SQL_SMALL_RESULT
-SQL_WARNINGS
-SQLCA
-SQLCODE
-SQLERROR
-SQLEXCEPTION
-SQLSTATE
-SQLWARNING
-SQRT
-SSL
-STABLE
-START
-STARTING
-STATE
-STATEMENT
-STATIC
-STATISTICS
-STATUS
-STDDEV_POP
-STDDEV_SAMP
-STDIN
-STDOUT
-STORAGE
-STRAIGHT_JOIN
-STRICT
-STRING
-STRUCTURE
-STYLE
-SUBCLASS_ORIGIN
-SUBLIST
-SUBMULTISET
-SUBSTRING
-SUCCESSFUL
-SUM
-SUPERUSER
-SYMMETRIC
-SYNONYM
-SYSDATE
-SYSID
-SYSTEM
-SYSTEM_USER
-TABLE
-TABLE_NAME
-TABLES
-TABLESAMPLE
-TABLESPACE
-TEMP
-TEMPLATE
-TEMPORARY
-TERMINATE
-TERMINATED
-TEXT
-TEXTSIZE
-THAN
-THEN
-TIES
-TIME
-TIMESTAMP
-TIMEZONE_HOUR
-TIMEZONE_MINUTE
-TINYBLOB
-TINYINT
-TINYTEXT
-TO
-TOAST
-TOP
-TOP_LEVEL_COUNT
-TRAILING
-TRAN
-TRANSACTION
-TRANSACTION_ACTIVE
-TRANSACTIONS_COMMITTED
-TRANSACTIONS_ROLLED_BACK
-TRANSFORM
-TRANSFORMS
-TRANSLATE
-TRANSLATION
-TREAT
-TRIGGER
-TRIGGER_CATALOG
-TRIGGER_NAME
-TRIGGER_SCHEMA
-TRIM
-TRUE
-TRUNCATE
-TRUSTED
-TSEQUAL
-TYPE
-UESCAPE
-UID
-UNBOUNDED
-UNCOMMITTED
-UNDER
-UNDO
-UNENCRYPTED
-UNION
-UNIQUE
-UNKNOWN
-UNLISTEN
-UNLOCK
-UNNAMED
-UNNEST
-UNSIGNED
-UNTIL
-UPDATE
-UPDATETEXT
-UPPER
-USAGE
-USE
-USER
-USER_DEFINED_TYPE_CATALOG
-USER_DEFINED_TYPE_CODE
-USER_DEFINED_TYPE_NAME
-USER_DEFINED_TYPE_SCHEMA
-USING
-UTC_DATE
-UTC_TIME
-UTC_TIMESTAMP
-VACUUM
-VALID
-VALIDATE
-VALIDATOR
-VALUE
-VALUES
-VAR_POP
-VAR_SAMP
-VARBINARY
-VARCHAR
-VARCHAR2
-VARCHARACTER
-VARIABLE
-VARIABLES
-VARYING
-VERBOSE
-VIEW
-VOLATILE
-WAITFOR
-WHEN
-WHENEVER
-WHERE
-WHILE
-WIDTH_BUCKET
-WINDOW
-WITH
-WITHIN
-WITHOUT
-WORK
-WRITE
-WRITETEXT
-X509
-XOR
-YEAR
-YEAR_MONTH
-ZEROFILL
-ZONE
-```
-
-[simon]: https://www.simonholywell.com/?utm_source=sqlstyle.guide&utm_medium=link&utm_campaign=md-document
- "SimonHolywell.com"
-[issue]: https://github.com/treffynnon/sqlstyle.guide/issues
- "SQL style guide issues on GitHub"
-[fork]: https://github.com/treffynnon/sqlstyle.guide/fork
- "Fork SQL style guide on GitHub"
-[pull]: https://github.com/treffynnon/sqlstyle.guide/pulls/
- "SQL style guide pull requests on GitHub"
-[celko]: https://www.amazon.com/gp/product/0120887975/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=treffynnon-20&linkId=9c88eac8cd420e979675c815771313d5
- "Joe Celko's SQL Programming Style (The Morgan Kaufmann Series in Data Management Systems)"
-[dl-md]: https://raw.githubusercontent.com/treffynnon/sqlstyle.guide/gh-pages/_includes/sqlstyle.guide.md
- "Download the guide in Markdown format"
-[iso-8601]: https://en.wikipedia.org/wiki/ISO_8601
- "Wikipedia: ISO 8601"
-[rivers]: http://practicaltypography.com/one-space-between-sentences.html
- "Practical Typography: one space between sentences"
-[reserved-keywords]: #reserved-keyword-reference
- "Reserved keyword reference"
-[eav]: https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
- "Wikipedia: Entity–attribute–value model"
-[sqlstyleguide]: http://www.sqlstyle.guide
- "SQL style guide by Simon Holywell"
-[licence]: http://creativecommons.org/licenses/by-sa/4.0/
- "Creative Commons Attribution-ShareAlike 4.0 International License"
diff --git a/_includes/sqlstyle.guide.pt-BR.md b/_includes/sqlstyle.guide.pt-BR.md
deleted file mode 100644
index cd95a90..0000000
--- a/_includes/sqlstyle.guide.pt-BR.md
+++ /dev/null
@@ -1,1296 +0,0 @@
-# Guia de estilo SQL
-
-## Visão geral
-
-Você pode utilizar estas diretrizes, [fazer um fork][fork] ou criar
-suas próprias - a chave aqui é escolher um estilo e seguir. Para sugerir
-alterações ou correções de bugs, por favor abra uma [issue][issue] ou faça um
-[pull request][pull] no GitHub.
-
-Estas diretrizes foram desenhadas em conformidade com o livro
-[SQL Programming Style][celko] de Joe Celko, para serem adotadas mais facilmente
-por equipes que já leram o livro. Em relação ao livro, este guia é um pouco mais
-opinativo em algumas áreas e mais tranquilo em outras. Certamente é
-mais sucinto que [o livro de Celko][celko], que contém anedotas e raciocínios por
-trás de cada regra.
-
-É fácil incluir esse guia no [formato Markdown][dl-md] como parte do código
-base de um projeto, ou fazer uma referência a esta página para que qualquer um
-no projeto possa ler livremente.
-
-O Guia De Estilo SQL por [Simon Holywell][simon] é licenciado sob a
-[Creative Commons Attribution-ShareAlike 4.0 International License][licence].
-Baseado no trabalho em [http://www.sqlstyle.guide][sqlstyleguide].
-
-## Geral
-
-### Faça
-
-* Utilize identificadores e nomes consistentes e descritivos.
-* Tenha critério ao utilizar espaços em branco e indentação para melhorar
- a legibilidade do código.
-* Armazene informações de data e hora compatíveis com [ISO-8601][iso-8601]
- (`YYYY-MM-DD HH:MM:SS.SSSSS`).
-* Por questões de portabilidade, tente utilizar apenas funções SQL padrão no lugar
- de funções específicas de servidores SQL de fornecedores.
-* Mantenha o código sucinto e desprovido de SQL redundante—como adição de aspas
- e parênteses desnecessários, ou cláusulas WHERE que podem ser derivadas.
-* Inclua comentários no código SQL quando necessário. Utilize o estilo C abrindo
- com `/*` e fechando com `*/` onde possível. Onde não for, preceda os
- comentários com `--` e termine com uma nova linha.
-
-```sql
-SELECT file_hash -- stored ssdeep hash
- FROM file_system
- WHERE file_name = '.vimrc';
-```
-```sql
-/* Updating the file record after writing to the file */
-UPDATE file_system
- SET file_modified_date = '1980-02-22 13:19:01.00000',
- file_size = 209732
- WHERE file_name = '.vimrc';
-```
-
-### Evite
-
-* CamelCase—difícil de se analisar rapidamente.
-* Prefixos descritivos ou notação húngara como `sp_` ou `tbl`.
-* Plurais—utilize termos coletivos onde possível. Por exemplo,
- `pessoal` ao invés de `funcionários` ou `pessoa` no lugar de `indivíduos`.
-* Identificadores entre aspas—caso necessário, utilize as aspas duplas SQL92
- por questões de portabilidade (dependendo do fornecedor, pode ser necessário
- configurar seu servidor SQL para ativar o suporte).
-* Princípios de design orientado a objetos não devem ser aplicados ao SQL ou
- a estrutura de bancos de dados.
-
-## Convenções de nomenclatura
-
-### Geral
-
-* Tenha certeza que o nome é único e não é uma [palavra-chave reservada][reserved-keywords].
-* Mantenha o tamanho máximo em 30 bytes—na prática isso são
- 30 caracateres, a não ser que esteja utilizando um conjunto de
- caracateres multi-byte.
-* Nomes devem começar com uma letra e não devem terminar com underscore.
-* Utilize apenas letras, números e underscores em nomes.
-* Evite o uso de múltiplos underscores consecutivos—eles podem ser difíceis de
-se ler.
-* Utilize underscores onde você normalemnte incluiria um espaço
- (primeiro nome se torna `primeiro_nome`).
-* Evite abreviações. Se precisar utilizá-las, tenha certeza de que serão
- amplamente compreendidas.
-
-```sql
-SELECT first_name
- FROM staff;
-```
-
-### Tabelas
-
-* Utilize um nome coletivo ou menos idealmente, plurais. Por exemplo,
- (em ordem de preferência) `pessoal` e `empregados`.
-* Não utilize prefixos com `tbl` ou qualquer outro prefixo descritivo ou notação
- húngara.
-* Nunca dê a uma tabela o mesmo nome de uma das suas colunas e vice versa.
-* Evite quando possível concatenar dois nomes de tabelas para criar o nome de
- uma tabela de relacionamento. No lugar de `mecanicos_de_carro`,
- prefira `servicos`.
-
-### Colunas
-
-* Sempre utilize nomes no singular.
-* Quando possível, evite usar apenas `id` como identificador primário da tabela.
-* Não adicione uma coluna como o mesmo nome da tabela e vice versa.
-* Sempre utilize caixa baixa, exceto onde capitalização fizer sentido (como
- em nomes próprios).
-
-### Aliasing ou correlações
-
-* Deve se relacionar de alguma forma com o objeto ou expressão em que o aliasing
- está sendo aplicado.
-* Como regra geral, o nome da correlação deve ser a primeira letra de cada palavra
- do nome do objeto.
-* Se já existe uma correlação com o mesmo nome, acrescente um número.
-* Sempre inclua a palavra-chave `AS`—isso torna o aliasing explícito e mais fácil de ler.
-* Para dados computados (`SUM()` ou `AVG()`), utilize o nome que você daria se
- fosse uma coluna definida no schema.
-
-```sql
-SELECT first_name AS fn
- FROM staff AS s1
- JOIN students AS s2
- ON s2.mentor_id = s1.staff_num;
-```
-```sql
-SELECT SUM(s.monitor_tally) AS monitor_total
- FROM staff AS s;
-```
-
-### Stored procedures
-
-* O nome deve conter um verbo.
-* Não adicione `sp_` ou qualquer outro prefixo descritivo ou
- notação húngara.
-
-### Sufixos uniformes
-
-Os sufixos seguintes tem sentido universal, garantindo que as colunas possam ser
-lidas e compreendidas facilmente no código SQL. Utilize os sufixos corretos
-onde for apropriado.
-
-* `_id`—um identificador único, como uma coluna que é a chave primária.
-* `_status`—flag value ou outro status de qualquer tipo, como `publication_status`.
-* `_total`—o total ou a soma de uma coleção de valores.
-* `_num`—indica que o campo contém qualquer tipo de número.
-* `_name`—significa um nome, como `first_name`.
-* `_seq`—contém uma sequência contígua de valores.
-* `_seq`—contains a contiguous sequence of values.
-* `_date`—indica uma coluna que contém a data de alguma coisa.
-* `_tally`—uma contagem.
-* `_size`—o tamanho de algo, como o tamanho de um arquivo ou de uma roupa.
-* `_addr`—um endereço. Pode ser físico ou intangível, como por exemplo `ip_addr`.
-
-## Sintaxe de Queries
-
-### Palavras reservadas
-
-Sempre utilize caixa alta para [palavras-chave reservadas][reserved-keywords],
-como `SELECT` e `WHERE`.
-
-É melhor evitar palavras-chave abreviadas; utilize suas variações por extenso
-(use `ABSOLUTE` ao invés de `ABS`).
-
-Não utilize palavras-chave de um fornecedor específico de banco de dados. Onde for
-possível, utilize palavras-chave reservadas ANSI SQL que tenham a mesma função.
-Isso ajuda na portabilidade do código.
-
-```sql
-SELECT model_num
- FROM phones AS p
- WHERE p.release_date > '2014-09-30';
-```
-
-### Espaços em branco
-
-Para tornar o código mais fácil de ler, é importante o uso correto do espaçamento.
-Não insira código ou remova espaços em linguagem natural.
-
-#### Espaços
-
-Espaços devem ser utilizados para alinhar o código, de forma que as palavras-chave
-fiquem sempre no mesmo limite. Isso forma um rio tipográfico, tornando fácil visualizar
-o código e separar as palavras-chave dos detalhes de implementação.
-Rios são [ruins na tipografia][rivers], mas úteis aqui.
-
-```sql
-(SELECT f.species_name,
- AVG(f.height) AS average_height, AVG(f.diameter) AS average_diameter
- FROM flora AS f
- WHERE f.species_name = 'Banksia'
- OR f.species_name = 'Sheoak'
- OR f.species_name = 'Wattle'
- GROUP BY f.species_name, f.observation_date)
-
- UNION ALL
-
-(SELECT b.species_name,
- AVG(b.height) AS average_height, AVG(b.diameter) AS average_diameter
- FROM botanic_garden_flora AS b
- WHERE b.species_name = 'Banksia'
- OR b.species_name = 'Sheoak'
- OR b.species_name = 'Wattle'
- GROUP BY b.species_name, b.observation_date)
-```
-
-Note que o `SELECT`, `FROM`, etc. estão todos alinhados à direita, enquanto
-os nomes das colunas em si e os detalhes de implementação estão alinhados à
-esquerda.
-
-Sempre inclua espaços:
-
-* antes e depois do símbolo igual (`=`)
-* depois de vírgulas (`,`)
-* ao redor de apóstrofes (`'`) caso não estejam entre parênteses ou com uma vírgula
- ou ponto e vírgula.
-
-```sql
-SELECT a.title, a.release_date, a.recording_date
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-#### Espaçamento de linhas
-
-Sempre inclua novas linhas/espaço vertical:
-
-* antes de `AND` ou `OR`
-* depois de vírgulas, separando as queries para facilitar a leitura
-* depois de cada definição de palavras-chave
-* depois de um ponto, quando separando múltiplas colunas em grupos lógicos
-* para separar código em seções relacionadas, o que ajuda na legibilidade de
- grandes pedaços de código.
-
-Manter todas as palavras-chave alinhadas à direita e os valores alinhados
-à esquerda cria uma lacuna no meio da query. Isso torna a análise da definição
-da query mais fácil e rápida.
-
-```sql
-INSERT INTO albums (title, release_date, recording_date)
-VALUES ('Charcoal Lane', '1990-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000'),
- ('The New Danger', '2008-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000');
-```
-
-```sql
-UPDATE albums
- SET release_date = '1990-01-01 01:01:01.00000'
- WHERE title = 'The New Danger';
-```
-
-```sql
-SELECT a.title,
- a.release_date, a.recording_date, a.production_date -- grouped dates together
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-### Indentação
-
-Para garantir que o SQL seja legível, é importante que padrões de indentação
-sejam seguidos.
-
-#### Joins
-
-Joins devem ser indentados do outro lado do rio tipográfico e agrupados
-com uma nova linha quando necessário.
-
-```sql
-SELECT r.last_name
- FROM riders AS r
- INNER JOIN bikes AS b
- ON r.bike_vin_num = b.vin_num
- AND b.engines > 2
-
- INNER JOIN crew AS c
- ON r.crew_chief_last_name = c.last_name
- AND c.chief = 'Y';
-```
-
-#### Subqueries
-
-Subqueries também devem ser alinhadas à direita do rio e seguir o mesmo estilo
-de qualquer outra query. As vezes faz sentido ter o parêntese de fechamento em
-uma nova linha na mesma posição que o parêntese de abertura foi definido—isso é
-especialmente importante onde você tem subqueries aninhadas.
-
-```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
- 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');
-```
-
-### Formalismos preferidos
-
-* Faça uso de `BETWEEN` onde possível, ao invés de combinar múltiplos `AND`.
-* De forma similar, utilize `IN()` ao invés de múltiplas cláusulas `OR`.
-* Onde um valor precisa ser interpretado antes de ser retornado pelo banco de
- dados, use a expressão `CASE`. Cláusulas `CASE` podem ser aninhadas para formar
- estruturas lógicas mais complexas.
-* Evite o uso de cláusulas `UNION` e tabelas temporárias quando possível. Se
- o schema pode ser otimizado removendo a dependência desses recursos, é melhor
- otimizar.
-
-```sql
-SELECT CASE postcode
- WHEN 'BN1' THEN 'Brighton'
- WHEN 'EH1' THEN 'Edinburgh'
- END AS city
- FROM office_locations
- WHERE country = 'United Kingdom'
- AND opening_time BETWEEN 8 AND 9
- AND postcode IN ('EH1', 'BN1', 'NN1', 'KW1')
-```
-
-## Sintaxe Create
-
-Enquanto declarando informação do schema, é importante manter um código humanamente
-legível. Para garantir isso, assegure-se de que as definições das colunas estejam
-ordenadas e agrupadas onde fizer sentido.
-
-Indente definições de coluna com quatro (4) espaços dentro da definição `CREATE`.
-
-### Escolhendo tipos de dados
-
-* Onde possível, não utilize tipos de dados específicos de fornecedores de banco
- de dados—esses formatos geralmente não são portáteis e podem estar indisponíveis
- em versões antigas do banco de dados do mesmo fornecedor.
-* Utilize os tipos `REAL` ou `FLOAT` apenas onde o uso de pontos flutuantes for
- estritamente necessário, do contrário prefira sempre `NUMERIC` e `DECIMAL`.
- Erros de ponto flutuante são um transtorno!
-
-### Especificando valores padrão
-
-* O valor padrão deve ser do mesmo tipo da coluna—se uma coluna foi declarada
- como `DECIMAL`, não force um `INTEGER` como valor padrão.
-* Valores padrão devem seguir a mesma declaração do tipo de dados e vir antes
- de qualquer `NOT NULL`.
-
-### Constraints e keys
-
-Constraints e keys são componentes muito importantes na definição de qualquer
-banco de dados. Elas podem se tornar difíceis de ler e desenvolver raciocínios,
-por isso é importante também seguir um conjunto de diretrizes.
-
-#### Escolhendo keys
-
-Deve-se decidir cuidadosamente na definição a(s) coluna(s) que serão keys,
-já que afetará o desempenho e a integridade dos dados.
-
-1. A key deve ser única em algum nível.
-2. O tipo de dado para o valor deve ser consistente através do schema e ter
- baixa probabilidade de ser alterado no futuro.
-3. O valor pode ser validado em relação a um formato padrão (como os publicados
- pela ISO)? Incentiva-se a conformidade com o ponto 2.
-4. Mantenha a key o mais simples possível, não tenha medo de utilizar keys compostas
- se necessário.
-
-Trata-se de um ato de equilíbrio a ser feito na definição de um banco de dados.
-Se os requisitos evoluírem no futuro, será possível fazer alterações nas
-definições para mantê-las atualizadas.
-
-#### Definindo constraints
-
-Uma vez que as keys foram decididas, é possível defini-las no sistema
-utilizando constraints juntamente com validação do valor do campo.
-
-##### Geral
-
-* Tabelas precisam ter pelo menos uma key para serem completas e utilizáveis.
-* Constraints devem ter um nome personalizado exceto por `UNIQUE`, `PRIMARY KEY`
- e `FOREIGN KEY`, onde o fornecedor do banco de dados comumente gera nomes
- inteligíveis automaticamente.
-
-##### Layout e ordenação
-
-* Especifique a primary key primeiro, logo após a declaração `CREATE TABLE`.
-* Constraints devem ser definidas diretamente abaixo da coluna correspondente.
- Indente a constraint alinhando à direita do nome da coluna.
-* Se é uma constraint que se refere a múltiplas colunas, considere colocá-la
- o mais próximo possível à definição das colunas. Se for complicado fazer isso,
- como último recurso as inclua no fim da declaração `CREATE TABLE`.
-* Se for uma constraint que se aplica a toda a tabela, ela também deve aparecer
- no fim.
-* Utilize ordem alfabética, onde `ON DELETE` vem antes de `ON UPDATE`.
-* Se fizer sentido, alinhe cada aspecto da query na mesma posição de caracteres.
- Por exemplo, todas as definições `NOT NULL` podem começar verticalmente alinhadas.
- Pode dar trabalho, mas torna o código muito mais fácil de se examinar e ler.
-
-##### Validação
-
-* Utilize as constraints `LIKE` e `SIMILAR TO` para garantir a integridade de
- strings que tenham formato conhecido.
-* Onde a extensão final de um valor numérico é conhecida, deve-se utilizar
- `CHECK()` para evitar que valores incorretos sejam inseridos no banco de dados,
- ou que o truncamento silencioso dos dados seja muito grande para caber no tamanho
- definido na coluna. No mínimo, deve-se verificar na maioria dos casos se o valor
- é maior que zero.
-* Constraints `CHECK()` devem ser mantidas em cláusulas separadas para facilitar
- o debugging.
-
-##### Exemplo
-
-```sql
-CREATE TABLE staff (
- PRIMARY KEY (staff_num),
- staff_num INT(5) NOT NULL,
- first_name VARCHAR(100) NOT NULL,
- pens_in_drawer INT(2) NOT NULL,
- CONSTRAINT pens_in_drawer_range
- CHECK(pens_in_drawer >= 1 AND pens_in_drawer < 100)
-);
-```
-
-### Designs a se evitar
-
-* Princípios de design orientado a objetos não se traduzem efetivamente ao design
- de bancos de dados relacionais—evite essa armadilha.
-* Colocar o valor em uma coluna e suas unidades em outra coluna. A coluna deve
- tornar as unidades evidentes para evitar a necessidade de se combinar colunas
- novamente mais tarde na aplicação. Utilize `CHECK()` para garantir que dados
- válidos sejam inseridos na coluna.
-* Tabelas [EAV (Entity Attribute Value)][eav]—utilize um produto especializado
- em para manipular esses dados sem schema.
-* Divisão de dados que devem estar em uma tabela em muitas, por questões
- arbitrárias como arquivamento baseado em tempo ou localização em uma organização
- multinacional. Assim, consultas posteriores deverão trabalhar com múltiplas tabelas
- utilizando `UNION` ao invés consultar apenas uma única tabela.
-
-## Apêndice
-
-### Referência de palavras-chave reservadas
-
-Uma lista de palavras-chave reservadas. ANSI SQL (92, 99 and 2003),
-MySQL 3 até 5.x, PostgreSQL 8.1, MS SQL Server 2000, MS ODBC e Oracle 10.2.
-
-```sql
-A
-ABORT
-ABS
-ABSOLUTE
-ACCESS
-ACTION
-ADA
-ADD
-ADMIN
-AFTER
-AGGREGATE
-ALIAS
-ALL
-ALLOCATE
-ALSO
-ALTER
-ALWAYS
-ANALYSE
-ANALYZE
-AND
-ANY
-ARE
-ARRAY
-AS
-ASC
-ASENSITIVE
-ASSERTION
-ASSIGNMENT
-ASYMMETRIC
-AT
-ATOMIC
-ATTRIBUTE
-ATTRIBUTES
-AUDIT
-AUTHORIZATION
-AUTO_INCREMENT
-AVG
-AVG_ROW_LENGTH
-BACKUP
-BACKWARD
-BEFORE
-BEGIN
-BERNOULLI
-BETWEEN
-BIGINT
-BINARY
-BIT
-BIT_LENGTH
-BITVAR
-BLOB
-BOOL
-BOOLEAN
-BOTH
-BREADTH
-BREAK
-BROWSE
-BULK
-BY
-C
-CACHE
-CALL
-CALLED
-CARDINALITY
-CASCADE
-CASCADED
-CASE
-CAST
-CATALOG
-CATALOG_NAME
-CEIL
-CEILING
-CHAIN
-CHANGE
-CHAR
-CHAR_LENGTH
-CHARACTER
-CHARACTER_LENGTH
-CHARACTER_SET_CATALOG
-CHARACTER_SET_NAME
-CHARACTER_SET_SCHEMA
-CHARACTERISTICS
-CHARACTERS
-CHECK
-CHECKED
-CHECKPOINT
-CHECKSUM
-CLASS
-CLASS_ORIGIN
-CLOB
-CLOSE
-CLUSTER
-CLUSTERED
-COALESCE
-COBOL
-COLLATE
-COLLATION
-COLLATION_CATALOG
-COLLATION_NAME
-COLLATION_SCHEMA
-COLLECT
-COLUMN
-COLUMN_NAME
-COLUMNS
-COMMAND_FUNCTION
-COMMAND_FUNCTION_CODE
-COMMENT
-COMMIT
-COMMITTED
-COMPLETION
-COMPRESS
-COMPUTE
-CONDITION
-CONDITION_NUMBER
-CONNECT
-CONNECTION
-CONNECTION_NAME
-CONSTRAINT
-CONSTRAINT_CATALOG
-CONSTRAINT_NAME
-CONSTRAINT_SCHEMA
-CONSTRAINTS
-CONSTRUCTOR
-CONTAINS
-CONTAINSTABLE
-CONTINUE
-CONVERSION
-CONVERT
-COPY
-CORR
-CORRESPONDING
-COUNT
-COVAR_POP
-COVAR_SAMP
-CREATE
-CREATEDB
-CREATEROLE
-CREATEUSER
-CROSS
-CSV
-CUBE
-CUME_DIST
-CURRENT
-CURRENT_DATE
-CURRENT_DEFAULT_TRANSFORM_GROUP
-CURRENT_PATH
-CURRENT_ROLE
-CURRENT_TIME
-CURRENT_TIMESTAMP
-CURRENT_TRANSFORM_GROUP_FOR_TYPE
-CURRENT_USER
-CURSOR
-CURSOR_NAME
-CYCLE
-DATA
-DATABASE
-DATABASES
-DATE
-DATETIME
-DATETIME_INTERVAL_CODE
-DATETIME_INTERVAL_PRECISION
-DAY
-DAY_HOUR
-DAY_MICROSECOND
-DAY_MINUTE
-DAY_SECOND
-DAYOFMONTH
-DAYOFWEEK
-DAYOFYEAR
-DBCC
-DEALLOCATE
-DEC
-DECIMAL
-DECLARE
-DEFAULT
-DEFAULTS
-DEFERRABLE
-DEFERRED
-DEFINED
-DEFINER
-DEGREE
-DELAY_KEY_WRITE
-DELAYED
-DELETE
-DELIMITER
-DELIMITERS
-DENSE_RANK
-DENY
-DEPTH
-DEREF
-DERIVED
-DESC
-DESCRIBE
-DESCRIPTOR
-DESTROY
-DESTRUCTOR
-DETERMINISTIC
-DIAGNOSTICS
-DICTIONARY
-DISABLE
-DISCONNECT
-DISK
-DISPATCH
-DISTINCT
-DISTINCTROW
-DISTRIBUTED
-DIV
-DO
-DOMAIN
-DOUBLE
-DROP
-DUAL
-DUMMY
-DUMP
-DYNAMIC
-DYNAMIC_FUNCTION
-DYNAMIC_FUNCTION_CODE
-EACH
-ELEMENT
-ELSE
-ELSEIF
-ENABLE
-ENCLOSED
-ENCODING
-ENCRYPTED
-END
-END-EXEC
-ENUM
-EQUALS
-ERRLVL
-ESCAPE
-ESCAPED
-EVERY
-EXCEPT
-EXCEPTION
-EXCLUDE
-EXCLUDING
-EXCLUSIVE
-EXEC
-EXECUTE
-EXISTING
-EXISTS
-EXIT
-EXP
-EXPLAIN
-EXTERNAL
-EXTRACT
-FALSE
-FETCH
-FIELDS
-FILE
-FILLFACTOR
-FILTER
-FINAL
-FIRST
-FLOAT
-FLOAT4
-FLOAT8
-FLOOR
-FLUSH
-FOLLOWING
-FOR
-FORCE
-FOREIGN
-FORTRAN
-FORWARD
-FOUND
-FREE
-FREETEXT
-FREETEXTTABLE
-FREEZE
-FROM
-FULL
-FULLTEXT
-FUNCTION
-FUSION
-G
-GENERAL
-GENERATED
-GET
-GLOBAL
-GO
-GOTO
-GRANT
-GRANTED
-GRANTS
-GREATEST
-GROUP
-GROUPING
-HANDLER
-HAVING
-HEADER
-HEAP
-HIERARCHY
-HIGH_PRIORITY
-HOLD
-HOLDLOCK
-HOST
-HOSTS
-HOUR
-HOUR_MICROSECOND
-HOUR_MINUTE
-HOUR_SECOND
-IDENTIFIED
-IDENTITY
-IDENTITY_INSERT
-IDENTITYCOL
-IF
-IGNORE
-ILIKE
-IMMEDIATE
-IMMUTABLE
-IMPLEMENTATION
-IMPLICIT
-IN
-INCLUDE
-INCLUDING
-INCREMENT
-INDEX
-INDICATOR
-INFILE
-INFIX
-INHERIT
-INHERITS
-INITIAL
-INITIALIZE
-INITIALLY
-INNER
-INOUT
-INPUT
-INSENSITIVE
-INSERT
-INSERT_ID
-INSTANCE
-INSTANTIABLE
-INSTEAD
-INT
-INT1
-INT2
-INT3
-INT4
-INT8
-INTEGER
-INTERSECT
-INTERSECTION
-INTERVAL
-INTO
-INVOKER
-IS
-ISAM
-ISNULL
-ISOLATION
-ITERATE
-JOIN
-K
-KEY
-KEY_MEMBER
-KEY_TYPE
-KEYS
-KILL
-LANCOMPILER
-LANGUAGE
-LARGE
-LAST
-LAST_INSERT_ID
-LATERAL
-LEADING
-LEAST
-LEAVE
-LEFT
-LENGTH
-LESS
-LEVEL
-LIKE
-LIMIT
-LINENO
-LINES
-LISTEN
-LN
-LOAD
-LOCAL
-LOCALTIME
-LOCALTIMESTAMP
-LOCATION
-LOCATOR
-LOCK
-LOGIN
-LOGS
-LONG
-LONGBLOB
-LONGTEXT
-LOOP
-LOW_PRIORITY
-LOWER
-M
-MAP
-MATCH
-MATCHED
-MAX
-MAX_ROWS
-MAXEXTENTS
-MAXVALUE
-MEDIUMBLOB
-MEDIUMINT
-MEDIUMTEXT
-MEMBER
-MERGE
-MESSAGE_LENGTH
-MESSAGE_OCTET_LENGTH
-MESSAGE_TEXT
-METHOD
-MIDDLEINT
-MIN
-MIN_ROWS
-MINUS
-MINUTE
-MINUTE_MICROSECOND
-MINUTE_SECOND
-MINVALUE
-MLSLABEL
-MOD
-MODE
-MODIFIES
-MODIFY
-MODULE
-MONTH
-MONTHNAME
-MORE
-MOVE
-MULTISET
-MUMPS
-MYISAM
-NAME
-NAMES
-NATIONAL
-NATURAL
-NCHAR
-NCLOB
-NESTING
-NEW
-NEXT
-NO
-NO_WRITE_TO_BINLOG
-NOAUDIT
-NOCHECK
-NOCOMPRESS
-NOCREATEDB
-NOCREATEROLE
-NOCREATEUSER
-NOINHERIT
-NOLOGIN
-NONCLUSTERED
-NONE
-NORMALIZE
-NORMALIZED
-NOSUPERUSER
-NOT
-NOTHING
-NOTIFY
-NOTNULL
-NOWAIT
-NULL
-NULLABLE
-NULLIF
-NULLS
-NUMBER
-NUMERIC
-OBJECT
-OCTET_LENGTH
-OCTETS
-OF
-OFF
-OFFLINE
-OFFSET
-OFFSETS
-OIDS
-OLD
-ON
-ONLINE
-ONLY
-OPEN
-OPENDATASOURCE
-OPENQUERY
-OPENROWSET
-OPENXML
-OPERATION
-OPERATOR
-OPTIMIZE
-OPTION
-OPTIONALLY
-OPTIONS
-OR
-ORDER
-ORDERING
-ORDINALITY
-OTHERS
-OUT
-OUTER
-OUTFILE
-OUTPUT
-OVER
-OVERLAPS
-OVERLAY
-OVERRIDING
-OWNER
-PACK_KEYS
-PAD
-PARAMETER
-PARAMETER_MODE
-PARAMETER_NAME
-PARAMETER_ORDINAL_POSITION
-PARAMETER_SPECIFIC_CATALOG
-PARAMETER_SPECIFIC_NAME
-PARAMETER_SPECIFIC_SCHEMA
-PARAMETERS
-PARTIAL
-PARTITION
-PASCAL
-PASSWORD
-PATH
-PCTFREE
-PERCENT
-PERCENT_RANK
-PERCENTILE_CONT
-PERCENTILE_DISC
-PLACING
-PLAN
-PLI
-POSITION
-POSTFIX
-POWER
-PRECEDING
-PRECISION
-PREFIX
-PREORDER
-PREPARE
-PREPARED
-PRESERVE
-PRIMARY
-PRINT
-PRIOR
-PRIVILEGES
-PROC
-PROCEDURAL
-PROCEDURE
-PROCESS
-PROCESSLIST
-PUBLIC
-PURGE
-QUOTE
-RAID0
-RAISERROR
-RANGE
-RANK
-RAW
-READ
-READS
-READTEXT
-REAL
-RECHECK
-RECONFIGURE
-RECURSIVE
-REF
-REFERENCES
-REFERENCING
-REGEXP
-REGR_AVGX
-REGR_AVGY
-REGR_COUNT
-REGR_INTERCEPT
-REGR_R2
-REGR_SLOPE
-REGR_SXX
-REGR_SXY
-REGR_SYY
-REINDEX
-RELATIVE
-RELEASE
-RELOAD
-RENAME
-REPEAT
-REPEATABLE
-REPLACE
-REPLICATION
-REQUIRE
-RESET
-RESIGNAL
-RESOURCE
-RESTART
-RESTORE
-RESTRICT
-RESULT
-RETURN
-RETURNED_CARDINALITY
-RETURNED_LENGTH
-RETURNED_OCTET_LENGTH
-RETURNED_SQLSTATE
-RETURNS
-REVOKE
-RIGHT
-RLIKE
-ROLE
-ROLLBACK
-ROLLUP
-ROUTINE
-ROUTINE_CATALOG
-ROUTINE_NAME
-ROUTINE_SCHEMA
-ROW
-ROW_COUNT
-ROW_NUMBER
-ROWCOUNT
-ROWGUIDCOL
-ROWID
-ROWNUM
-ROWS
-RULE
-SAVE
-SAVEPOINT
-SCALE
-SCHEMA
-SCHEMA_NAME
-SCHEMAS
-SCOPE
-SCOPE_CATALOG
-SCOPE_NAME
-SCOPE_SCHEMA
-SCROLL
-SEARCH
-SECOND
-SECOND_MICROSECOND
-SECTION
-SECURITY
-SELECT
-SELF
-SENSITIVE
-SEPARATOR
-SEQUENCE
-SERIALIZABLE
-SERVER_NAME
-SESSION
-SESSION_USER
-SET
-SETOF
-SETS
-SETUSER
-SHARE
-SHOW
-SHUTDOWN
-SIGNAL
-SIMILAR
-SIMPLE
-SIZE
-SMALLINT
-SOME
-SONAME
-SOURCE
-SPACE
-SPATIAL
-SPECIFIC
-SPECIFIC_NAME
-SPECIFICTYPE
-SQL
-SQL_BIG_RESULT
-SQL_BIG_SELECTS
-SQL_BIG_TABLES
-SQL_CALC_FOUND_ROWS
-SQL_LOG_OFF
-SQL_LOG_UPDATE
-SQL_LOW_PRIORITY_UPDATES
-SQL_SELECT_LIMIT
-SQL_SMALL_RESULT
-SQL_WARNINGS
-SQLCA
-SQLCODE
-SQLERROR
-SQLEXCEPTION
-SQLSTATE
-SQLWARNING
-SQRT
-SSL
-STABLE
-START
-STARTING
-STATE
-STATEMENT
-STATIC
-STATISTICS
-STATUS
-STDDEV_POP
-STDDEV_SAMP
-STDIN
-STDOUT
-STORAGE
-STRAIGHT_JOIN
-STRICT
-STRING
-STRUCTURE
-STYLE
-SUBCLASS_ORIGIN
-SUBLIST
-SUBMULTISET
-SUBSTRING
-SUCCESSFUL
-SUM
-SUPERUSER
-SYMMETRIC
-SYNONYM
-SYSDATE
-SYSID
-SYSTEM
-SYSTEM_USER
-TABLE
-TABLE_NAME
-TABLES
-TABLESAMPLE
-TABLESPACE
-TEMP
-TEMPLATE
-TEMPORARY
-TERMINATE
-TERMINATED
-TEXT
-TEXTSIZE
-THAN
-THEN
-TIES
-TIME
-TIMESTAMP
-TIMEZONE_HOUR
-TIMEZONE_MINUTE
-TINYBLOB
-TINYINT
-TINYTEXT
-TO
-TOAST
-TOP
-TOP_LEVEL_COUNT
-TRAILING
-TRAN
-TRANSACTION
-TRANSACTION_ACTIVE
-TRANSACTIONS_COMMITTED
-TRANSACTIONS_ROLLED_BACK
-TRANSFORM
-TRANSFORMS
-TRANSLATE
-TRANSLATION
-TREAT
-TRIGGER
-TRIGGER_CATALOG
-TRIGGER_NAME
-TRIGGER_SCHEMA
-TRIM
-TRUE
-TRUNCATE
-TRUSTED
-TSEQUAL
-TYPE
-UESCAPE
-UID
-UNBOUNDED
-UNCOMMITTED
-UNDER
-UNDO
-UNENCRYPTED
-UNION
-UNIQUE
-UNKNOWN
-UNLISTEN
-UNLOCK
-UNNAMED
-UNNEST
-UNSIGNED
-UNTIL
-UPDATE
-UPDATETEXT
-UPPER
-USAGE
-USE
-USER
-USER_DEFINED_TYPE_CATALOG
-USER_DEFINED_TYPE_CODE
-USER_DEFINED_TYPE_NAME
-USER_DEFINED_TYPE_SCHEMA
-USING
-UTC_DATE
-UTC_TIME
-UTC_TIMESTAMP
-VACUUM
-VALID
-VALIDATE
-VALIDATOR
-VALUE
-VALUES
-VAR_POP
-VAR_SAMP
-VARBINARY
-VARCHAR
-VARCHAR2
-VARCHARACTER
-VARIABLE
-VARIABLES
-VARYING
-VERBOSE
-VIEW
-VOLATILE
-WAITFOR
-WHEN
-WHENEVER
-WHERE
-WHILE
-WIDTH_BUCKET
-WINDOW
-WITH
-WITHIN
-WITHOUT
-WORK
-WRITE
-WRITETEXT
-X509
-XOR
-YEAR
-YEAR_MONTH
-ZEROFILL
-ZONE
-```
-
-[simon]: https://www.simonholywell.com/?utm_source=sqlstyle.guide&utm_medium=link&utm_campaign=md-document
- "SimonHolywell.com"
-[issue]: https://github.com/treffynnon/sqlstyle.guide/issues
- "SQL style guide issues on GitHub"
-[fork]: https://github.com/treffynnon/sqlstyle.guide/fork
- "Fork SQL style guide on GitHub"
-[pull]: https://github.com/treffynnon/sqlstyle.guide/pulls/
- "SQL style guide pull requests on GitHub"
-[celko]: https://www.amazon.com/gp/product/0120887975/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=treffynnon-20&linkId=9c88eac8cd420e979675c815771313d5
- "Joe Celko's SQL Programming Style (The Morgan Kaufmann Series in Data Management Systems)"
-[dl-md]: https://raw.githubusercontent.com/treffynnon/sqlstyle.guide/gh-pages/_includes/sqlstyle.guide.pt-BR.md
- "Download the guide in Markdown format"
-[iso-8601]: https://en.wikipedia.org/wiki/ISO_8601
- "Wikipedia: ISO 8601"
-[rivers]: http://practicaltypography.com/one-space-between-sentences.html
- "Practical Typography: one space between sentences"
-[reserved-keywords]: #reserved-keyword-reference
- "Reserved keyword reference"
-[eav]: https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
- "Wikipedia: Entity–attribute–value model"
-[sqlstyleguide]: http://www.sqlstyle.guide
- "SQL style guide by Simon Holywell"
-[licence]: https://creativecommons.org/licenses/by-sa/4.0/deed.pt_BR
- "Creative Commons Attribution-ShareAlike 4.0 International License"
diff --git a/_includes/sqlstyle.guide.ru.md b/_includes/sqlstyle.guide.ru.md
deleted file mode 100644
index 1d4992c..0000000
--- a/_includes/sqlstyle.guide.ru.md
+++ /dev/null
@@ -1,1321 +0,0 @@
-# SQL: Руководство по стилю
-
-## Предисловие
-
-Вы можете использовать это руководство целиком, [сделать его форк][fork] или
-создать своё на его основе. Цель — определить, какой стиль вам подходит
-больше, и придерживаться его. Если вы хотите предложить изменение или
-исправить ошибку, [откройте Issue][issue] или [создайте Pull Request][pull] на
-GitHub'е.
-
-Рекомендации, описанные в этом руководстве, во многом пересекаются с
-описанными в книге Джо Селко
-«[Стиль программирования Джо Селко на SQL][celko-ru]» (оригинал:
-[SQL Programming Style][celko]). Это, в частности, найдут полезным те, кто уже
-знаком с этой книгой. Тем не менее автор этого руководства в некоторых
-аспектах более категоричен, нежели Джо Селко, а в других, напротив, более
-гибок. И, конечно, нельзя не отметить, что это руководство значительно короче
-и лаконичнее [книги Селко][celko-ru] — здесь вы не встретите ни весёлых
-историй из жизни, наглядно объясняющих, как и почему лучше не делать, ни
-длинных повествований, мотивирующих на использование той или иной
-рекомендации.
-
-Руководство написано в [формате Markdown][dl-md], что позволяет легко включить
-его в проект или просто сослаться на него оттуда, что гораздо удобнее, нежели
-работать с большой бумажной книгой.
-
-«SQL: Руководство по стилю» (SQL style guide) за авторством Саймона Холиуэлла
-(Simon Holywell) находится под лицензией [Creative Commons «Атрибуция — На тех
-же условиях» 4.0 Всемирная][licence-ru]. Оригинал —
-[http://www.sqlstyle.guide][sqlstyleguide].
-
-## Основные положения
-
-### Хороший стиль
-
-* **Идентификаторы и имена**. Осмысленные и в едином стиле.
-* **Пробелы и отступы**. Логично расставленные для лучшей читаемости кода.
-* **Дата и время**. Соответствующие стандарту [ISO 8601][iso-8601-ru]:
- `YYYY-MM-DD HH:MM:SS.SSSSS`.
-* **Функции SQL**. Стандартные вместо специфичных (определяемых поставщиком) с
- целью лучшей переносимости.
-* **Код**. Лаконичный и без излишеств, как например: ненужные кавычки или
- скобки или неуместное использование оператора `WHERE`.
-* **Комментарии**. Предпочтительно в [стиле C][c-style-comments-ru] — `/*`
- (начало) и `*/` (конец). Либо `--` перед комментарием, тогда окончанием
- будет новая строка.
-
-```sql
-SELECT file_hash -- stored ssdeep hash
- FROM file_system
- WHERE file_name = '.vimrc';
-```
-
-```sql
-/* Updating the file record after writing to the file */
-UPDATE file_system
- SET file_modified_date = '1980-02-22 13:19:01.00000',
- file_size = 209732
- WHERE file_name = '.vimrc';
-```
-
-### Плохой стиль
-
-* **CamelCase**. Неудобочитаем.
-* **Префиксы и [венгерская нотация][hungarian-notation-ru]**. Префиксы
- наподобие `sp_` или `tbl_` избыточны.
-* **Множественное число**. Лучше использовать более естественно звучащие
- собирательные понятия. Например, `staff` вместо `employees` или `people`
- вместо `individuals`.
-* **Идентификаторы в кавычках**. Если они обязательно нужны, тогда используйте
- двойные кавычки, определённые в стандарте [SQL-92][sql-92-ru] с целью лучшей
- переносимости в дальнейшем.
-* **Принципы объектно-ориентированного проектирования**. Не нужно применять к
- SQL или структуре базы данных.
-
-## Соглашения о наименовании
-
-### Общее
-
-* **Убедитесь** в том, что имя уникально и его нет в
- [списке зарезервированных ключевых слов][reserved-keywords].
-* **Ограничивайте** длину имени 30 байтами (это 30 символов, если не
- используется многобайтный набор символов).
-* **Начинайте** имена с буквы и **не заканчивайте** их символом подчёркивания.
-* **Используйте** в именах только буквы, цифры и символ подчёркивания.
-* **Избегайте** нескольких подряд идущих символов подчёркивания.
-* **Используйте** символ подчёркивания там, где вы бы поставили пробел в
- реальной жизни (например, `first name` станет `first_name`).
-* **Избегайте** сокращений. Если их всё же нужно использовать, убедитесь в
- том, что они общепонятны.
-
-```sql
-SELECT first_name
- FROM staff;
-```
-
-### Таблицы
-
-* **Используйте** собирательные имена или, что менее предпочтительно, форму
- множественного числа. Например, `staff` и `employees` (в порядке убывания
- предпочтения).
-* **Не используйте** описательные префиксы вида `tbl_` и венгерскую нотацию в
- целом.
-* **Не допускайте** совпадений названия таблицы с названием любого из её
- столбцов.
-* По возможности **избегайте** объединения названий двух таблиц для построения
- таблицы отношений. Например, вместо названия `cars_mechanics` лучше подойдёт
- `services`.
-
-### Столбцы
-
-* Названия всегда **давайте** в единственном числе.
-* По возможности **не используйте** `id` в качестве первичного идентификатора
- таблицы.
-* **Не создавайте** в таблице столбцов с таким же названием, как у неё самой.
-* Названия **всегда пишите** со строчной буквы. Могут быть исключения,
- например использование имени собственного.
-
-### Псевдонимы/корреляции
-
-* **Должны** так или иначе быть связаны с объектами или выражениями,
- псевдонимом которых они являются.
-* Имя корреляции **обычно составляется** из первых букв каждого слова в имени
- объекта.
-* **Добавьте** цифру к имени, если такое уже существует.
-* Всегда **используйте** ключевое слово `AS` для лучшей читаемости.
-* Для вычислимых данных (`SUM()` или `AVG()`) **используйте** такие имена,
- которые вы бы дали, будь они столбцами в таблице.
-
-```sql
-SELECT first_name AS fn
- FROM staff AS s1
- JOIN students AS s2
- ON s2.mentor_id = s1.staff_num;
-```
-
-```sql
-SELECT SUM(s.monitor_tally) AS monitor_total
- FROM staff AS s;
-```
-
-### Хранимые процедуры
-
-* Имя **должно** содержать глагол.
-* **Не используйте** описательные префиксы вида `sp_` и венгерскую нотацию в
- целом.
-
-### Универсальные суффиксы
-
-Приведённые ниже суффиксы универсальны, что гарантирует простоту понимания
-значения столбцов из кода SQL.
-
-* `_id` — уникальный идентификатор, например первичный ключ.
-* `_status` — флаг или любой статус, например `publication_status`.
-* `_total` — общее количество или сумма значений.
-* `_num` — поле, содержащее число.
-* `_name` — любое имя, например `first_name`.
-* `_seq` — непрерывная последовательность значений.
-* `_date` — колонка, содержащая дату.
-* `_tally` — счётчик.
-* `_size` — размер или величина чего-либо, например размер файла.
-* `_addr` — физический или абстрактный адрес, например `ip_addr`.
-
-## Синтаксис запросов
-
-### Зарезервированные слова
-
-[Зарезервированные ключевые слова][reserved-keywords] всегда пишите прописными
-буквами, например `SELECT`, `WHERE`.
-
-Не используйте сокращённый вариант ключевого слова, если имеется полный.
-Например, используйте `ABSOLUTE` вместо `ABS`.
-
-Не используйте специфичные для какого-либо поставщика СУБД ключевые слова,
-если в ANSI SQL есть ключевые слова, выполняющие такие же функции. Это сделает
-ваш код более переносимым.
-
-```sql
-SELECT model_num
- FROM phones AS p
- WHERE p.release_date > '2014-09-30';
-```
-
-### Пробельные символы
-
-Для лучшей удобочитаемости кода важно правильно использовать пробельные символы.
-Не нужно нагромождать код или удалять пробелы, присущие естественному языку.
-
-#### Пробелы
-
-Можно и нужно использовать пробелы для выравнивания основных ключевых слов по
-их правому краю. В типографике получающиеся таким образом
-«[коридоры][rivers-ru]» стараются избегать, в то же время в нашем случае они,
-напротив, помогают лучше вычленять важные ключевые слова.
-
-```sql
-(SELECT f.species_name,
- AVG(f.height) AS average_height, AVG(f.diameter) AS average_diameter
- FROM flora AS f
- WHERE f.species_name = 'Banksia'
- OR f.species_name = 'Sheoak'
- OR f.species_name = 'Wattle'
- GROUP BY f.species_name, f.observation_date)
-
- UNION ALL
-
-(SELECT b.species_name,
- AVG(b.height) AS average_height, AVG(b.diameter) AS average_diameter
- FROM botanic_garden_flora AS b
- WHERE b.species_name = 'Banksia'
- OR b.species_name = 'Sheoak'
- OR b.species_name = 'Wattle'
- GROUP BY b.species_name, b.observation_date)
-```
-
-Обратите внимание, что ключевые слова `SELECT`, `FROM` и т.д. выровнены по
-правому краю, при этом названия столбцов и различные условия — по левому.
-
-Помимо этого, старайтесь расставлять пробелы:
-
-* **до** и **после** знака равно (`=`)
-* **после** запятых (`,`)
-* **до** открывающего и **после** закрывающего апострофов (`'`), если последний
- не внутри скобок, или без последующих запятой или точки с запятой, или не в
- конце строки
-
-```sql
-SELECT a.title, a.release_date, a.recording_date
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-#### Переводы строки
-
-Всегда делайте перенос строки:
-
-* **перед** `AND` или `OR`
-* **после** точки с запятой (для разделения запросов)
-* **после** каждого основного ключевого слова
-* **после** запятой (при выделении логических групп столбцов)
-
-Следуя принципу, что ключевые слова выравниваются по правому краю, а всё
-остальное — по левому, мы добиваемся достаточно удобного расположения частей
-кода, вследствие чего улучшается зрительная навигация по нему.
-
-```sql
-INSERT INTO albums (title, release_date, recording_date)
-VALUES ('Charcoal Lane', '1990-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000'),
- ('The New Danger', '2008-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000');
-```
-
-```sql
-UPDATE albums
- SET release_date = '1990-01-01 01:01:01.00000'
- WHERE title = 'The New Danger';
-```
-
-```sql
-SELECT a.title,
- a.release_date, a.recording_date, a.production_date -- grouped dates together
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-### Отступы
-
-Для того, чтобы SQL был удобочитаем, важно также следовать стандартам
-расстановки отступов.
-
-#### `JOIN`
-
-Объединения (`JOIN`) должны располагаться по правую часть «коридора». При
-необходимости между ними можно добавить пустую строку.
-
-```sql
-SELECT r.last_name
- FROM riders AS r
- INNER JOIN bikes AS b
- ON r.bike_vin_num = b.vin_num
- AND b.engines > 2
-
- INNER JOIN crew AS c
- ON r.crew_chief_last_name = c.last_name
- AND c.chief = 'Y';
-```
-
-#### Подзапросы
-
-Подзапросы тоже должны быть выровнены по правому краю «коридора», а внутри них
-самих применяются те же правила форматирования, что и в любом другом запросе.
-Если используются вложенные подзапросы, может иметь смысл поставить
-закрывающую скобку на новой строке ровно под парной ей открывающей скобкой.
-
-```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
- 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');
-```
-
-### Формальные тонкости
-
-* **Используйте** `BETWEEN`, где возможно, вместо нагромождения условий `AND`.
-* Таким же образом старайтесь **использовать** `IN()` вместо `OR`.
-* **Используйте** `CASE`, если значение должно быть интерпретировано до
- окончания выполнения запроса. С помощью `CASE` можно также формировать
- сложные логические структуры.
-* По возможности **избегайте** использования `UNION` и временных таблиц.
-
-```sql
-SELECT CASE postcode
- WHEN 'BN1' THEN 'Brighton'
- WHEN 'EH1' THEN 'Edinburgh'
- END AS city
- FROM office_locations
- WHERE country = 'United Kingdom'
- AND opening_time BETWEEN 8 AND 9
- AND postcode IN ('EH1', 'BN1', 'NN1', 'KW1')
-```
-
-## Синтаксис `CREATE`
-
-При разработке схемы данных важно создавать человекочитаемый код. Убедитесь в
-том, что объявления столбцов логически структурированы и сгруппированы.
-
-Внутри объявления `CREATE` делайте отступ, равный 4 пробелам.
-
-### Типы данных
-
-* По возможности **не используйте** специфичные для той или иной СУБД типы
- данных. Это может негативно сказаться на переносимости, а также этих типов
- может не оказаться в старых версиях этих же СУБД.
-* Для работы с плавающей точкой **используйте** только `REAL` или `FLOAT`, но
- где нет необходимости в подобных вычислениях, всегда **используйте**
- `NUMERIC` и `DECIMAL`. Ошибки округления в операциях с плавающей точкой
- могут оказаться очень некстати.
-
-### Значения по умолчанию
-
-* Значение по умолчанию всегда должно **совпадать** по типу со столбцом. Если,
- скажем, столбец объявлен как `DECIMAL`, не нужно в качестве умолчания
- указывать значение типа `INTEGER`.
-* Значения по умолчанию должны располагаться **после** объявления типа столбца
- и **перед** пометкой `NOT NULL`.
-
-### Ограничения и ключи
-
-Ограничения и их подмножество, ключи, — важная часть любой структуры базы
-данных, поэтому важно следовать стандартам их объявления, чтобы избежать
-трудностей в последующей поддержке написанного.
-
-#### Ключи
-
-Выбор столбцов, которые будут играть роль ключей, должен быть обоснован и
-предельно выверен, поскольку от них напрямую зависит производительность и
-целостность данных.
-
-1. Ключ должен быть в какой-то степени уникальным.
-1. Должна быть согласованность по типу данных для значения во всей схеме, а
- также чем ниже вероятность того, что это изменится в будущем, тем лучше.
-1. Можно ли проверить значение на соответствие стандарту (например, ISO)?
-1. Ключ должен быть как можно проще, чтобы можно было без трудностей
- использовать составные ключи.
-
-Это своего рода конвенции, которые нужно сформулировать при проектировании
-базы данных. Если требования впоследствии будут разрастаться, можно и нужно
-вносить изменения в структуру базы, чтобы поддерживать её в актуальном
-состоянии.
-
-#### Ограничения
-
-Как только решено, какие ключи должны использоваться, нужно определить их в базе
-с помощью ограничений наряду с валидацией значений полей.
-
-##### Общее
-
-* У каждой таблицы **должен быть** хотя бы один ключ.
-* Ограничениям нужно **присваивать** вразумительные имена. Для `UNIQUE`,
- `PRIMARY KEY` и `FOREIGN KEY` подобные имена создаются автоматически,
- поэтому нужно позаботиться об остальных ограничениях.
-
-##### Расположение и порядок
-
-* Первичный ключ должен быть **объявлен** в самом начале, сразу после
- оператора `CREATE TABLE`.
-* Ограничения должны быть **объявлены** строго ниже столбца, с которым они
- связаны. Расставьте отступы так, чтобы объявление ограничения начиналось
- после названия столбца.
-* В случае ограничений, затрагивающих несколько столбцов, старайтесь
- **объявлять** их как можно ближе к описанию последнего из них. В крайнем
- случае объявляйте ограничение в конце тела `CREATE TABLE`.
-* Ограничения целостности уровня таблицы должны **располагаться** в конце.
-* **Используйте** алфавитный порядок там, где `ON DELETE` предшествует
- `ON UPDATE`.
-* Внутри запроса можно **выравнивать** каждый уровень по-своему. Например,
- можно добавить отступы после названия столбцов, чтобы типы данных начинались
- с одной позиции, а затем ещё добавить отступов в нужном количестве, чтобы
- все объявления `NOT NULL` тоже были выровнены по левому краю. Подобное
- форматирование позволит быстрее ориентироваться в коде.
-
-##### Валидация
-
-* **Используйте** `LIKE` и `SIMILAR TO` для обеспечения целостности строк с
- известным форматом.
-* Если диапазон числовых значений для столбца известен, **используйте**
- `CHECK()` для предотвращения внесения в базу некорректных данных или
- скрытого отсечения части значения слишком больших данных. Обычно проверка
- делается на то, что значение больше нуля.
-* `CHECK()` должен быть **объявлен** как отдельное ограничение для упрощения
- последующей отладки.
-
-##### Пример
-
-```sql
-CREATE TABLE staff (
- PRIMARY KEY (staff_num),
- staff_num INT(5) NOT NULL,
- first_name VARCHAR(100) NOT NULL,
- pens_in_drawer INT(2) NOT NULL,
- CONSTRAINT pens_in_drawer_range
- CHECK(pens_in_drawer >= 1 AND pens_in_drawer < 100)
-);
-```
-
-### Чего следует избегать
-
-* **Не применяйте** объектно-ориентированные принципы, поскольку они далеко не
- всегда оптимально ложатся на реляционную модель баз данных.
-* **Не разносите** по разным столбцам значения и единицы измерения. Нужно
- создавать столбцы так, чтобы единицы измерения были чем-то самим собой
- разумеющимся. Для проверки корректности вставляемых в столбец данных
- используйте `CHECK()`.
-* **Избегайте** паттерна [EAV (Entity Attribute Value)][eav]. Вместо него
- используйте специальные продукты, предназначенные для работы с
- неструктурированными данными.
-* **Не разбивайте** данные, логически принадлежащие одной таблице, по разным
- таблицам на основании условностей, например архивации по времени или
- географическим атрибутам. Впоследствии для работы с несколькими подобными
- таблицам придётся часто использовать `UNION` вместо простых запросов к одной
- таблице.
-
-## Приложение
-
-
-
-### Список зарезервированных ключевых слов
-
-Список зарезервированных ключевых слов ANSI SQL (92, 99 and 2003), MySQL
-версий с 3 по 5.x, PostgreSQL 8.1, MS SQL Server 2000, MS ODBC и Oracle 10.2.
-
-```sql
-A
-ABORT
-ABS
-ABSOLUTE
-ACCESS
-ACTION
-ADA
-ADD
-ADMIN
-AFTER
-AGGREGATE
-ALIAS
-ALL
-ALLOCATE
-ALSO
-ALTER
-ALWAYS
-ANALYSE
-ANALYZE
-AND
-ANY
-ARE
-ARRAY
-AS
-ASC
-ASENSITIVE
-ASSERTION
-ASSIGNMENT
-ASYMMETRIC
-AT
-ATOMIC
-ATTRIBUTE
-ATTRIBUTES
-AUDIT
-AUTHORIZATION
-AUTO_INCREMENT
-AVG
-AVG_ROW_LENGTH
-BACKUP
-BACKWARD
-BEFORE
-BEGIN
-BERNOULLI
-BETWEEN
-BIGINT
-BINARY
-BIT
-BIT_LENGTH
-BITVAR
-BLOB
-BOOL
-BOOLEAN
-BOTH
-BREADTH
-BREAK
-BROWSE
-BULK
-BY
-C
-CACHE
-CALL
-CALLED
-CARDINALITY
-CASCADE
-CASCADED
-CASE
-CAST
-CATALOG
-CATALOG_NAME
-CEIL
-CEILING
-CHAIN
-CHANGE
-CHAR
-CHAR_LENGTH
-CHARACTER
-CHARACTER_LENGTH
-CHARACTER_SET_CATALOG
-CHARACTER_SET_NAME
-CHARACTER_SET_SCHEMA
-CHARACTERISTICS
-CHARACTERS
-CHECK
-CHECKED
-CHECKPOINT
-CHECKSUM
-CLASS
-CLASS_ORIGIN
-CLOB
-CLOSE
-CLUSTER
-CLUSTERED
-COALESCE
-COBOL
-COLLATE
-COLLATION
-COLLATION_CATALOG
-COLLATION_NAME
-COLLATION_SCHEMA
-COLLECT
-COLUMN
-COLUMN_NAME
-COLUMNS
-COMMAND_FUNCTION
-COMMAND_FUNCTION_CODE
-COMMENT
-COMMIT
-COMMITTED
-COMPLETION
-COMPRESS
-COMPUTE
-CONDITION
-CONDITION_NUMBER
-CONNECT
-CONNECTION
-CONNECTION_NAME
-CONSTRAINT
-CONSTRAINT_CATALOG
-CONSTRAINT_NAME
-CONSTRAINT_SCHEMA
-CONSTRAINTS
-CONSTRUCTOR
-CONTAINS
-CONTAINSTABLE
-CONTINUE
-CONVERSION
-CONVERT
-COPY
-CORR
-CORRESPONDING
-COUNT
-COVAR_POP
-COVAR_SAMP
-CREATE
-CREATEDB
-CREATEROLE
-CREATEUSER
-CROSS
-CSV
-CUBE
-CUME_DIST
-CURRENT
-CURRENT_DATE
-CURRENT_DEFAULT_TRANSFORM_GROUP
-CURRENT_PATH
-CURRENT_ROLE
-CURRENT_TIME
-CURRENT_TIMESTAMP
-CURRENT_TRANSFORM_GROUP_FOR_TYPE
-CURRENT_USER
-CURSOR
-CURSOR_NAME
-CYCLE
-DATA
-DATABASE
-DATABASES
-DATE
-DATETIME
-DATETIME_INTERVAL_CODE
-DATETIME_INTERVAL_PRECISION
-DAY
-DAY_HOUR
-DAY_MICROSECOND
-DAY_MINUTE
-DAY_SECOND
-DAYOFMONTH
-DAYOFWEEK
-DAYOFYEAR
-DBCC
-DEALLOCATE
-DEC
-DECIMAL
-DECLARE
-DEFAULT
-DEFAULTS
-DEFERRABLE
-DEFERRED
-DEFINED
-DEFINER
-DEGREE
-DELAY_KEY_WRITE
-DELAYED
-DELETE
-DELIMITER
-DELIMITERS
-DENSE_RANK
-DENY
-DEPTH
-DEREF
-DERIVED
-DESC
-DESCRIBE
-DESCRIPTOR
-DESTROY
-DESTRUCTOR
-DETERMINISTIC
-DIAGNOSTICS
-DICTIONARY
-DISABLE
-DISCONNECT
-DISK
-DISPATCH
-DISTINCT
-DISTINCTROW
-DISTRIBUTED
-DIV
-DO
-DOMAIN
-DOUBLE
-DROP
-DUAL
-DUMMY
-DUMP
-DYNAMIC
-DYNAMIC_FUNCTION
-DYNAMIC_FUNCTION_CODE
-EACH
-ELEMENT
-ELSE
-ELSEIF
-ENABLE
-ENCLOSED
-ENCODING
-ENCRYPTED
-END
-END-EXEC
-ENUM
-EQUALS
-ERRLVL
-ESCAPE
-ESCAPED
-EVERY
-EXCEPT
-EXCEPTION
-EXCLUDE
-EXCLUDING
-EXCLUSIVE
-EXEC
-EXECUTE
-EXISTING
-EXISTS
-EXIT
-EXP
-EXPLAIN
-EXTERNAL
-EXTRACT
-FALSE
-FETCH
-FIELDS
-FILE
-FILLFACTOR
-FILTER
-FINAL
-FIRST
-FLOAT
-FLOAT4
-FLOAT8
-FLOOR
-FLUSH
-FOLLOWING
-FOR
-FORCE
-FOREIGN
-FORTRAN
-FORWARD
-FOUND
-FREE
-FREETEXT
-FREETEXTTABLE
-FREEZE
-FROM
-FULL
-FULLTEXT
-FUNCTION
-FUSION
-G
-GENERAL
-GENERATED
-GET
-GLOBAL
-GO
-GOTO
-GRANT
-GRANTED
-GRANTS
-GREATEST
-GROUP
-GROUPING
-HANDLER
-HAVING
-HEADER
-HEAP
-HIERARCHY
-HIGH_PRIORITY
-HOLD
-HOLDLOCK
-HOST
-HOSTS
-HOUR
-HOUR_MICROSECOND
-HOUR_MINUTE
-HOUR_SECOND
-IDENTIFIED
-IDENTITY
-IDENTITY_INSERT
-IDENTITYCOL
-IF
-IGNORE
-ILIKE
-IMMEDIATE
-IMMUTABLE
-IMPLEMENTATION
-IMPLICIT
-IN
-INCLUDE
-INCLUDING
-INCREMENT
-INDEX
-INDICATOR
-INFILE
-INFIX
-INHERIT
-INHERITS
-INITIAL
-INITIALIZE
-INITIALLY
-INNER
-INOUT
-INPUT
-INSENSITIVE
-INSERT
-INSERT_ID
-INSTANCE
-INSTANTIABLE
-INSTEAD
-INT
-INT1
-INT2
-INT3
-INT4
-INT8
-INTEGER
-INTERSECT
-INTERSECTION
-INTERVAL
-INTO
-INVOKER
-IS
-ISAM
-ISNULL
-ISOLATION
-ITERATE
-JOIN
-K
-KEY
-KEY_MEMBER
-KEY_TYPE
-KEYS
-KILL
-LANCOMPILER
-LANGUAGE
-LARGE
-LAST
-LAST_INSERT_ID
-LATERAL
-LEADING
-LEAST
-LEAVE
-LEFT
-LENGTH
-LESS
-LEVEL
-LIKE
-LIMIT
-LINENO
-LINES
-LISTEN
-LN
-LOAD
-LOCAL
-LOCALTIME
-LOCALTIMESTAMP
-LOCATION
-LOCATOR
-LOCK
-LOGIN
-LOGS
-LONG
-LONGBLOB
-LONGTEXT
-LOOP
-LOW_PRIORITY
-LOWER
-M
-MAP
-MATCH
-MATCHED
-MAX
-MAX_ROWS
-MAXEXTENTS
-MAXVALUE
-MEDIUMBLOB
-MEDIUMINT
-MEDIUMTEXT
-MEMBER
-MERGE
-MESSAGE_LENGTH
-MESSAGE_OCTET_LENGTH
-MESSAGE_TEXT
-METHOD
-MIDDLEINT
-MIN
-MIN_ROWS
-MINUS
-MINUTE
-MINUTE_MICROSECOND
-MINUTE_SECOND
-MINVALUE
-MLSLABEL
-MOD
-MODE
-MODIFIES
-MODIFY
-MODULE
-MONTH
-MONTHNAME
-MORE
-MOVE
-MULTISET
-MUMPS
-MYISAM
-NAME
-NAMES
-NATIONAL
-NATURAL
-NCHAR
-NCLOB
-NESTING
-NEW
-NEXT
-NO
-NO_WRITE_TO_BINLOG
-NOAUDIT
-NOCHECK
-NOCOMPRESS
-NOCREATEDB
-NOCREATEROLE
-NOCREATEUSER
-NOINHERIT
-NOLOGIN
-NONCLUSTERED
-NONE
-NORMALIZE
-NORMALIZED
-NOSUPERUSER
-NOT
-NOTHING
-NOTIFY
-NOTNULL
-NOWAIT
-NULL
-NULLABLE
-NULLIF
-NULLS
-NUMBER
-NUMERIC
-OBJECT
-OCTET_LENGTH
-OCTETS
-OF
-OFF
-OFFLINE
-OFFSET
-OFFSETS
-OIDS
-OLD
-ON
-ONLINE
-ONLY
-OPEN
-OPENDATASOURCE
-OPENQUERY
-OPENROWSET
-OPENXML
-OPERATION
-OPERATOR
-OPTIMIZE
-OPTION
-OPTIONALLY
-OPTIONS
-OR
-ORDER
-ORDERING
-ORDINALITY
-OTHERS
-OUT
-OUTER
-OUTFILE
-OUTPUT
-OVER
-OVERLAPS
-OVERLAY
-OVERRIDING
-OWNER
-PACK_KEYS
-PAD
-PARAMETER
-PARAMETER_MODE
-PARAMETER_NAME
-PARAMETER_ORDINAL_POSITION
-PARAMETER_SPECIFIC_CATALOG
-PARAMETER_SPECIFIC_NAME
-PARAMETER_SPECIFIC_SCHEMA
-PARAMETERS
-PARTIAL
-PARTITION
-PASCAL
-PASSWORD
-PATH
-PCTFREE
-PERCENT
-PERCENT_RANK
-PERCENTILE_CONT
-PERCENTILE_DISC
-PLACING
-PLAN
-PLI
-POSITION
-POSTFIX
-POWER
-PRECEDING
-PRECISION
-PREFIX
-PREORDER
-PREPARE
-PREPARED
-PRESERVE
-PRIMARY
-PRINT
-PRIOR
-PRIVILEGES
-PROC
-PROCEDURAL
-PROCEDURE
-PROCESS
-PROCESSLIST
-PUBLIC
-PURGE
-QUOTE
-RAID0
-RAISERROR
-RANGE
-RANK
-RAW
-READ
-READS
-READTEXT
-REAL
-RECHECK
-RECONFIGURE
-RECURSIVE
-REF
-REFERENCES
-REFERENCING
-REGEXP
-REGR_AVGX
-REGR_AVGY
-REGR_COUNT
-REGR_INTERCEPT
-REGR_R2
-REGR_SLOPE
-REGR_SXX
-REGR_SXY
-REGR_SYY
-REINDEX
-RELATIVE
-RELEASE
-RELOAD
-RENAME
-REPEAT
-REPEATABLE
-REPLACE
-REPLICATION
-REQUIRE
-RESET
-RESIGNAL
-RESOURCE
-RESTART
-RESTORE
-RESTRICT
-RESULT
-RETURN
-RETURNED_CARDINALITY
-RETURNED_LENGTH
-RETURNED_OCTET_LENGTH
-RETURNED_SQLSTATE
-RETURNS
-REVOKE
-RIGHT
-RLIKE
-ROLE
-ROLLBACK
-ROLLUP
-ROUTINE
-ROUTINE_CATALOG
-ROUTINE_NAME
-ROUTINE_SCHEMA
-ROW
-ROW_COUNT
-ROW_NUMBER
-ROWCOUNT
-ROWGUIDCOL
-ROWID
-ROWNUM
-ROWS
-RULE
-SAVE
-SAVEPOINT
-SCALE
-SCHEMA
-SCHEMA_NAME
-SCHEMAS
-SCOPE
-SCOPE_CATALOG
-SCOPE_NAME
-SCOPE_SCHEMA
-SCROLL
-SEARCH
-SECOND
-SECOND_MICROSECOND
-SECTION
-SECURITY
-SELECT
-SELF
-SENSITIVE
-SEPARATOR
-SEQUENCE
-SERIALIZABLE
-SERVER_NAME
-SESSION
-SESSION_USER
-SET
-SETOF
-SETS
-SETUSER
-SHARE
-SHOW
-SHUTDOWN
-SIGNAL
-SIMILAR
-SIMPLE
-SIZE
-SMALLINT
-SOME
-SONAME
-SOURCE
-SPACE
-SPATIAL
-SPECIFIC
-SPECIFIC_NAME
-SPECIFICTYPE
-SQL
-SQL_BIG_RESULT
-SQL_BIG_SELECTS
-SQL_BIG_TABLES
-SQL_CALC_FOUND_ROWS
-SQL_LOG_OFF
-SQL_LOG_UPDATE
-SQL_LOW_PRIORITY_UPDATES
-SQL_SELECT_LIMIT
-SQL_SMALL_RESULT
-SQL_WARNINGS
-SQLCA
-SQLCODE
-SQLERROR
-SQLEXCEPTION
-SQLSTATE
-SQLWARNING
-SQRT
-SSL
-STABLE
-START
-STARTING
-STATE
-STATEMENT
-STATIC
-STATISTICS
-STATUS
-STDDEV_POP
-STDDEV_SAMP
-STDIN
-STDOUT
-STORAGE
-STRAIGHT_JOIN
-STRICT
-STRING
-STRUCTURE
-STYLE
-SUBCLASS_ORIGIN
-SUBLIST
-SUBMULTISET
-SUBSTRING
-SUCCESSFUL
-SUM
-SUPERUSER
-SYMMETRIC
-SYNONYM
-SYSDATE
-SYSID
-SYSTEM
-SYSTEM_USER
-TABLE
-TABLE_NAME
-TABLES
-TABLESAMPLE
-TABLESPACE
-TEMP
-TEMPLATE
-TEMPORARY
-TERMINATE
-TERMINATED
-TEXT
-TEXTSIZE
-THAN
-THEN
-TIES
-TIME
-TIMESTAMP
-TIMEZONE_HOUR
-TIMEZONE_MINUTE
-TINYBLOB
-TINYINT
-TINYTEXT
-TO
-TOAST
-TOP
-TOP_LEVEL_COUNT
-TRAILING
-TRAN
-TRANSACTION
-TRANSACTION_ACTIVE
-TRANSACTIONS_COMMITTED
-TRANSACTIONS_ROLLED_BACK
-TRANSFORM
-TRANSFORMS
-TRANSLATE
-TRANSLATION
-TREAT
-TRIGGER
-TRIGGER_CATALOG
-TRIGGER_NAME
-TRIGGER_SCHEMA
-TRIM
-TRUE
-TRUNCATE
-TRUSTED
-TSEQUAL
-TYPE
-UESCAPE
-UID
-UNBOUNDED
-UNCOMMITTED
-UNDER
-UNDO
-UNENCRYPTED
-UNION
-UNIQUE
-UNKNOWN
-UNLISTEN
-UNLOCK
-UNNAMED
-UNNEST
-UNSIGNED
-UNTIL
-UPDATE
-UPDATETEXT
-UPPER
-USAGE
-USE
-USER
-USER_DEFINED_TYPE_CATALOG
-USER_DEFINED_TYPE_CODE
-USER_DEFINED_TYPE_NAME
-USER_DEFINED_TYPE_SCHEMA
-USING
-UTC_DATE
-UTC_TIME
-UTC_TIMESTAMP
-VACUUM
-VALID
-VALIDATE
-VALIDATOR
-VALUE
-VALUES
-VAR_POP
-VAR_SAMP
-VARBINARY
-VARCHAR
-VARCHAR2
-VARCHARACTER
-VARIABLE
-VARIABLES
-VARYING
-VERBOSE
-VIEW
-VOLATILE
-WAITFOR
-WHEN
-WHENEVER
-WHERE
-WHILE
-WIDTH_BUCKET
-WINDOW
-WITH
-WITHIN
-WITHOUT
-WORK
-WRITE
-WRITETEXT
-X509
-XOR
-YEAR
-YEAR_MONTH
-ZEROFILL
-ZONE
-```
-
-[simon]: https://www.simonholywell.com/?utm_source=sqlstyle.guide&utm_medium=link&utm_campaign=md-document
- "SimonHolywell.com"
-[issue]: https://github.com/treffynnon/sqlstyle.guide/issues
- "SQL style guide issues on GitHub"
-[fork]: https://github.com/treffynnon/sqlstyle.guide/fork
- "Fork SQL style guide on GitHub"
-[pull]: https://github.com/treffynnon/sqlstyle.guide/pulls/
- "SQL style guide pull requests on GitHub"
-[celko]: https://www.amazon.com/gp/product/0120887975/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=treffynnon-20&linkId=9c88eac8cd420e979675c815771313d5
- "Joe Celko's SQL Programming Style (The Morgan Kaufmann Series in Data Management Systems)"
-[celko-ru]: https://www.ozon.ru/context/detail/id/2628672
- "Стиль программирования Джо Селко на SQL"
-[dl-md]: https://raw.githubusercontent.com/treffynnon/sqlstyle.guide/gh-pages/_includes/sqlstyle.guide.ru.md
- "Download the guide in Markdown format"
-[iso-8601-ru]: https://ru.wikipedia.org/wiki/ISO_8601
- "Wikipedia: ISO 8601"
-[c-style-comments-ru]: https://ru.wikipedia.org/wiki/%D0%A1%D0%B8_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)#.D0.9A.D0.BE.D0.BC.D0.BC.D0.B5.D0.BD.D1.82.D0.B0.D1.80.D0.B8.D0.B8
- "Wikipedia: Комментарии в C"
-[hungarian-notation-ru]: https://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%BD%D0%B3%D0%B5%D1%80%D1%81%D0%BA%D0%B0%D1%8F_%D0%BD%D0%BE%D1%82%D0%B0%D1%86%D0%B8%D1%8F
- "Wikipedia: Венгерская нотация"
-[sql-92-ru]: https://ru.wikipedia.org/wiki/SQL-92
- "Wikipedia: SQL-92"
-[rivers]: http://practicaltypography.com/one-space-between-sentences.html
- "Practical Typography: one space between sentences"
-[rivers-ru]: https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D1%80%D0%B8%D0%B4%D0%BE%D1%80_(%D1%82%D0%B8%D0%BF%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0)
- "Коридоры в типографике"
-[reserved-keywords]: #reserved-keyword-reference
- "Reserved keyword reference"
-[eav]: https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
- "Wikipedia: Entity–attribute–value model"
-[sqlstyleguide]: http://www.sqlstyle.guide
- "SQL style guide by Simon Holywell"
-[licence-ru]: https://creativecommons.org/licenses/by-sa/4.0/deed.ru
- "Creative Commons «Атрибуция — На тех же условиях» 4.0 Всемирная"
diff --git a/_includes/sqlstyle.guide.zh-TW.md b/_includes/sqlstyle.guide.zh-TW.md
deleted file mode 100644
index 62f42ff..0000000
--- a/_includes/sqlstyle.guide.zh-TW.md
+++ /dev/null
@@ -1,1200 +0,0 @@
-# SQL style guide SQL樣式指南
-
-這份文件翻譯自以[創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款][licence-zh]發布的[http://www.sqlstyle.guide][sqlstyleguide],譯文以原文同樣的條款發布。
-
-## Overview 綜述
-
-你可以直接使用這些指導方針,或者[fork][fork]後創建自己的版本——最重要的是選擇一套方針並嚴格遵守它。歡迎通過提交[issue][issue]或[pull request][pull]來提交建議或修復bug。
-
-為了讓閱讀了Joe Celko的《[SQL ProgrammingStyle][celko]》的團隊能更容易采用這套規則,這套原則被設計成與該書的型式相容。本指南在某些領域嚴格一些,在另一些領域寬鬆一些。 當然本指南比Celko的書更簡潔一些,因為Celko的書包含了一些趣聞和每一條原則背後的理由。
-
-將此文檔的[Markdown format][dl-md]格式添加到專案程式庫中或將該頁面的鏈接發送給所有項目的參與者要比傳閱實體書容易得多。
-
-[Simon Holywell][simon]所著的《SQL樣式指南》以[創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款][licence-zh]發布,改編自[http://www.sqlstyle.guide][sqlstyleguide]。
-
-## General 一般原則
-
-### Do 應該做的事情
-
-* 使用一致的、敘述性的名稱。
-* 靈活使用空格和縮排來增強可讀性。
-* 儲存符合[ISO-8601][iso-8601]標準的日期格式(`YYYY-MM-DD HH:MM:SS.SSSSS`)。
-* 最好使用標準SQL函式而不是特定供應商的函式以提高可移植性。
-* 保證代碼簡潔明了並消除多餘的SQL——比如非必要的引號或括號,或者可以推導出的多餘`WHERE`語句。
-* 必要時在SQL代碼中加入註解。優先使用C語言式的以`/*`開始以`*/`結束的區塊註解,或使用以`--`開始的單行註解。
-
-```sql
-SELECT file_hash -- stored ssdeep hash
- FROM file_system
- WHERE file_name = '.vimrc';
-```
-```sql
-/* Updating the file record after writing to the file */
-UPDATE file_system
- SET file_modified_date = '1980-02-22 13:19:01.00000',
- file_size = 209732
- WHERE file_name = '.vimrc';
-```
-
-### Avoid 應避免的事情
-
-* 駝峰命名法——它不適合快速掃描。
-* 描述性的前綴或匈牙利命名法比如`sp_`或`tbl`。
-* 複數形式——盡量使用更自然的集合術語。比如,用“staff”替代“employees”,或用“people”替代“individuals”。
-* 需要引用號的標識符——如果你必須使用這樣的標識符,最好堅持用SQL92的雙引號來提高可移植性。
-* 物件導向程式設計的原則不該應用到結構化查詢語言或資料庫結構上。
-
-## Naming conventions 命名慣例
-
-### General 一般原則
-
-* 保證名字獨一無二且不是[保留字][reserved-keywords]。
-* 保證名字長度不超過30個字節。
-* 名字要以字母開頭,不能以下底線結尾。
-* 只在名字中使用字母、數字和下底線。
-* 不要再名字中出現連續下底線——這樣很難辨認。
-* 在名字中需要空格的地方用下底線代替。
-* 盡量避免使用縮寫詞。使用時一定確定這個縮寫簡明易懂。
-
-```sql
-SELECT first_name
- FROM staff;
-```
-
-### Tables 表名
-
-* 用集合名詞,或在不那麽理想的情況下,複數形式。如`staff`和`employees`。
-* 不要使用類似`tbl`或其他的描述性的前綴或匈牙利命名法。
-* 表不應該同它的列同名,反之亦然。
-* 盡量避免連接兩個表的名字作為關系表(relationship table)的名字。與其使用`cars_mechanics`做表名不如使用`services`。
-
-### Columns 列名
-
-* 總是使用單數形式。
-* 避免直接使用`id`做表的主標識符。
-* 避免列名同表名同名,反之亦然。
-* 總是使用小寫字母,除非是特殊情況,如專有名詞。
-
-### Aliasing or correlations 別名與關聯名
-
-* 應該與它們別名的對象或與它們代表的表達式相關聯。
-* 一般來說,關聯名應該是對象名的第一個字母。
-* 如果已經有相同的關聯名了,那麽在關聯名後加一個數字。
-* 總是加上`AS`關鍵字,因為這樣的顯示聲明易於閱讀。
-* 為計算出的數據命名時,用一個將這條數據存在表裏時會使用的列名。
-
-```sql
-SELECT first_name AS fn
- FROM staff AS s1
- JOIN students AS s2
- ON s2.mentor_id = s1.staff_num;
-```
-```sql
-SELECT SUM(s.monitor_tally) AS monitor_total
- FROM staff AS s;
-```
-
-### Stored procedures 過程名
-
-* 名字一定要包含動詞。
-* 不要附加`sp_`或任何其他這樣的敘述性前綴或使用匈牙利表示法。
-
-### Uniform suffix 統一的後綴
-
-下列後綴有統一的意義,能保證SQL代碼更容易被理解。在合適的時候使用正確的後綴。
-
-* `_id` 獨一無二的標識符,如主鍵。
-* `_status` 標識值或任何表示狀態的值,比如`publication_status`。
-* `_total` 總和或某些值的和。
-* `_num` 表示該域包含數值。
-* `_name` 表示名字。
-* `_seq` 包含一系列數值。
-* `_date` 表示該列包含日期。
-* `_tally` 計數值。
-* `_size` 大小,如文件大小或服裝大小。
-* `_addr` 地址,有形的或無形的,如`ip_addr`
-
-## Query syntax 查詢語句
-
-### Reserved words 保留字
-
-保留字總是大寫,如`SELECT`和`WHERE`。
-
-最好使用保留字的全稱而不是簡寫,用`ABSOLUTE`而不用`ABS`。
-
-當標準ANSI SQL關鍵字能完成相同的事情時,不要使用資料庫伺服器相依的關鍵字,這樣能增強可移植性。
-
-```sql
-SELECT model_num
- FROM phones AS p
- WHERE p.release_date > '2014-09-30';
-```
-
-### White space 空白字元
-
-正確地使用空白字元對清晰的代碼十分重要。不要把代碼堆在一起或移除自然語言中的空格。
-
-#### Spaces 空格
-
-用空格使根關鍵字都結束在同一列上。在代碼中形成一個從上到下的“川流”,這樣幫助讀者快速掃描代碼並將關鍵字和實現細節分開。川流在排版時應該避免,但是對書寫SQL語句是有幫助的。
-
-```sql
-(SELECT f.species_name,
- AVG(f.height) AS average_height, AVG(f.diameter) AS average_diameter
- FROM flora AS f
- WHERE f.species_name = 'Banksia'
- OR f.species_name = 'Sheoak'
- OR f.species_name = 'Wattle'
- GROUP BY f.species_name, f.observation_date)
-
- UNION ALL
-
-(SELECT b.species_name,
- AVG(b.height) AS average_height, AVG(b.diameter) AS average_diameter
- FROM botanic_garden_flora AS b
- WHERE b.species_name = 'Banksia'
- OR b.species_name = 'Sheoak'
- OR b.species_name = 'Wattle'
- GROUP BY b.species_name, b.observation_date)
-```
-
-注意`WHERE`和`FROM`等關鍵字,都右對齊,而真實的列名都左對齊。
-
-注意下列情況總是加入空格:
-
-* 在等號前後(`=`)
-* 在逗號後(`,`)
-* 單引號前後(`'`),除非單引號後面是括號、逗號或分號
-
-```sql
-SELECT a.title, a.release_date, a.recording_date
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-#### Line spacing 換行
-
-總是換行的情況:
-
-* 在`AND`或`OR`前。
-* 在分號後(分隔語句以提高可讀性)。
-* 在每個關鍵詞定以後。
-* 將多個列組成一個邏輯組時的逗號後。
-* 將代碼分隔成相關聯的多個部分,幫助提高大段代碼的可讀性。
-
-讓所有的關鍵字右對齊,讓所有的值左對齊,在查詢語句中間留出一個空隙。這樣能提高速讀代碼的速讀。
-
-
-```sql
-INSERT INTO albums (title, release_date, recording_date)
-VALUES ('Charcoal Lane', '1990-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000'),
- ('The New Danger', '2008-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000');
-```
-
-```sql
-UPDATE albums
- SET release_date = '1990-01-01 01:01:01.00000'
- WHERE title = 'The New Danger';
-```
-
-```sql
-SELECT a.title,
- a.release_date, a.recording_date, a.production_date -- grouped dates together
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-### Identation 縮排
-
-為確保SQL的可讀性,一定要遵守下列規則。
-
-### Joins Join語句
-
-Join語句應該縮進到川流的另一側並在必要的時候添加一個換行。
-
-
-```sql
-SELECT r.last_name
- FROM riders AS r
- INNER JOIN bikes AS b
- ON r.bike_vin_num = b.vin_num
- AND b.engines > 2
-
- INNER JOIN crew AS c
- ON r.crew_chief_last_name = c.last_name
- AND c.chief = 'Y';
-```
-
-#### Subqueries 子查詢
-
-子查詢應該在川流的右側對齊並使用其他查詢相同的樣式。有時候將右括號單獨置於一行並同與它配對的左括號對齊是有意義的——尤其是當存在嵌套子查詢的時候。
-
-```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
- 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');
-```
-
-### Preferred formalisms 推薦的形式
-
-* 盡量使用`BETWEEN`而不是多個`AND`語句。
-* 同樣地,使用`IN()`而不是多個`OR`語句。
-* 當數據輸出資料庫時需要處理時,使用`CASE`表達式。`CASE`語句能嵌套形成更覆雜的邏輯結構。
-* 盡量避免`UNION`語句和臨時表。如果資料庫架構能夠不靠這些語句運行,那麽多數情況下它就不應該依靠這些語句。
-
-
-```sql
-SELECT CASE postcode
- WHEN 'BN1' THEN 'Brighton'
- WHEN 'EH1' THEN 'Edinburgh'
- END AS city
- FROM office_locations
- WHERE country = 'United Kingdom'
- AND opening_time BETWEEN 8 AND 9
- AND postcode IN ('EH1', 'BN1', 'NN1', 'KW1')
-```
-
-## Create syntax 創建語句
-
-聲明模式信息時維護可讀代碼也很重要。所以列定義的順序和分組一定要有意義。
-
-在`CREATE`定義中,每列要縮排4個空格。
-
-### Choosing data types 選擇數據類型
-
-* 盡可能避免使用供應商特定的數據類型。 它們不僅不可移植,而且可能不適用於相同供應商軟體的舊版本。
-* 只在真的需要浮點數運算的時候才使用`REAL`和`FLOAT`類型,否則使用`NUMERIC`和`DECIMAL`類型。浮點數舍入誤差是個麻煩。
-
-### Specifying default values 指定預設類型
-
-* 預設值一定與列的類型相同——如果一個列的類型是`DECIMAL`那麽就不要使用`INTEGER`類型作為預設值。
-* 預設值要緊跟類型聲明並在`NOT NULL`聲明前。
-
-### Constraints and keys 約束和鍵
-
-約束和鍵是構成資料庫系統的重要組成部分。它們能很快地變得難以閱讀和理解,所以遵從指南方針是很重要的。
-
-#### Choosing keys 選擇鍵
-
-設計時應該謹慎選擇構成鍵的列,因為鍵既明顯影響著性能和數據完整性。
-
-1. 鍵在某種程度上應該是獨一無二的。
-2. 該值在不同表中的類型應該相同並且盡量不會更改。
-3. 該值是否會無法通過某些標準格式(如ISO發布的標準)? 遵守第2點。
-4. 盡量讓鍵保持簡單,但在適當情況下不要害怕使用複合鍵。
-
-以上是定義資料庫時合乎邏輯的平衡做法。當需求變更時,鍵也應該根據情況更新。
-
-#### Defining constraints 定義約束
-
-確定鍵後,就可以用約束和字值段驗證來定義它們。
-
-##### General 概述
-
-* 表至少需要一個鍵來保證其完整性和可用性。
-* 約束應該有名字,除了`UNIQUE`、`PRIMARY KEY`和`FOREIGN KEY`之外。
-
-##### Layout and order 布局和順序
-
-* 在`CREATE TABLE`語句後先定義主鍵。
-* 約束的定義應該緊跟它相應的列的定義後。
-* 如果該約束與多個列相關,那麽讓它盡量離與其相關的列距離越近越好。實在不行就講它放在表定義的最後。
-* 如果是與整個表相關聯表級別的約束,那麽就將放在表的定義的最後。
-* 按照字母順序安排定義,`ON DELETE`排在`ON UPDATE`前。
-* 必要的話,把所有相關的語句對齊。比如,把所有`NOT NULL`定義對齊到同一列。雖然這樣的做法有些慢,但是能提高可讀性。
-
-##### Validation 校驗
-
-* 用`LIKE`和`SIMILAR TO`約束來保證格式已知字串的數據完整性。
-* 當數字的值的範圍可以確定時,用`CHECK()`來防止錯誤的值進入資料庫或被錯誤地轉換。大部分情況下至少要確認值要大於零。
-* `CHECK()`約束應該在單獨的語句中以便debug。
-
-##### Example
-
-```sql
-CREATE TABLE staff (
- PRIMARY KEY (staff_num),
- staff_num INT(5) NOT NULL,
- first_name VARCHAR(100) NOT NULL,
- pens_in_drawer INT(2) NOT NULL,
- CONSTRAINT pens_in_drawer_range
- CHECK(pens_in_drawer >= 1 AND pens_in_drawer < 100)
-);
-```
-
-### Design to avoid
-
-* 物件導向程式設計並不適用於關聯式資料庫——避免這個陷阱。
-* 將值存入一列並將單位存在另一列。列的定義應該讓自己的單位不言自明以避免在應用內進行合並。使用`CHECK()`來保證資料庫中的數據是合法的。
-* [EAV (Entity Attribute Value)][eav]表——用特殊的產品來處理無模式數據。
-* 因為某些原因(如為了歸檔、為了劃分跨國公司的區域)將能合並在一起的表分開。這樣的設計導致以後必須使用`UNION`操作而不能直接查詢一個表。
-
-
-## 附錄
-
-### 保留字參考
-
-下表包含了ANSI SQL (92, 99 和 2003)、MySQL 3到5.x、PostgreSQL 8.1、MS SQL Server 2000、MS ODBC和Oracle 10.2中的關鍵字。
-
-```sql
-A
-ABORT
-ABS
-ABSOLUTE
-ACCESS
-ACTION
-ADA
-ADD
-ADMIN
-AFTER
-AGGREGATE
-ALIAS
-ALL
-ALLOCATE
-ALSO
-ALTER
-ALWAYS
-ANALYSE
-ANALYZE
-AND
-ANY
-ARE
-ARRAY
-AS
-ASC
-ASENSITIVE
-ASSERTION
-ASSIGNMENT
-ASYMMETRIC
-AT
-ATOMIC
-ATTRIBUTE
-ATTRIBUTES
-AUDIT
-AUTHORIZATION
-AUTO_INCREMENT
-AVG
-AVG_ROW_LENGTH
-BACKUP
-BACKWARD
-BEFORE
-BEGIN
-BERNOULLI
-BETWEEN
-BIGINT
-BINARY
-BIT
-BIT_LENGTH
-BITVAR
-BLOB
-BOOL
-BOOLEAN
-BOTH
-BREADTH
-BREAK
-BROWSE
-BULK
-BY
-C
-CACHE
-CALL
-CALLED
-CARDINALITY
-CASCADE
-CASCADED
-CASE
-CAST
-CATALOG
-CATALOG_NAME
-CEIL
-CEILING
-CHAIN
-CHANGE
-CHAR
-CHAR_LENGTH
-CHARACTER
-CHARACTER_LENGTH
-CHARACTER_SET_CATALOG
-CHARACTER_SET_NAME
-CHARACTER_SET_SCHEMA
-CHARACTERISTICS
-CHARACTERS
-CHECK
-CHECKED
-CHECKPOINT
-CHECKSUM
-CLASS
-CLASS_ORIGIN
-CLOB
-CLOSE
-CLUSTER
-CLUSTERED
-COALESCE
-COBOL
-COLLATE
-COLLATION
-COLLATION_CATALOG
-COLLATION_NAME
-COLLATION_SCHEMA
-COLLECT
-COLUMN
-COLUMN_NAME
-COLUMNS
-COMMAND_FUNCTION
-COMMAND_FUNCTION_CODE
-COMMENT
-COMMIT
-COMMITTED
-COMPLETION
-COMPRESS
-COMPUTE
-CONDITION
-CONDITION_NUMBER
-CONNECT
-CONNECTION
-CONNECTION_NAME
-CONSTRAINT
-CONSTRAINT_CATALOG
-CONSTRAINT_NAME
-CONSTRAINT_SCHEMA
-CONSTRAINTS
-CONSTRUCTOR
-CONTAINS
-CONTAINSTABLE
-CONTINUE
-CONVERSION
-CONVERT
-COPY
-CORR
-CORRESPONDING
-COUNT
-COVAR_POP
-COVAR_SAMP
-CREATE
-CREATEDB
-CREATEROLE
-CREATEUSER
-CROSS
-CSV
-CUBE
-CUME_DIST
-CURRENT
-CURRENT_DATE
-CURRENT_DEFAULT_TRANSFORM_GROUP
-CURRENT_PATH
-CURRENT_ROLE
-CURRENT_TIME
-CURRENT_TIMESTAMP
-CURRENT_TRANSFORM_GROUP_FOR_TYPE
-CURRENT_USER
-CURSOR
-CURSOR_NAME
-CYCLE
-DATA
-DATABASE
-DATABASES
-DATE
-DATETIME
-DATETIME_INTERVAL_CODE
-DATETIME_INTERVAL_PRECISION
-DAY
-DAY_HOUR
-DAY_MICROSECOND
-DAY_MINUTE
-DAY_SECOND
-DAYOFMONTH
-DAYOFWEEK
-DAYOFYEAR
-DBCC
-DEALLOCATE
-DEC
-DECIMAL
-DECLARE
-DEFAULT
-DEFAULTS
-DEFERRABLE
-DEFERRED
-DEFINED
-DEFINER
-DEGREE
-DELAY_KEY_WRITE
-DELAYED
-DELETE
-DELIMITER
-DELIMITERS
-DENSE_RANK
-DENY
-DEPTH
-DEREF
-DERIVED
-DESC
-DESCRIBE
-DESCRIPTOR
-DESTROY
-DESTRUCTOR
-DETERMINISTIC
-DIAGNOSTICS
-DICTIONARY
-DISABLE
-DISCONNECT
-DISK
-DISPATCH
-DISTINCT
-DISTINCTROW
-DISTRIBUTED
-DIV
-DO
-DOMAIN
-DOUBLE
-DROP
-DUAL
-DUMMY
-DUMP
-DYNAMIC
-DYNAMIC_FUNCTION
-DYNAMIC_FUNCTION_CODE
-EACH
-ELEMENT
-ELSE
-ELSEIF
-ENABLE
-ENCLOSED
-ENCODING
-ENCRYPTED
-END
-END-EXEC
-ENUM
-EQUALS
-ERRLVL
-ESCAPE
-ESCAPED
-EVERY
-EXCEPT
-EXCEPTION
-EXCLUDE
-EXCLUDING
-EXCLUSIVE
-EXEC
-EXECUTE
-EXISTING
-EXISTS
-EXIT
-EXP
-EXPLAIN
-EXTERNAL
-EXTRACT
-FALSE
-FETCH
-FIELDS
-FILE
-FILLFACTOR
-FILTER
-FINAL
-FIRST
-FLOAT
-FLOAT4
-FLOAT8
-FLOOR
-FLUSH
-FOLLOWING
-FOR
-FORCE
-FOREIGN
-FORTRAN
-FORWARD
-FOUND
-FREE
-FREETEXT
-FREETEXTTABLE
-FREEZE
-FROM
-FULL
-FULLTEXT
-FUNCTION
-FUSION
-G
-GENERAL
-GENERATED
-GET
-GLOBAL
-GO
-GOTO
-GRANT
-GRANTED
-GRANTS
-GREATEST
-GROUP
-GROUPING
-HANDLER
-HAVING
-HEADER
-HEAP
-HIERARCHY
-HIGH_PRIORITY
-HOLD
-HOLDLOCK
-HOST
-HOSTS
-HOUR
-HOUR_MICROSECOND
-HOUR_MINUTE
-HOUR_SECOND
-IDENTIFIED
-IDENTITY
-IDENTITY_INSERT
-IDENTITYCOL
-IF
-IGNORE
-ILIKE
-IMMEDIATE
-IMMUTABLE
-IMPLEMENTATION
-IMPLICIT
-IN
-INCLUDE
-INCLUDING
-INCREMENT
-INDEX
-INDICATOR
-INFILE
-INFIX
-INHERIT
-INHERITS
-INITIAL
-INITIALIZE
-INITIALLY
-INNER
-INOUT
-INPUT
-INSENSITIVE
-INSERT
-INSERT_ID
-INSTANCE
-INSTANTIABLE
-INSTEAD
-INT
-INT1
-INT2
-INT3
-INT4
-INT8
-INTEGER
-INTERSECT
-INTERSECTION
-INTERVAL
-INTO
-INVOKER
-IS
-ISAM
-ISNULL
-ISOLATION
-ITERATE
-JOIN
-K
-KEY
-KEY_MEMBER
-KEY_TYPE
-KEYS
-KILL
-LANCOMPILER
-LANGUAGE
-LARGE
-LAST
-LAST_INSERT_ID
-LATERAL
-LEADING
-LEAST
-LEAVE
-LEFT
-LENGTH
-LESS
-LEVEL
-LIKE
-LIMIT
-LINENO
-LINES
-LISTEN
-LN
-LOAD
-LOCAL
-LOCALTIME
-LOCALTIMESTAMP
-LOCATION
-LOCATOR
-LOCK
-LOGIN
-LOGS
-LONG
-LONGBLOB
-LONGTEXT
-LOOP
-LOW_PRIORITY
-LOWER
-M
-MAP
-MATCH
-MATCHED
-MAX
-MAX_ROWS
-MAXEXTENTS
-MAXVALUE
-MEDIUMBLOB
-MEDIUMINT
-MEDIUMTEXT
-MEMBER
-MERGE
-MESSAGE_LENGTH
-MESSAGE_OCTET_LENGTH
-MESSAGE_TEXT
-METHOD
-MIDDLEINT
-MIN
-MIN_ROWS
-MINUS
-MINUTE
-MINUTE_MICROSECOND
-MINUTE_SECOND
-MINVALUE
-MLSLABEL
-MOD
-MODE
-MODIFIES
-MODIFY
-MODULE
-MONTH
-MONTHNAME
-MORE
-MOVE
-MULTISET
-MUMPS
-MYISAM
-NAME
-NAMES
-NATIONAL
-NATURAL
-NCHAR
-NCLOB
-NESTING
-NEW
-NEXT
-NO
-NO_WRITE_TO_BINLOG
-NOAUDIT
-NOCHECK
-NOCOMPRESS
-NOCREATEDB
-NOCREATEROLE
-NOCREATEUSER
-NOINHERIT
-NOLOGIN
-NONCLUSTERED
-NONE
-NORMALIZE
-NORMALIZED
-NOSUPERUSER
-NOT
-NOTHING
-NOTIFY
-NOTNULL
-NOWAIT
-NULL
-NULLABLE
-NULLIF
-NULLS
-NUMBER
-NUMERIC
-OBJECT
-OCTET_LENGTH
-OCTETS
-OF
-OFF
-OFFLINE
-OFFSET
-OFFSETS
-OIDS
-OLD
-ON
-ONLINE
-ONLY
-OPEN
-OPENDATASOURCE
-OPENQUERY
-OPENROWSET
-OPENXML
-OPERATION
-OPERATOR
-OPTIMIZE
-OPTION
-OPTIONALLY
-OPTIONS
-OR
-ORDER
-ORDERING
-ORDINALITY
-OTHERS
-OUT
-OUTER
-OUTFILE
-OUTPUT
-OVER
-OVERLAPS
-OVERLAY
-OVERRIDING
-OWNER
-PACK_KEYS
-PAD
-PARAMETER
-PARAMETER_MODE
-PARAMETER_NAME
-PARAMETER_ORDINAL_POSITION
-PARAMETER_SPECIFIC_CATALOG
-PARAMETER_SPECIFIC_NAME
-PARAMETER_SPECIFIC_SCHEMA
-PARAMETERS
-PARTIAL
-PARTITION
-PASCAL
-PASSWORD
-PATH
-PCTFREE
-PERCENT
-PERCENT_RANK
-PERCENTILE_CONT
-PERCENTILE_DISC
-PLACING
-PLAN
-PLI
-POSITION
-POSTFIX
-POWER
-PRECEDING
-PRECISION
-PREFIX
-PREORDER
-PREPARE
-PREPARED
-PRESERVE
-PRIMARY
-PRINT
-PRIOR
-PRIVILEGES
-PROC
-PROCEDURAL
-PROCEDURE
-PROCESS
-PROCESSLIST
-PUBLIC
-PURGE
-QUOTE
-RAID0
-RAISERROR
-RANGE
-RANK
-RAW
-READ
-READS
-READTEXT
-REAL
-RECHECK
-RECONFIGURE
-RECURSIVE
-REF
-REFERENCES
-REFERENCING
-REGEXP
-REGR_AVGX
-REGR_AVGY
-REGR_COUNT
-REGR_INTERCEPT
-REGR_R2
-REGR_SLOPE
-REGR_SXX
-REGR_SXY
-REGR_SYY
-REINDEX
-RELATIVE
-RELEASE
-RELOAD
-RENAME
-REPEAT
-REPEATABLE
-REPLACE
-REPLICATION
-REQUIRE
-RESET
-RESIGNAL
-RESOURCE
-RESTART
-RESTORE
-RESTRICT
-RESULT
-RETURN
-RETURNED_CARDINALITY
-RETURNED_LENGTH
-RETURNED_OCTET_LENGTH
-RETURNED_SQLSTATE
-RETURNS
-REVOKE
-RIGHT
-RLIKE
-ROLE
-ROLLBACK
-ROLLUP
-ROUTINE
-ROUTINE_CATALOG
-ROUTINE_NAME
-ROUTINE_SCHEMA
-ROW
-ROW_COUNT
-ROW_NUMBER
-ROWCOUNT
-ROWGUIDCOL
-ROWID
-ROWNUM
-ROWS
-RULE
-SAVE
-SAVEPOINT
-SCALE
-SCHEMA
-SCHEMA_NAME
-SCHEMAS
-SCOPE
-SCOPE_CATALOG
-SCOPE_NAME
-SCOPE_SCHEMA
-SCROLL
-SEARCH
-SECOND
-SECOND_MICROSECOND
-SECTION
-SECURITY
-SELECT
-SELF
-SENSITIVE
-SEPARATOR
-SEQUENCE
-SERIALIZABLE
-SERVER_NAME
-SESSION
-SESSION_USER
-SET
-SETOF
-SETS
-SETUSER
-SHARE
-SHOW
-SHUTDOWN
-SIGNAL
-SIMILAR
-SIMPLE
-SIZE
-SMALLINT
-SOME
-SONAME
-SOURCE
-SPACE
-SPATIAL
-SPECIFIC
-SPECIFIC_NAME
-SPECIFICTYPE
-SQL
-SQL_BIG_RESULT
-SQL_BIG_SELECTS
-SQL_BIG_TABLES
-SQL_CALC_FOUND_ROWS
-SQL_LOG_OFF
-SQL_LOG_UPDATE
-SQL_LOW_PRIORITY_UPDATES
-SQL_SELECT_LIMIT
-SQL_SMALL_RESULT
-SQL_WARNINGS
-SQLCA
-SQLCODE
-SQLERROR
-SQLEXCEPTION
-SQLSTATE
-SQLWARNING
-SQRT
-SSL
-STABLE
-START
-STARTING
-STATE
-STATEMENT
-STATIC
-STATISTICS
-STATUS
-STDDEV_POP
-STDDEV_SAMP
-STDIN
-STDOUT
-STORAGE
-STRAIGHT_JOIN
-STRICT
-STRING
-STRUCTURE
-STYLE
-SUBCLASS_ORIGIN
-SUBLIST
-SUBMULTISET
-SUBSTRING
-SUCCESSFUL
-SUM
-SUPERUSER
-SYMMETRIC
-SYNONYM
-SYSDATE
-SYSID
-SYSTEM
-SYSTEM_USER
-TABLE
-TABLE_NAME
-TABLES
-TABLESAMPLE
-TABLESPACE
-TEMP
-TEMPLATE
-TEMPORARY
-TERMINATE
-TERMINATED
-TEXT
-TEXTSIZE
-THAN
-THEN
-TIES
-TIME
-TIMESTAMP
-TIMEZONE_HOUR
-TIMEZONE_MINUTE
-TINYBLOB
-TINYINT
-TINYTEXT
-TO
-TOAST
-TOP
-TOP_LEVEL_COUNT
-TRAILING
-TRAN
-TRANSACTION
-TRANSACTION_ACTIVE
-TRANSACTIONS_COMMITTED
-TRANSACTIONS_ROLLED_BACK
-TRANSFORM
-TRANSFORMS
-TRANSLATE
-TRANSLATION
-TREAT
-TRIGGER
-TRIGGER_CATALOG
-TRIGGER_NAME
-TRIGGER_SCHEMA
-TRIM
-TRUE
-TRUNCATE
-TRUSTED
-TSEQUAL
-TYPE
-UESCAPE
-UID
-UNBOUNDED
-UNCOMMITTED
-UNDER
-UNDO
-UNENCRYPTED
-UNION
-UNIQUE
-UNKNOWN
-UNLISTEN
-UNLOCK
-UNNAMED
-UNNEST
-UNSIGNED
-UNTIL
-UPDATE
-UPDATETEXT
-UPPER
-USAGE
-USE
-USER
-USER_DEFINED_TYPE_CATALOG
-USER_DEFINED_TYPE_CODE
-USER_DEFINED_TYPE_NAME
-USER_DEFINED_TYPE_SCHEMA
-USING
-UTC_DATE
-UTC_TIME
-UTC_TIMESTAMP
-VACUUM
-VALID
-VALIDATE
-VALIDATOR
-VALUE
-VALUES
-VAR_POP
-VAR_SAMP
-VARBINARY
-VARCHAR
-VARCHAR2
-VARCHARACTER
-VARIABLE
-VARIABLES
-VARYING
-VERBOSE
-VIEW
-VOLATILE
-WAITFOR
-WHEN
-WHENEVER
-WHERE
-WHILE
-WIDTH_BUCKET
-WINDOW
-WITH
-WITHIN
-WITHOUT
-WORK
-WRITE
-WRITETEXT
-X509
-XOR
-YEAR
-YEAR_MONTH
-ZEROFILL
-ZONE
-```
-
-[simon]: https://www.simonholywell.com/?utm_source=sqlstyle.guide&utm_medium=link&utm_campaign=md-document
- "SimonHolywell.com"
-[issue]: https://github.com/treffynnon/sqlstyle.guide/issues
- "SQL style guide issues on GitHub"
-[fork]: https://github.com/treffynnon/sqlstyle.guide/fork
- "Fork SQL style guide on GitHub"
-[pull]: https://github.com/treffynnon/sqlstyle.guide/pulls/
- "SQL style guide pull requests on GitHub"
-[celko]: https://www.amazon.com/gp/product/0120887975/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=treffynnon-20&linkId=9c88eac8cd420e979675c815771313d5
- "Joe Celko's SQL Programming Style (The Morgan Kaufmann Series in Data Management Systems)"
-[dl-md]: https://raw.githubusercontent.com/treffynnon/sqlstyle.guide/gh-pages/_includes/sqlstyle.guide.zh-TW.md
- "Download the guide in Markdown format"
-[iso-8601]: https://en.wikipedia.org/wiki/ISO_8601
- "Wikipedia: ISO 8601"
-[rivers]: http://practicaltypography.com/one-space-between-sentences.html
- "Practical Typography: one space between sentences"
-[reserved-keywords]: #reserved-keyword-reference
- "Reserved keyword reference"
-[eav]: https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
- "Wikipedia: Entity–attribute–value model"
-[sqlstyleguide]: http://www.sqlstyle.guide
- "SQL style guide by Simon Holywell"
-[licence-zh]: https://creativecommons.org/licenses/by-sa/4.0/deed.zh_TW
- "姓名標示-相同方式分享 4.0 國際"
diff --git a/_includes/sqlstyle.guide.zh.md b/_includes/sqlstyle.guide.zh.md
deleted file mode 100644
index 1316fe7..0000000
--- a/_includes/sqlstyle.guide.zh.md
+++ /dev/null
@@ -1,1200 +0,0 @@
-# SQL style guide SQL样式指南
-
-这篇文档翻译自以[署名-相同方式共享 4.0 国际协议][licence-zh]发布的[http://www.sqlstyle.guide][sqlstyleguide],译文以原文同样的协议发布。
-
-## Overview 综述
-
-你可以直接使用这些指导方针,或者[fork][fork]后创建自己的版本——最重要的是选择一套方针并严格遵守它。欢迎通过提交[issue][issue]或[pull request][pull]来提交建议或修复bug。
-
-为了让阅读了Joe Celko的《[SQL ProgrammingStyle][celko]》的团队能更容易采用这套规则, 这套原则被设计成与该书的兼容的形式。该指南在某些领域严格一些,在另一些领域松懈一些。 当然该指南比Celko的书更简洁一些,因为Celko的书包含了一些趣闻和每一条原则后的理由。
-
-将该文档的[Markdown format][dl-md]格式添加到项目代码库中或将该页面的链接发送给所有项目的参与者要比传阅实体书容易得多。
-
-[Simon Holywell][simon]所著的《SQL样式指南》以[署名-相同方式共享 4.0 国际协议][licence-zh]发布,改编自[http://www.sqlstyle.guide][sqlstyleguide]。
-
-## General 一般原则
-
-### Do 应该做的事情
-
-* 使用一致的、叙述性的名称。
-* 灵活使用空格和缩进来增强可读性。
-* 存储符合[ISO-8601][iso-8601]标准的日期格式(`YYYY-MM-DD HH:MM:SS.SSSSS`)。
-* 最好使用标准SQL函数而不是特定供应商的函数以提高可移植性。
-* 保证代码简洁明了并消除多余的SQL——比如非必要的引号或括号,或者可以推导出的多余`WHERE`语句。
-* 必要时在SQL代码中加入注释。优先使用C语言式的以`/*`开始以`*/`结束的块注释,或使用以`--`开始的行注释。
-
-```sql
-SELECT file_hash -- stored ssdeep hash
- FROM file_system
- WHERE file_name = '.vimrc';
-```
-```sql
-/* Updating the file record after writing to the file */
-UPDATE file_system
- SET file_modified_date = '1980-02-22 13:19:01.00000',
- file_size = 209732
- WHERE file_name = '.vimrc';
-```
-
-### Avoid 应避免的事情
-
-* 驼峰命名法——它不适合快速扫描。
-* 描述性的前缀或匈牙利命名法比如`sp_`或`tbl`。
-* 复数形式——尽量使用更自然的集合术语。比如,用“staff”替代“employees”,或用“people”替代“individuals”。
-* 需要引用号的标识符——如果你必须使用这样的标识符,最好坚持用SQL92的双引号来提高可移植性。
-* 面向对象编程的原则不该应用到结构化查询语言或数据库结构上。
-
-## Naming conventions 命名惯例
-
-### General 一般原则
-
-* 保证名字独一无二且不是[保留字][reserved-keywords]。
-* 保证名字长度不超过30个字节。
-* 名字要以字母开头,不能以下划线结尾。
-* 只在名字中使用字母、数字和下划线。
-* 不要在名字中出现连续下划线——这样很难辨认。
-* 在名字中需要空格的地方用下划线代替。
-* 尽量避免使用缩写词。使用时一定确定这个缩写简明易懂。
-
-```sql
-SELECT first_name
- FROM staff;
-```
-
-### Tables 表名
-
-* 用集群名称,或在不那么理想的情况下,复数形式。如`staff`和`employees`。
-* 不要使用类似`tbl`或其他的描述性的前缀或匈牙利命名法。
-* 表不应该同它的列同名,反之亦然。
-* 尽量避免连接两个表的名字作为关系表(relationship table)的名字。与其使用`cars_mechanics`做表名不如使用`services`。
-
-### Columns 列名
-
-* 总是使用单数形式。
-* 避免直接使用`id`做表的主标识符。
-* 避免列名同表名同名,反之亦然。
-* 总是使用小写字母,除非是特殊情况,如专有名词。
-
-### Aliasing or correlations 别名与关联名
-
-* 应该与它们别名的对象或与它们代表的表达式相关联。
-* 一般来说,关联名应该是对象名的第一个字母。
-* 如果已经有相同的关联名了,那么在关联名后加一个数字。
-* 总是加上`AS`关键字,因为这样的显示声明易于阅读。
-* 为计算出的数据命名时,用一个将这条数据存在表里时会使用的列名。
-
-```sql
-SELECT first_name AS fn
- FROM staff AS s1
- JOIN students AS s2
- ON s2.mentor_id = s1.staff_num;
-```
-```sql
-SELECT SUM(s.monitor_tally) AS monitor_total
- FROM staff AS s;
-```
-
-### Stored procedures 过程名
-
-* 名字一定要包含动词。
-* 不要附加`sp_`或任何其他这样的叙述性前缀或使用匈牙利表示法。
-
-### Uniform suffix 统一的后缀
-
-下列后缀有统一的意义,能保证SQL代码更容易被理解。在合适的时候使用正确的后缀。
-
-* `_id` 独一无二的标识符,如主键。
-* `_status` 标识值或任何表示状态的值,比如`publication_status`。
-* `_total` 总和或某些值的和。
-* `_num` 表示该域包含数值。
-* `_name` 表示名字。
-* `_seq` 包含一系列数值。
-* `_date` 表示该列包含日期。
-* `_tally` 计数值。
-* `_size` 大小,如文件大小或服装大小。
-* `_addr` 地址,有形的或无形的,如`ip_addr`
-
-## Query syntax 查询语句
-
-### Reserved words 保留字
-
-保留字总是大写,如`SELECT`和`WHERE`。
-
-最好使用保留字的全称而不是简写,用`ABSOLUTE`而不用`ABS`。
-
-当标准ANSI SQL关键字能完成相同的事情时,不要使用数据库服务器相关的关键字,这样能增强可移植性。
-
-```sql
-SELECT model_num
- FROM phones AS p
- WHERE p.release_date > '2014-09-30';
-```
-
-### White space 空白字符
-
-正确地使用空白字符对清晰的代码十分重要。不要把代码堆再一起或移除自然语言中的空格。
-
-#### Spaces 空格
-
-用空格使根关键字都结束在同一列上。在代码中形成一个从上到下的“川流”,这样帮助读者快速扫描代码并将关键字和实现细节分开。川流在排版时应该避免,但是对书写SQL语句是有帮助的。
-
-```sql
-(SELECT f.species_name,
- AVG(f.height) AS average_height, AVG(f.diameter) AS average_diameter
- FROM flora AS f
- WHERE f.species_name = 'Banksia'
- OR f.species_name = 'Sheoak'
- OR f.species_name = 'Wattle'
- GROUP BY f.species_name, f.observation_date)
-
- UNION ALL
-
-(SELECT b.species_name,
- AVG(b.height) AS average_height, AVG(b.diameter) AS average_diameter
- FROM botanic_garden_flora AS b
- WHERE b.species_name = 'Banksia'
- OR b.species_name = 'Sheoak'
- OR b.species_name = 'Wattle'
- GROUP BY b.species_name, b.observation_date)
-```
-
-注意`WHERE`和`FROM`等关键字,都右对齐,而真实的列名都左对齐。
-
-注意下列情况总是加入空格:
-
-* 在等号前后(`=`)
-* 在逗号后(`,`)
-* 单引号前后(`'`),除非单引号后面是括号、逗号或分号
-
-```sql
-SELECT a.title, a.release_date, a.recording_date
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-#### Line spacing 换行
-
-总是换行的情况:
-
-* 在`AND`或`OR`前。
-* 在分号后(分隔语句以提高可读性)。
-* 在每个关键词定以后。
-* 将多个列组成一个逻辑组时的逗号后。
-* 将代码分隔成相关联的多个部分,帮助提高大段代码的可读性。
-
-让所有的关键字右对齐,让所有的值左对齐,在查询语句中间留出一个空隙。这样能提高速读代码的速读。
-
-
-```sql
-INSERT INTO albums (title, release_date, recording_date)
-VALUES ('Charcoal Lane', '1990-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000'),
- ('The New Danger', '2008-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000');
-```
-
-```sql
-UPDATE albums
- SET release_date = '1990-01-01 01:01:01.00000'
- WHERE title = 'The New Danger';
-```
-
-```sql
-SELECT a.title,
- a.release_date, a.recording_date, a.production_date -- grouped dates together
- FROM albums AS a
- WHERE a.title = 'Charcoal Lane'
- OR a.title = 'The New Danger';
-```
-
-### Identation 缩进
-
-为确保SQL的可读性,一定要遵守下列规则。
-
-### Joins Join语句
-
-Join语句应该缩进到川流的另一侧并在必要的时候添加一个换行。
-
-
-```sql
-SELECT r.last_name
- FROM riders AS r
- INNER JOIN bikes AS b
- ON r.bike_vin_num = b.vin_num
- AND b.engines > 2
-
- INNER JOIN crew AS c
- ON r.crew_chief_last_name = c.last_name
- AND c.chief = 'Y';
-```
-
-#### Subqueries 子查询
-
-子查询应该在川流的右侧对齐并使用其他查询相同的样式。有时候将右括号单独置于一行并同与它配对的左括号对齐是有意义的——尤其是当存在嵌套子查询的时候。
-
-```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
- 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');
-```
-
-### Preferred formalisms 推荐的形式
-
-* 尽量使用`BETWEEN`而不是多个`AND`语句。
-* 同样地,使用`IN()`而不是多个`OR`语句。
-* 当数据输出数据库时需要处理时,使用`CASE`表达式。`CASE`语句能嵌套形成更复杂的逻辑结构。
-* 尽量避免`UNION`语句和临时表。如果数据库架构能够不靠这些语句运行,那么多数情况下它就不应该依靠这些语句。
-
-
-```sql
-SELECT CASE postcode
- WHEN 'BN1' THEN 'Brighton'
- WHEN 'EH1' THEN 'Edinburgh'
- END AS city
- FROM office_locations
- WHERE country = 'United Kingdom'
- AND opening_time BETWEEN 8 AND 9
- AND postcode IN ('EH1', 'BN1', 'NN1', 'KW1')
-```
-
-## Create syntax 创建语句
-
-声明模式信息时维护可读代码也很重要。所以列定义的顺序和分组一定要有意义。
-
-在`CREATE`定义中,每列要缩进4个空格。
-
-### Choosing data types 选择数据类型
-
-* 尽量不使用供应商相关的数据类型——这些类型可不能能在老系统上使用。
-* 只在真的需要浮点数运算的时候才使用`REAL`和`FLOAT`类型,否则使用`NUMERIC`和`DECIMAL`类型。浮点数舍入误差是个麻烦。
-
-### Specifying default values 指定默认类型
-
-* 默认值一定与列的类型相同——如果一个列的类型是`DECIMAL`那么就不要使用`INTEGER`类型作为默认值。
-* 默认值要紧跟类型声明并在`NOT NULL`声明前。
-
-### Constraints and keys 约束和键
-
-约束和键是构成数据库系统的重要组成部分。它们能很快地变得难以阅读和理解,所以遵从指导方针是很重要的。
-
-#### Choosing keys 选择键
-
-设计时应该谨慎选择构成键的列,因为键既明显影响着性能和数据完整性。
-
-1. 键在某种程度上应该是独一无二的。
-2. 该值在不同表中的类型应该相同并且尽量不会更改。
-3. 该值是否会无法通过某种标准格式(如ISO发布的标准)?如
-4. 尽量让键保持简单,但在适当情况下不要害怕使用复合键。
-
-以上是定义数据库时合乎逻辑的平衡做法。当需求变更时,键也应该根据情况更新。
-
-#### Defining constraints 定义约束
-
-确定键后,就可以用约束和字值段验证来定义它们。
-
-##### General 概述
-
-* 表至少需要一个键来保证其完整性和可用性。
-* 约束应该有名字,除了`UNIQUE`、`PRIMARY KEY`和`FOREIGN KEY`之外。
-
-##### Layout and order 布局和顺序
-
-* 在`CREATE TABLE`语句后先定义主键。
-* 约束的定义应该紧跟它相应的列的定义后。
-* 如果该约束与多个列相关,那么让它尽量离与其相关的列距离越近越好。实在不行就讲它放在表定义的最后。
-* 如果是与整个表相关联表级别的约束,那么就将放在表的定义的最后。
-* 按照字母顺序安排定义,`ON DELETE`排在`ON UPDATE`前。
-* 有道理的话,把所有相关的语句对齐。比如,把所有`NOT NULL`定义对齐到同一列。虽然这样的做法有些慢,但是能提高可读性。
-
-##### Validation 校验
-
-* 用`LIKE`和`SIMILAR TO`约束来保证格式已知字符串的数据完整性。
-* 当数字的值的范围可以确定时,用`CHECK()`来防止错误的值进入数据库或被错误地转换。大部分情况下至少要确认值要大于零。
-* `CHECK()`约束应该在单独的语句中以便debug。
-
-##### Example
-
-```sql
-CREATE TABLE staff (
- PRIMARY KEY (staff_num),
- staff_num INT(5) NOT NULL,
- first_name VARCHAR(100) NOT NULL,
- pens_in_drawer INT(2) NOT NULL,
- CONSTRAINT pens_in_drawer_range
- CHECK(pens_in_drawer >= 1 AND pens_in_drawer < 100)
-);
-```
-
-### Design to avoid
-
-* 面向对象设计思想并不适用于关系型数据库——避免这个陷阱。
-* 将值存入一列并将单位存在另一列。列的定义应该让自己的单位不言自明以避免在应用内进行合并。使用`CHECK()`来保证数据库中的数据是合法的。
-* [EAV (Entity Attribute Value)][eav]表——用特殊的产品来处理无模式数据。
-* 因为某些原因(如为了归档、为了划分跨国公司的区域)将能合并在一起的表分开。这样的设计导致以后必须使用`UNION`操作而不能直接查询一个表。
-
-
-## 附录
-
-### 保留字参考
-
-下表包含了ANSI SQL (92, 99 和 2003)、MySQL 3到5.x、PostgreSQL 8.1、MS SQL Server 2000、MS ODBC和Oracle 10.2中的关键字。
-
-```sql
-A
-ABORT
-ABS
-ABSOLUTE
-ACCESS
-ACTION
-ADA
-ADD
-ADMIN
-AFTER
-AGGREGATE
-ALIAS
-ALL
-ALLOCATE
-ALSO
-ALTER
-ALWAYS
-ANALYSE
-ANALYZE
-AND
-ANY
-ARE
-ARRAY
-AS
-ASC
-ASENSITIVE
-ASSERTION
-ASSIGNMENT
-ASYMMETRIC
-AT
-ATOMIC
-ATTRIBUTE
-ATTRIBUTES
-AUDIT
-AUTHORIZATION
-AUTO_INCREMENT
-AVG
-AVG_ROW_LENGTH
-BACKUP
-BACKWARD
-BEFORE
-BEGIN
-BERNOULLI
-BETWEEN
-BIGINT
-BINARY
-BIT
-BIT_LENGTH
-BITVAR
-BLOB
-BOOL
-BOOLEAN
-BOTH
-BREADTH
-BREAK
-BROWSE
-BULK
-BY
-C
-CACHE
-CALL
-CALLED
-CARDINALITY
-CASCADE
-CASCADED
-CASE
-CAST
-CATALOG
-CATALOG_NAME
-CEIL
-CEILING
-CHAIN
-CHANGE
-CHAR
-CHAR_LENGTH
-CHARACTER
-CHARACTER_LENGTH
-CHARACTER_SET_CATALOG
-CHARACTER_SET_NAME
-CHARACTER_SET_SCHEMA
-CHARACTERISTICS
-CHARACTERS
-CHECK
-CHECKED
-CHECKPOINT
-CHECKSUM
-CLASS
-CLASS_ORIGIN
-CLOB
-CLOSE
-CLUSTER
-CLUSTERED
-COALESCE
-COBOL
-COLLATE
-COLLATION
-COLLATION_CATALOG
-COLLATION_NAME
-COLLATION_SCHEMA
-COLLECT
-COLUMN
-COLUMN_NAME
-COLUMNS
-COMMAND_FUNCTION
-COMMAND_FUNCTION_CODE
-COMMENT
-COMMIT
-COMMITTED
-COMPLETION
-COMPRESS
-COMPUTE
-CONDITION
-CONDITION_NUMBER
-CONNECT
-CONNECTION
-CONNECTION_NAME
-CONSTRAINT
-CONSTRAINT_CATALOG
-CONSTRAINT_NAME
-CONSTRAINT_SCHEMA
-CONSTRAINTS
-CONSTRUCTOR
-CONTAINS
-CONTAINSTABLE
-CONTINUE
-CONVERSION
-CONVERT
-COPY
-CORR
-CORRESPONDING
-COUNT
-COVAR_POP
-COVAR_SAMP
-CREATE
-CREATEDB
-CREATEROLE
-CREATEUSER
-CROSS
-CSV
-CUBE
-CUME_DIST
-CURRENT
-CURRENT_DATE
-CURRENT_DEFAULT_TRANSFORM_GROUP
-CURRENT_PATH
-CURRENT_ROLE
-CURRENT_TIME
-CURRENT_TIMESTAMP
-CURRENT_TRANSFORM_GROUP_FOR_TYPE
-CURRENT_USER
-CURSOR
-CURSOR_NAME
-CYCLE
-DATA
-DATABASE
-DATABASES
-DATE
-DATETIME
-DATETIME_INTERVAL_CODE
-DATETIME_INTERVAL_PRECISION
-DAY
-DAY_HOUR
-DAY_MICROSECOND
-DAY_MINUTE
-DAY_SECOND
-DAYOFMONTH
-DAYOFWEEK
-DAYOFYEAR
-DBCC
-DEALLOCATE
-DEC
-DECIMAL
-DECLARE
-DEFAULT
-DEFAULTS
-DEFERRABLE
-DEFERRED
-DEFINED
-DEFINER
-DEGREE
-DELAY_KEY_WRITE
-DELAYED
-DELETE
-DELIMITER
-DELIMITERS
-DENSE_RANK
-DENY
-DEPTH
-DEREF
-DERIVED
-DESC
-DESCRIBE
-DESCRIPTOR
-DESTROY
-DESTRUCTOR
-DETERMINISTIC
-DIAGNOSTICS
-DICTIONARY
-DISABLE
-DISCONNECT
-DISK
-DISPATCH
-DISTINCT
-DISTINCTROW
-DISTRIBUTED
-DIV
-DO
-DOMAIN
-DOUBLE
-DROP
-DUAL
-DUMMY
-DUMP
-DYNAMIC
-DYNAMIC_FUNCTION
-DYNAMIC_FUNCTION_CODE
-EACH
-ELEMENT
-ELSE
-ELSEIF
-ENABLE
-ENCLOSED
-ENCODING
-ENCRYPTED
-END
-END-EXEC
-ENUM
-EQUALS
-ERRLVL
-ESCAPE
-ESCAPED
-EVERY
-EXCEPT
-EXCEPTION
-EXCLUDE
-EXCLUDING
-EXCLUSIVE
-EXEC
-EXECUTE
-EXISTING
-EXISTS
-EXIT
-EXP
-EXPLAIN
-EXTERNAL
-EXTRACT
-FALSE
-FETCH
-FIELDS
-FILE
-FILLFACTOR
-FILTER
-FINAL
-FIRST
-FLOAT
-FLOAT4
-FLOAT8
-FLOOR
-FLUSH
-FOLLOWING
-FOR
-FORCE
-FOREIGN
-FORTRAN
-FORWARD
-FOUND
-FREE
-FREETEXT
-FREETEXTTABLE
-FREEZE
-FROM
-FULL
-FULLTEXT
-FUNCTION
-FUSION
-G
-GENERAL
-GENERATED
-GET
-GLOBAL
-GO
-GOTO
-GRANT
-GRANTED
-GRANTS
-GREATEST
-GROUP
-GROUPING
-HANDLER
-HAVING
-HEADER
-HEAP
-HIERARCHY
-HIGH_PRIORITY
-HOLD
-HOLDLOCK
-HOST
-HOSTS
-HOUR
-HOUR_MICROSECOND
-HOUR_MINUTE
-HOUR_SECOND
-IDENTIFIED
-IDENTITY
-IDENTITY_INSERT
-IDENTITYCOL
-IF
-IGNORE
-ILIKE
-IMMEDIATE
-IMMUTABLE
-IMPLEMENTATION
-IMPLICIT
-IN
-INCLUDE
-INCLUDING
-INCREMENT
-INDEX
-INDICATOR
-INFILE
-INFIX
-INHERIT
-INHERITS
-INITIAL
-INITIALIZE
-INITIALLY
-INNER
-INOUT
-INPUT
-INSENSITIVE
-INSERT
-INSERT_ID
-INSTANCE
-INSTANTIABLE
-INSTEAD
-INT
-INT1
-INT2
-INT3
-INT4
-INT8
-INTEGER
-INTERSECT
-INTERSECTION
-INTERVAL
-INTO
-INVOKER
-IS
-ISAM
-ISNULL
-ISOLATION
-ITERATE
-JOIN
-K
-KEY
-KEY_MEMBER
-KEY_TYPE
-KEYS
-KILL
-LANCOMPILER
-LANGUAGE
-LARGE
-LAST
-LAST_INSERT_ID
-LATERAL
-LEADING
-LEAST
-LEAVE
-LEFT
-LENGTH
-LESS
-LEVEL
-LIKE
-LIMIT
-LINENO
-LINES
-LISTEN
-LN
-LOAD
-LOCAL
-LOCALTIME
-LOCALTIMESTAMP
-LOCATION
-LOCATOR
-LOCK
-LOGIN
-LOGS
-LONG
-LONGBLOB
-LONGTEXT
-LOOP
-LOW_PRIORITY
-LOWER
-M
-MAP
-MATCH
-MATCHED
-MAX
-MAX_ROWS
-MAXEXTENTS
-MAXVALUE
-MEDIUMBLOB
-MEDIUMINT
-MEDIUMTEXT
-MEMBER
-MERGE
-MESSAGE_LENGTH
-MESSAGE_OCTET_LENGTH
-MESSAGE_TEXT
-METHOD
-MIDDLEINT
-MIN
-MIN_ROWS
-MINUS
-MINUTE
-MINUTE_MICROSECOND
-MINUTE_SECOND
-MINVALUE
-MLSLABEL
-MOD
-MODE
-MODIFIES
-MODIFY
-MODULE
-MONTH
-MONTHNAME
-MORE
-MOVE
-MULTISET
-MUMPS
-MYISAM
-NAME
-NAMES
-NATIONAL
-NATURAL
-NCHAR
-NCLOB
-NESTING
-NEW
-NEXT
-NO
-NO_WRITE_TO_BINLOG
-NOAUDIT
-NOCHECK
-NOCOMPRESS
-NOCREATEDB
-NOCREATEROLE
-NOCREATEUSER
-NOINHERIT
-NOLOGIN
-NONCLUSTERED
-NONE
-NORMALIZE
-NORMALIZED
-NOSUPERUSER
-NOT
-NOTHING
-NOTIFY
-NOTNULL
-NOWAIT
-NULL
-NULLABLE
-NULLIF
-NULLS
-NUMBER
-NUMERIC
-OBJECT
-OCTET_LENGTH
-OCTETS
-OF
-OFF
-OFFLINE
-OFFSET
-OFFSETS
-OIDS
-OLD
-ON
-ONLINE
-ONLY
-OPEN
-OPENDATASOURCE
-OPENQUERY
-OPENROWSET
-OPENXML
-OPERATION
-OPERATOR
-OPTIMIZE
-OPTION
-OPTIONALLY
-OPTIONS
-OR
-ORDER
-ORDERING
-ORDINALITY
-OTHERS
-OUT
-OUTER
-OUTFILE
-OUTPUT
-OVER
-OVERLAPS
-OVERLAY
-OVERRIDING
-OWNER
-PACK_KEYS
-PAD
-PARAMETER
-PARAMETER_MODE
-PARAMETER_NAME
-PARAMETER_ORDINAL_POSITION
-PARAMETER_SPECIFIC_CATALOG
-PARAMETER_SPECIFIC_NAME
-PARAMETER_SPECIFIC_SCHEMA
-PARAMETERS
-PARTIAL
-PARTITION
-PASCAL
-PASSWORD
-PATH
-PCTFREE
-PERCENT
-PERCENT_RANK
-PERCENTILE_CONT
-PERCENTILE_DISC
-PLACING
-PLAN
-PLI
-POSITION
-POSTFIX
-POWER
-PRECEDING
-PRECISION
-PREFIX
-PREORDER
-PREPARE
-PREPARED
-PRESERVE
-PRIMARY
-PRINT
-PRIOR
-PRIVILEGES
-PROC
-PROCEDURAL
-PROCEDURE
-PROCESS
-PROCESSLIST
-PUBLIC
-PURGE
-QUOTE
-RAID0
-RAISERROR
-RANGE
-RANK
-RAW
-READ
-READS
-READTEXT
-REAL
-RECHECK
-RECONFIGURE
-RECURSIVE
-REF
-REFERENCES
-REFERENCING
-REGEXP
-REGR_AVGX
-REGR_AVGY
-REGR_COUNT
-REGR_INTERCEPT
-REGR_R2
-REGR_SLOPE
-REGR_SXX
-REGR_SXY
-REGR_SYY
-REINDEX
-RELATIVE
-RELEASE
-RELOAD
-RENAME
-REPEAT
-REPEATABLE
-REPLACE
-REPLICATION
-REQUIRE
-RESET
-RESIGNAL
-RESOURCE
-RESTART
-RESTORE
-RESTRICT
-RESULT
-RETURN
-RETURNED_CARDINALITY
-RETURNED_LENGTH
-RETURNED_OCTET_LENGTH
-RETURNED_SQLSTATE
-RETURNS
-REVOKE
-RIGHT
-RLIKE
-ROLE
-ROLLBACK
-ROLLUP
-ROUTINE
-ROUTINE_CATALOG
-ROUTINE_NAME
-ROUTINE_SCHEMA
-ROW
-ROW_COUNT
-ROW_NUMBER
-ROWCOUNT
-ROWGUIDCOL
-ROWID
-ROWNUM
-ROWS
-RULE
-SAVE
-SAVEPOINT
-SCALE
-SCHEMA
-SCHEMA_NAME
-SCHEMAS
-SCOPE
-SCOPE_CATALOG
-SCOPE_NAME
-SCOPE_SCHEMA
-SCROLL
-SEARCH
-SECOND
-SECOND_MICROSECOND
-SECTION
-SECURITY
-SELECT
-SELF
-SENSITIVE
-SEPARATOR
-SEQUENCE
-SERIALIZABLE
-SERVER_NAME
-SESSION
-SESSION_USER
-SET
-SETOF
-SETS
-SETUSER
-SHARE
-SHOW
-SHUTDOWN
-SIGNAL
-SIMILAR
-SIMPLE
-SIZE
-SMALLINT
-SOME
-SONAME
-SOURCE
-SPACE
-SPATIAL
-SPECIFIC
-SPECIFIC_NAME
-SPECIFICTYPE
-SQL
-SQL_BIG_RESULT
-SQL_BIG_SELECTS
-SQL_BIG_TABLES
-SQL_CALC_FOUND_ROWS
-SQL_LOG_OFF
-SQL_LOG_UPDATE
-SQL_LOW_PRIORITY_UPDATES
-SQL_SELECT_LIMIT
-SQL_SMALL_RESULT
-SQL_WARNINGS
-SQLCA
-SQLCODE
-SQLERROR
-SQLEXCEPTION
-SQLSTATE
-SQLWARNING
-SQRT
-SSL
-STABLE
-START
-STARTING
-STATE
-STATEMENT
-STATIC
-STATISTICS
-STATUS
-STDDEV_POP
-STDDEV_SAMP
-STDIN
-STDOUT
-STORAGE
-STRAIGHT_JOIN
-STRICT
-STRING
-STRUCTURE
-STYLE
-SUBCLASS_ORIGIN
-SUBLIST
-SUBMULTISET
-SUBSTRING
-SUCCESSFUL
-SUM
-SUPERUSER
-SYMMETRIC
-SYNONYM
-SYSDATE
-SYSID
-SYSTEM
-SYSTEM_USER
-TABLE
-TABLE_NAME
-TABLES
-TABLESAMPLE
-TABLESPACE
-TEMP
-TEMPLATE
-TEMPORARY
-TERMINATE
-TERMINATED
-TEXT
-TEXTSIZE
-THAN
-THEN
-TIES
-TIME
-TIMESTAMP
-TIMEZONE_HOUR
-TIMEZONE_MINUTE
-TINYBLOB
-TINYINT
-TINYTEXT
-TO
-TOAST
-TOP
-TOP_LEVEL_COUNT
-TRAILING
-TRAN
-TRANSACTION
-TRANSACTION_ACTIVE
-TRANSACTIONS_COMMITTED
-TRANSACTIONS_ROLLED_BACK
-TRANSFORM
-TRANSFORMS
-TRANSLATE
-TRANSLATION
-TREAT
-TRIGGER
-TRIGGER_CATALOG
-TRIGGER_NAME
-TRIGGER_SCHEMA
-TRIM
-TRUE
-TRUNCATE
-TRUSTED
-TSEQUAL
-TYPE
-UESCAPE
-UID
-UNBOUNDED
-UNCOMMITTED
-UNDER
-UNDO
-UNENCRYPTED
-UNION
-UNIQUE
-UNKNOWN
-UNLISTEN
-UNLOCK
-UNNAMED
-UNNEST
-UNSIGNED
-UNTIL
-UPDATE
-UPDATETEXT
-UPPER
-USAGE
-USE
-USER
-USER_DEFINED_TYPE_CATALOG
-USER_DEFINED_TYPE_CODE
-USER_DEFINED_TYPE_NAME
-USER_DEFINED_TYPE_SCHEMA
-USING
-UTC_DATE
-UTC_TIME
-UTC_TIMESTAMP
-VACUUM
-VALID
-VALIDATE
-VALIDATOR
-VALUE
-VALUES
-VAR_POP
-VAR_SAMP
-VARBINARY
-VARCHAR
-VARCHAR2
-VARCHARACTER
-VARIABLE
-VARIABLES
-VARYING
-VERBOSE
-VIEW
-VOLATILE
-WAITFOR
-WHEN
-WHENEVER
-WHERE
-WHILE
-WIDTH_BUCKET
-WINDOW
-WITH
-WITHIN
-WITHOUT
-WORK
-WRITE
-WRITETEXT
-X509
-XOR
-YEAR
-YEAR_MONTH
-ZEROFILL
-ZONE
-```
-
-[simon]: https://www.simonholywell.com/?utm_source=sqlstyle.guide&utm_medium=link&utm_campaign=md-document
- "SimonHolywell.com"
-[issue]: https://github.com/treffynnon/sqlstyle.guide/issues
- "SQL style guide issues on GitHub"
-[fork]: https://github.com/treffynnon/sqlstyle.guide/fork
- "Fork SQL style guide on GitHub"
-[pull]: https://github.com/treffynnon/sqlstyle.guide/pulls/
- "SQL style guide pull requests on GitHub"
-[celko]: https://www.amazon.com/gp/product/0120887975/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=treffynnon-20&linkId=9c88eac8cd420e979675c815771313d5
- "Joe Celko's SQL Programming Style (The Morgan Kaufmann Series in Data Management Systems)"
-[dl-md]: https://raw.githubusercontent.com/treffynnon/sqlstyle.guide/gh-pages/_includes/sqlstyle.guide.zh.md
- "Download the guide in Markdown format"
-[iso-8601]: https://en.wikipedia.org/wiki/ISO_8601
- "Wikipedia: ISO 8601"
-[rivers]: http://practicaltypography.com/one-space-between-sentences.html
- "Practical Typography: one space between sentences"
-[reserved-keywords]: #reserved-keyword-reference
- "Reserved keyword reference"
-[eav]: https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
- "Wikipedia: Entity–attribute–value model"
-[sqlstyleguide]: http://www.sqlstyle.guide
- "SQL style guide by Simon Holywell"
-[licence-zh]: https://creativecommons.org/licenses/by-sa/4.0/deed.zh
- "署名-相同方式共享 4.0 国际"
diff --git a/_includes/static/anchor.min.js b/_includes/static/anchor.min.js
deleted file mode 100644
index 02d60af..0000000
--- a/_includes/static/anchor.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * AnchorJS - v1.2.1 - 2015-07-02
- * https://github.com/bryanbraun/anchorjs
- * Copyright (c) 2015 Bryan Braun; Licensed MIT
- */
-function AnchorJS(A){"use strict";this.options=A||{},this._applyRemainingDefaultOptions=function(A){this.options.icon=this.options.hasOwnProperty("icon")?A.icon:"",this.options.visible=this.options.hasOwnProperty("visible")?A.visible:"hover",this.options.placement=this.options.hasOwnProperty("placement")?A.placement:"right",this.options.class=this.options.hasOwnProperty("class")?A.class:""},this._applyRemainingDefaultOptions(A),this.add=function(A){var e,t,o,n,i,s,a,l,r,h,c,g;if(this._applyRemainingDefaultOptions(this.options),A){if("string"!=typeof A)throw new Error("The selector provided to AnchorJS was invalid.")}else A="h1, h2, h3, h4, h5, h6";if(e=document.querySelectorAll(A),0===e.length)return!1;for(this._addBaselineStyles(),t=document.querySelectorAll("[id]"),o=[].map.call(t,function(A){return A.id}),i=0;i .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",n=' @font-face { font-family: "anchorjs-icons"; font-style: normal; font-weight: normal; src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBTUAAAC8AAAAYGNtYXAWi9QdAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zgq29TcAAAF4AAABNGhlYWQEZM3pAAACrAAAADZoaGVhBhUDxgAAAuQAAAAkaG10eASAADEAAAMIAAAAFGxvY2EAKACuAAADHAAAAAxtYXhwAAgAVwAAAygAAAAgbmFtZQ5yJ3cAAANIAAAB2nBvc3QAAwAAAAAFJAAAACAAAwJAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpywPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6cv//f//AAAAAAAg6cv//f//AAH/4xY5AAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACADEARAJTAsAAKwBUAAABIiYnJjQ/AT4BMzIWFxYUDwEGIicmND8BNjQnLgEjIgYPAQYUFxYUBw4BIwciJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFA8BDgEjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAEAAAABAACiToc1Xw889QALBAAAAAAA0XnFFgAAAADRecUWAAAAAAJTAsAAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAlMAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAACAAAAAoAAMQAAAAAACgAUAB4AmgABAAAABQBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIABwCfAAEAAAAAAAMADgBLAAEAAAAAAAQADgC0AAEAAAAAAAUACwAqAAEAAAAAAAYADgB1AAEAAAAAAAoAGgDeAAMAAQQJAAEAHAAOAAMAAQQJAAIADgCmAAMAAQQJAAMAHABZAAMAAQQJAAQAHADCAAMAAQQJAAUAFgA1AAMAAQQJAAYAHACDAAMAAQQJAAoANAD4YW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype"); }',i=" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }";e.className="anchorjs",e.appendChild(document.createTextNode("")),A=document.head.querySelector('[rel="stylesheet"], style'),void 0===A?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(t,e.sheet.cssRules.length),e.sheet.insertRule(o,e.sheet.cssRules.length),e.sheet.insertRule(i,e.sheet.cssRules.length),e.sheet.insertRule(n,e.sheet.cssRules.length)}}}var anchors=new AnchorJS;
diff --git a/_includes/static/language.svg b/_includes/static/language.svg
deleted file mode 100644
index 22c7b16..0000000
--- a/_includes/static/language.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/_includes/static/manni.css b/_includes/static/manni.css
deleted file mode 100644
index 4c3fc33..0000000
--- a/_includes/static/manni.css
+++ /dev/null
@@ -1 +0,0 @@
-.highlight .hll{background-color:#ffc}.highlight .c{color:#09f;font-style:italic}.highlight .err{color:#a00;background-color:#faa}.highlight .k{color:#069;font-weight:700}.highlight .o{color:#555}.highlight .cm{color:#09f;font-style:italic}.highlight .cp{color:#099}.highlight .c1,.highlight .cs{color:#09f;font-style:italic}.highlight .cs{font-weight:700}.highlight .gd{background-color:#fcc;border:1px solid #c00}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:#030;font-weight:700}.highlight .gi{background-color:#cfc;border:1px solid #0c0}.highlight .go{color:#aaa}.highlight .gp{color:#009}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:#030}.highlight .gt{color:#9c6}.highlight .kc,.highlight .kd,.highlight .kn{color:#069;font-weight:700}.highlight .kp{color:#069}.highlight .kr,.highlight .kt{color:#069;font-weight:700}.highlight .kt{color:#078}.highlight .m{color:#f60}.highlight .s{color:#c30}.highlight .na{color:#309}.highlight .nb{color:#366}.highlight .nc{color:#0a8;font-weight:700}.highlight .no{color:#360}.highlight .nd{color:#99f}.highlight .ne,.highlight .ni{color:#999;font-weight:700}.highlight .ne{color:#c00}.highlight .nf{color:#c0f}.highlight .nl{color:#99f}.highlight .nn,.highlight .nt{color:#0cf;font-weight:700}.highlight .nt{color:#309}.highlight .nv{color:#033}.highlight .ow{color:#000;font-weight:700}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#f60}.highlight .sb,.highlight .sc{color:#c30}.highlight .sd{color:#c30;font-style:italic}.highlight .s2{color:#c30}.highlight .se{color:#c30;font-weight:700}.highlight .sh{color:#c30}.highlight .si{color:#a00}.highlight .sx{color:#c30}.highlight .sr{color:#3aa}.highlight .s1{color:#c30}.highlight .ss{color:#fc3}.highlight .bp{color:#366}.highlight .vc,.highlight .vg,.highlight .vi{color:#033}.highlight .il{color:#f60}
\ No newline at end of file
diff --git a/_layouts/default.html b/_layouts/default.html
deleted file mode 100644
index ea1a103..0000000
--- a/_layouts/default.html
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
-
-
- {% if page.lang_title %}{{ page.lang_title }} · {% endif %}{{ site.name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {% include layout_partials/languages.html rel_alternate=true %}
-
-
-
-
-
-
-
-
-
-
- {% include layout_partials/head.html %}
-
- {{ content }}
-
- {% include layout_partials/foot.html %}
-
-
-
-
-
diff --git a/_layouts/nil.html b/_layouts/nil.html
deleted file mode 100644
index e02a27c..0000000
--- a/_layouts/nil.html
+++ /dev/null
@@ -1 +0,0 @@
-{{ content }}
\ No newline at end of file
diff --git a/de/index.md b/de/index.md
deleted file mode 100644
index b47ae6f..0000000
--- a/de/index.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: default
-lang: de
-lang_title: SQL-Styleguide
-contributors:
- - user: AStasyK
- type: translator
----
-
-* TOC
-{:toc}
-
-{% include sqlstyle.guide.de.md %}
diff --git a/favicon.ico b/favicon.ico
deleted file mode 100755
index 2964ca6..0000000
Binary files a/favicon.ico and /dev/null differ
diff --git a/index.md b/index.md
deleted file mode 100644
index db1aaf6..0000000
--- a/index.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-layout: default
-lang: en
----
-
-* TOC
-{:toc}
-
-{% include sqlstyle.guide.md %}
\ No newline at end of file
diff --git a/ja/index.md b/ja/index.md
deleted file mode 100644
index 139a298..0000000
--- a/ja/index.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
-redirect_from: "/jp"
-lang: ja
-lang_title: SQLスタイルガイド
-contributors:
- - user: nkurigit
- type: translator
----
-
-* TOC
-{:toc}
-
-{% include sqlstyle.guide.ja.md %}
\ No newline at end of file
diff --git a/pt-br/index.md b/pt-br/index.md
deleted file mode 100644
index 11c5141..0000000
--- a/pt-br/index.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: default
-lang: pt-BR
-lang_title: Guia de Estilo SQL
-contributors:
- - user: pmarcus93
- type: translator
----
-
-* TOC
-{:toc}
-
-{% include sqlstyle.guide.pt-BR.md %}
diff --git a/ru/index.md b/ru/index.md
deleted file mode 100644
index e3adf40..0000000
--- a/ru/index.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: default
-lang: ru
-lang_title: Руководство по стилю SQL
-contributors:
- - user: denpatin
- type: translator
----
-
-* TOC
-{:toc}
-
-{% include sqlstyle.guide.ru.md %}
diff --git a/static/favicon-16x16.png b/static/favicon-16x16.png
deleted file mode 100755
index 2c122af..0000000
Binary files a/static/favicon-16x16.png and /dev/null differ
diff --git a/static/favicon-32x32.png b/static/favicon-32x32.png
deleted file mode 100755
index ef8a856..0000000
Binary files a/static/favicon-32x32.png and /dev/null differ
diff --git a/static/language.svg b/static/language.svg
deleted file mode 100644
index 22d58da..0000000
--- a/static/language.svg
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
diff --git a/static/scripts.js b/static/scripts.js
deleted file mode 100644
index 1221924..0000000
--- a/static/scripts.js
+++ /dev/null
@@ -1,84 +0,0 @@
----
-layout: nil
----
-
-{% include static/anchor.min.js %}
-anchors.add('h2,h3,h4,h5,h6');
-
-document.addEventListener('DOMContentLoaded', () => {
- /*
- * translation jump menu
- */
- document.getElementById('language-drop').addEventListener('change', e => {
- var selected = e.target.selectedOptions[0].value + '/';
- if (selected === 'en/') selected = '';
- window.location.href = `{{ site.url }}/${selected.toLowerCase()}`;
- });
-
- /*
- * ScrollTo code
- */
- document.querySelectorAll('a[href^="#"]')
- .forEach(x => x.addEventListener('click', e => {
- var targetHash = e.target.hash.replace(/:/g,'\\$&'),
- targetDecoded = decodeURI(targetHash),
- targetId = targetDecoded.replace('#', ''),
- target = document.getElementById(targetId || 'translation-bar');
- if (target) {
- e.preventDefault();
- target.scrollIntoView({behavior: 'smooth', block: 'start'});
- }
- }));
-});
-
-// http://exisweb.net/link-tracking-universal-analytics
-(function trackOutbounds() {
- var hitCallbackHandler = function(url,win) {
- if (win) {
- window.open(url, win);
- } else {
- window.location.href = url;
- }
- };
-
- var addEvent = function(el, eventName, handler) {
-
- if (el.addEventListener) {
- el.addEventListener(eventName, handler);
- } else {
- el.attachEvent('on' + eventName, function(){
- handler.call(el);
- });
- }
- };
-
- if (document.getElementsByTagName) {
- var el = document.getElementsByTagName('a');
- var getDomain = document.domain.split('.').reverse()[1] + '.' + document.domain.split('.').reverse()[0];
-
- // Look thru each a element
- for (var i=0; i < el.length;i++) {
-
- // Extract it's href attribute
- var href = (typeof(el[i].getAttribute('href')) == 'string' ) ? el[i].getAttribute('href') : '';
-
- // Query the href for the top level domain (xxxxx.com)
- var myDomain = href.match(getDomain);
-
- // If link is outbound and is not to this domain
- if ((href.match(/^(https?:|\/\/)/i) && !myDomain) || href.match(/^mailto\:/i)) {
-
- // Add an event to click
- addEvent(el[i],'click', function(e) {
- var url = this.getAttribute('href'), win = (typeof(this.getAttribute('target')) == 'string') ? this.getAttribute('target') : '';
- // Log even to Analytics, once done, go to the link
- ga('send', 'event', 'outbound', 'click', url,
- {'hitCallback': hitCallbackHandler(url,win)},
- {'nonInteraction': 1}
- );
- e.preventDefault();
- });
- }
- }
- }
-})();
\ No newline at end of file
diff --git a/static/style.css b/static/style.css
deleted file mode 100644
index 1e02c4b..0000000
--- a/static/style.css
+++ /dev/null
@@ -1,239 +0,0 @@
----
-layout: nil
----
-
-{% assign primary_colour = '#DE1B1B' %}
-
-/*
-
-Begin styles from codeguide.co by @mdo
-
-*/
-
-html {
- font-size: 16px;
-}
-@media (min-width: 48em) {
- html {
- font-size: 20px;
- }
-}
-
-body {
- margin: 0;
- font: 1rem/1.5 "PT Sans", sans-serif;
- color: #333;
-}
-
-/*
-
-End styles from codeguide.co by @mdo
-
-*/
-
-/*
- * Page navigation
- */
-
-#page-nav {
- bottom: 0.5em;
- right: 0.5em;
- position: fixed;
- text-align: center;
- font-weight: bold;
-}
-
-/*
- * Typography
- */
-h1 {
- font-family: 'Roboto Slab', serif;
- font-weight: 400;
-}
-
-h2 {
- font-family: 'Roboto Slab', serif;
- font-weight: 400;
- border-bottom: 0.25em solid #e2e2e2;
- padding-bottom: 0.3em;
-}
-
-h3:before {
- content: '➤';
- width: 1.5em;
- display: inline-block;
- margin-left: -1.5em;
- color: {{ primary_colour }};
- font-weight: normal;
-}
-
-a {
- color: #333;
- border-bottom: 1px solid {{ primary_colour }};
- text-decoration: none;
- -o-transition:.2s;
- -ms-transition:.2s;
- -moz-transition:.2s;
- -webkit-transition:.2s;
- transition:.3s;
-}
-
-a:hover {
- color: {{ primary_colour }};
- border-color: #333;
-}
-
-#translation-bar {
- background: linear-gradient(top, #444, #111);
- background: -ms-linear-gradient(top, #444, #111);
- background: -webkit-gradient(linear, left top, left bottom, from(#444), to(#111));
- background: -moz-linear-gradient(top, #444, #111);
- text-align: right;
- color: #999;
-}
-
-#translation-bar .wrap {
- padding: .5% 10%;
-}
-
-#translation-bar nav {
- font-size: .7em;
-}
-
-#translation-bar a {
- color: inherit;
-}
-
-#translation-bar .language-ico { display: inline }
-#translation-bar .language-ico svg {
- width: 25px;
- margin-bottom: -10px;
- fill: {{ primary_colour }};
- margin-left: 10px;
-}
-#translation-bar .language-drop {
- height: 25px;
- color: #999;
- background-color: #222;
-}
-
-header.top {
- background: {{ primary_colour }};
- color: #333;
-}
-
-header.top h1 {
- color: #fff;
- margin-bottom: 0;
-}
-
-header.top p.author {
- margin-top: 0;
-}
-
-header.top p.translator {
- font-size: smaller;
-}
-
-header.top a {
- color: #333;
- border-color: #333;
-}
-
-header.top a:hover {
- border: none;
- text-decoration: none;
-}
-
-header.top p.twitter {
- float: right;
- margin-top: -3em;
-}
-
-@media (max-width: 28.75em) {
- header.top p.twitter {
- float: none;
- margin-top: 0;
- }
-}
-
-.wrap {
- padding: 2% 10%;
- max-width: 48em;
- margin: 0 auto;
-}
-
-#content h1 {
- display: none;
-}
-
-ul#markdown-toc {
- -webkit-column-count: 2;
- -moz-column-count: 2;
- column-count: 2;
- -webkit-column-gap: 1em;
- -moz-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 */
-div.highlighter-rouge {
- max-height: 450px;
- overflow-y: auto;
- border: 2px solid #eee;
- margin: 1em 0;
- background-color: #fefefe
-}
-
-div.highlighter-rouge div.highlight {
- padding: .5em .825em;
-}
-div.highlighter-rouge pre.highlight {
- margin: 0;
- display: block;
- line-height: 1.1;
-}
-code {
- font-size: .825em;
- font-family: 'Droid Sans Mono', monospace;
- color: #555;
-}
-
-{% include static/manni.css %}
-
-.anchorjs-link {
- color: {{ primary_colour }};
- border: none;
-}
\ No newline at end of file
diff --git a/zh-tw/index.md b/zh-tw/index.md
deleted file mode 100644
index f54e025..0000000
--- a/zh-tw/index.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: default
-lang: zh-TW
-lang_title: SQL樣式指南
-contributors:
- - user: Leon0824
- type: translator
- - user: nimula
- type: correction
----
-
-* TOC
-{:toc}
-
-{% include sqlstyle.guide.zh-TW.md %}
diff --git a/zh/index.md b/zh/index.md
deleted file mode 100644
index 24c18b0..0000000
--- a/zh/index.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: default
-lang: zh
-lang_title: SQL样式指南
-contributors:
- - user: wontoncoder
- type: translator
- - user: penghou620
- type: correction
----
-
-* TOC
-{:toc}
-
-{% include sqlstyle.guide.zh.md %}