Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
dev:all:examples:sql [12.03.2017 21:30] – [So funktioniert das mit SQL...] Manuela v.d.Decken | dev:all:examples:sql [25.10.2017 11:01] – [SELECT] Manuela v.d.Decken | ||
---|---|---|---|
Zeile 9: | Zeile 9: | ||
Das ist schon < | Das ist schon < | ||
Also am besten erst ein mal die grundlegensten Regeln: | Also am besten erst ein mal die grundlegensten Regeln: | ||
- | * Statements dürfen nicht in der Argumentenklammer einer Funktion/ | + | * Statements |
- | * Statements müssen grundsätzlich im SQL-Strikt-Syntax aufgebaut werden | + | * Statements |
- | * alle SQL Schlüsselwörter müssen in Großbuchstaben geschrieben werden. | + | * alle SQL Schlüsselwörter |
- | * alle Feld- und Tabellennamen müssen in **`**Backticks**`** eingeschlossen werden. | + | * alle Feld- und Tabellennamen |
- | * Statements dürfen nicht mit **”**text**”**, sondern ausschließlich mit **'**text**'** begrenzt werden. Wird innerhalb des Strings ein Apostroph **'** benötigt, so ist dieser mit einem Backslash **\'** zu maskieren. | + | * Statements |
- | SQL-Statements sollten auch optisch so aufgebaut werden, dass sie problemlos und schnell gelesen und erfasst werden können. Die zeilenweise Aufteilung nach Action-Schlüsselwörtern ist an der Stelle sehr sinnvoll. Ist eine Zeile zu lang (Codingstandards) dann mit Einrückung auf mehrere Zeilen verteilen. Bei der Feldauswahl im SELECT-Bereich ist zu beachten, dass der Server komplette Datensätze (SELECT *) in der Regel deutlich schneller liefern kann, als eine lange Auswahlliste von einzelnen Feldern. | + | SQL-Statements |
Um den Aufbau von Statements zu demonstrieren, | Um den Aufbau von Statements zu demonstrieren, | ||
---- | ---- | ||
Zeile 48: | Zeile 48: | ||
</ | </ | ||
Welche Beispiele lassen sich leichter lesen, verstehen und bei Bedarf auch leichter ändern? **1**& | Welche Beispiele lassen sich leichter lesen, verstehen und bei Bedarf auch leichter ändern? **1**& | ||
+ | |||
+ | Mit der WB-2.11.0 kommt noch eine Vereinfachung hinzu, die durch eine Änderung in der Tabellenstruktur erreicht wurde | ||
+ | <code php Beispiel-5.php> | ||
+ | $sql = ' | ||
+ | . 'WHERE `page_id`=' | ||
+ | | ||
+ | . 'ORDER BY `block`, `position`'; | ||
+ | $oResult = $oDb-> | ||
+ | </ | ||
---- | ---- | ||
Zeile 64: | Zeile 73: | ||
Bei **allen** Arten von INSERTs gilt jedoch die SQL-Strikt Regel, dass **allen** Feldern eines Datensatzes Werte zugewiesen werden müssen. Ausgenommen hiervon sind nur die Felder, die in der Tabelle bereits mit einem Default-Wert vordefiniert sind. | Bei **allen** Arten von INSERTs gilt jedoch die SQL-Strikt Regel, dass **allen** Feldern eines Datensatzes Werte zugewiesen werden müssen. Ausgenommen hiervon sind nur die Felder, die in der Tabelle bereits mit einem Default-Wert vordefiniert sind. | ||
Immer wenn Daten in die Datenbank geschrieben werden sollen, sind bestimmte Sicherheitsregeln zu beachten. | Immer wenn Daten in die Datenbank geschrieben werden sollen, sind bestimmte Sicherheitsregeln zu beachten. | ||
- | * Es muss sichergestellt sein, dass nur der richtige Datentyp übergeben wird. | + | * Es muss sichergestellt sein, dass nur der jeweils |
* Es muss sichergestellt sein, dass jeder übergebene Wert zuvor überprüft wurde und gültig ist. | * Es muss sichergestellt sein, dass jeder übergebene Wert zuvor überprüft wurde und gültig ist. | ||
* Es dürfen nicht Werte aus Superglobalen Arrays, speziell aus // | * Es dürfen nicht Werte aus Superglobalen Arrays, speziell aus // | ||
Zeile 79: | Zeile 88: | ||
<code php insert-02.php> | <code php insert-02.php> | ||
$sql = ' | $sql = ' | ||
- | . 'SET `group_id`=' | + | . 'SET `group_id`=' |
| | ||
| | ||
Zeile 87: | Zeile 96: | ||
| | ||
| | ||
- | | + | |
| | ||
</ | </ | ||
Zeile 95: | Zeile 104: | ||
. 'SET `display_name`=\'' | . 'SET `display_name`=\'' | ||
| | ||
- | . 'WHERE `user_id`=' | + | . 'WHERE `user_id`=' |
</ | </ | ||
---- | ---- |