Literale in SQL (Literale in SQL), Lektion, Seite 722399
https://www.purl.org/stefan_ram/pub/literale_sql_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
SQL-Kurs

Literale in SQL  (MySQL )

Vorbereitung

Zum Nachvollziehen der folgenden Beispiele kann das folgende Skript in einen MySQL -Klienten kopiert werden.

Skript (MySQL )

DROP SCHEMA S; CREATE SCHEMA S; USE S;

CREATE TABLE POSTEN ( NAME VARCHAR ( 255 ), ANZAHL VARCHAR ( 255 ), WERT VARCHAR ( 255 ) );
-- "ANZAHL Artikel der Ware NAME mit einem Wert von WERT pro Stueck"

INSERT INTO POSTEN ( NAME, ANZAHL, WERT ) VALUES ( 'Stuhl', '6', '720' );
INSERT INTO POSTEN ( NAME, ANZAHL, WERT ) VALUES ( 'Tisch', '1', '2800' );

CREATE TABLE ONE ( COL VARCHAR ( 255 ));
INSERT INTO ONE ( COL ) VALUES ( 'A' );

SELECT * FROM POSTEN;

SELECT * FROM ONE;

Ganzzahlige Numeralia

Neben Zeichenfolgenliteralen können auch Numeralia  als relativ direkte Angaben von Zahlenwerten verwendet werden.

Ein Numerale  ist im wesentlichen eine Folge von Ziffern. Sein Wert ergibt sich durch die übliche Interpretation von Numeralia (das Numerale »12« hat den Wert Zwölf usw.).

Das Numerale steht als anders als ein Zeichenfolgenliteral nicht  in Apostrophen.

Konsole (MySQL)
SELECT 1;
+---+
| 1 |
+---+
| 1 |
+---+

Auf das Schlüsselwort »SELECT« folgt oben ein Leerzeichen und dann das Numerale »1«.

Da »SELECT« und das Literal jeweils eine lexikalische Einheit sind, darf zwischen ihnen Leeraum stehen.

In diesem Fall muß  sogar Leerraum vorhanden sein, weil das Zeichen »1« sonst als Teil eines Wortes »SELECT1« angesehen werden würde.

SELECT1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT1' at line 1

Numeralia mit Nachkommastellen

Ein Punktnumerale  ist ein Numerale mit Ziffern und einem einzigen Punkt. Sein Wert ergibt sich durch die übliche Interpretation, wobei der Punkt aber als Komma zu lesen ist (das Numerale »12.2« hat den Wert Zwölf-Komma-Zwei „12,2“ usw.).

Das folgende Beispiel zeigt also beispielsweise die Ausgabe des Wertes 1,2 (also zwölf Zehntel).

Konsole (MySQL)
SELECT 1.20;
+------+
| 1.20 |
+------+
| 1.20 |
+------+

Das folgende Beispiel zeigt eine zusätzliche Benennung der Spalte als »WERT«.

Konsole (MySQL)
SELECT 214.97 AS WERT;
+--------+
| WERT |
+--------+
| 214.97 |
+--------+

Ausdrücke

Eine Angabe, die in der Liste hinter »SELECT« erscheinen kann, nennen wir einen Ausdruck.

Ein Primärausdruck ist eine besonders einfache Form eines Ausdrucks. Spaltennamen und Literal sind Primärausdrücke.

Primaerausdruck (Syntaxdiagramm)

Ausdruck
.-----------------.
--->| Primaerausdruck |--->
'-----------------'

Primaerausdruck
.-------------.
---.--->| Spaltenname |--->.--->
| '-------------' ^
| .-------------. |
'--->| Literal |----'
'-------------'

Ein Literal ist ein Numerale  oder ein Zeichenfolgenliteral.

Literal (Syntaxdiagramm)
Literal
.----------------------.
---.--->| Numerale |--->.--->
| '----------------------' ^
| .----------------------. |
'--->| Zeichenfolgenliteral |----'
'----------------------'

Ein Numerale  ist ein ganzzahliges Numerale  oder ein Punktnumerale.

Literal (Syntaxdiagramm)
Numerale
.-----------------------.
---.--->| ganzzahliges Numerale |--->.--->
| '-----------------------' ^
| .-----------------------. |
'--->| Punktnumerale |----'
'-----------------------'

Ermittlung des genauen Typs eines Literals unter MySQL

Der genaue Typ eines Literals kann unter MySQL  mit »DESCRIBE« ermittelt werden, nachdem eine Tabelle mit jenem Literal angelegt wurde, ohne daß für die Spalte der Tabelle ein bestimmter Typ ausdrücklich festgelegt wurde.

Protokoll (MySQL )

WARNINGS; SET sql_mode = 'ANSI,TRADITIONAL';
DROP SCHEMA S; CREATE SCHEMA S; USE S;

CREATE TABLE T AS SELECT 'ABC';

DESCRIBE T;

+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| ABC | varchar(3) | NO | | | |
+-------+------------+------+-----+---------+-------+

Der Typ des Zeichenfolgenliterals »'ABC'« ist also »VARCHAR ( 3 )«. Das heißt, es handelt sich um ein VARCHAR-Literal mit 3 Zeichen. (Als Typ einer Spalte bedeutet »VARCHAR ( 3 )«, daß jene Spalte VARCHAR-Werte mit bis zu  3 Zeichen pro Zeile aufnehmen kann.)

Übungsaufgaben

/   Verwendung eines Punktnumerales

Schreiben Sie eine Abfrage, welche die folgende Ausgabe erzeugt. Dabei soll die Abfrage möglichst kurz sein und keine  FROM-Klausel enthalten (oder höchstens die FROM-Klausel »FROM ONE« für die mit dem eingangs gezeigten Skript erzeugte Tabelle »ONE«).

Ausgabe (MySQL )
+------+
| 2.42 |
+------+
| 2.42 |
+------+

/   Synthetisieren einer Tabelle

Schreiben Sie eine Abfrage, welche die folgende Ausgabe erzeugt. Dabei soll die Abfrage möglichst kurz sein und keine  FROM-Klausel enthalten (oder höchstens die FROM-Klausel »FROM ONE« für die mit dem eingangs gezeigten Skript erzeugte Tabelle »ONE«).

Ausgabe (MySQL )
+------+---+-------+
| A | C | Beta |
+------+---+-------+
| 1.20 | 1 | Alpha |
+------+---+-------+

/   Erweiterung einer Tabelle durch Literale

Schreiben Sie eine Abfrage, welche mit » FROM POSTEN;« endet, und die folgende Ausgabe erzeugt. (Für diese Aufgabe wird angenommen, daß eine Tabelle »POSTEN« mit dem eingangs gezeigtem Skript angelegt wurde.)

Ausgabe (MySQL )
+-------+---------+--------+-------+------+
| NAME | Stueck: | ANZAHL | Euro: | WERT |
+-------+---------+--------+-------+------+
| Stuhl | Stueck: | 6 | Euro: | 720 |
| Tisch | Stueck: | 1 | Euro: | 2800 |
+-------+---------+--------+-------+------+

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722399 stefan_ram:722399 Literale in SQL Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722399, slrprddef722399, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/literale_sql_de