Die Multiplikation in SQL
- Skript (MySQL )
WARNINGS; SET sql_mode = 'ANSI,TRADITIONAL';
SET div_precision_increment = 4;
DROP SCHEMA S; CREATE SCHEMA S; USE S;CREATE TABLE POSTEN ( NAME VARCHAR( 255 ), ANZAHL INTEGER, WERT INTEGER, PRIMARY KEY( NAME ));
INSERT INTO POSTEN ( NAME, ANZAHL, WERT ) VALUES ( 'Tisch', 1, 2800 );
INSERT INTO POSTEN ( NAME, ANZAHL, WERT ) VALUES ( 'Stuhl', 6, 720 );CREATE TABLE ONE ( COL INTEGER );
INSERT INTO ONE ( COL ) VALUES ( 1 );CREATE TABLE ZEICHEN ( ZEICHEN INTEGER AUTO_INCREMENT, NAME VARCHAR( 32 ), PRIMARY KEY( ZEICHEN ));
INSERT INTO ZEICHEN ( ZEICHEN, NAME ) VALUES ( 1, 'Alpha' );
INSERT INTO ZEICHEN ( ZEICHEN, NAME ) VALUES ( 2, 'Beta' );
INSERT INTO ZEICHEN ( ZEICHEN, NAME ) VALUES ( 3, 'Gamma' );CREATE TABLE PLANET ( PLANET INTEGER, NAME VARCHAR( 32 ));
INSERT INTO PLANET( PLANET, NAME )VALUES( 1, 'Merkur' );
INSERT INTO PLANET( PLANET, NAME )VALUES( 2, 'Venus' );
INSERT INTO PLANET( PLANET, NAME )VALUES( 3, 'Erde' );SELECT * FROM POSTEN;
SELECT * FROM ONE;
SELECT * FROM ZEICHEN;
SELECT * FROM PLANET;
Multiplikation
Multiplikation mit Literalwerten
SELECT 1+2*3;
+-------+
| 1+2*3 |
+-------+
| 7 |
+-------+
In einem hypothetischen Land mit 11 Prozent Mehrwertsteuer:
SELECT 0.11 * 70;
+-----------+
| 0.11 * 70 |
+-----------+
| 7.70 |
+-----------+SELECT 4.9E-324;
+----------+
| 4.9E-324 |
+----------+
| 5e-324 |
+----------+SELECT 4.9E-324/2*2;
+--------------+
| 4.9E-324/2*2 |
+--------------+
| 0 |
+--------------+
Multiplikation mit Spaltenwerten und Literalwerten
In einem hypothetischen Land mit 11 Prozent Mehrwertsteuer:
SELECT NAME, ANZAHL, WERT, 0.11 * WERT, 1.11 * WERT FROM POSTEN;
+-------+--------+------+-------------+-------------+
| NAME | ANZAHL | WERT | 0.11 * WERT | 1.11 * WERT |
+-------+--------+------+-------------+-------------+
| Stuhl | 6 | 720 | 79.20 | 799.20 |
| Tisch | 1 | 2800 | 308.00 | 3108.00 |
+-------+--------+------+-------------+-------------+
»*« – Die Multiplikation in SQL
SELECT NAME, ANZAHL, WERT, ANZAHL * WERT FROM POSTEN;
+-------+--------+------+---------------+
| NAME | ANZAHL | WERT | ANZAHL * WERT |
+-------+--------+------+---------------+
| Stuhl | 6 | 720 | 4320 |
| Tisch | 1 | 2800 | 2800 |
+-------+--------+------+---------------+
Das Zeichen »*« wird „Stern“ (oder „Sternchen“) genannt.
Die Multiplikations ist linksassoziativ.
Die Priorität des Multiplikationsoperators ist genauso groß wie die des Divisionsoperators.
Addition und Multiplikation sind linksassoziativ.
Punktrechnung geht vor Strichrechnung, doch kann mit Klammern anderes festgelegt werden.
Das folgende vereinfachte Syntaxdiagramm bringt die Assoziativität und Priorität der Operatoren nicht richtig zum Ausdruck. Dennoch kann es einen für viele Zwecke schon ausreichenden Überblick über die Syntax von Ausdrücken mit Additions- und Multiplikationsoperatoren geben.
- Syntaxdiagramm
Ausdruck (vereinfacht)
.-------------.
----.------------->| Spaltenname |--------------.--->
| '-------------' |
| .-------------. |
'------------->| Literal |--------------'
| '-------------' |
| .-. .-------------. |
'----->( + )-->| Ausdruck |--------------'
| '-' '-------------' |
| .-. .-------------. |
'----->( - )-->| Ausdruck |--------------'
| '-' '-------------' |
| .-. .-------------. .-. |
'----->( ( )-->| Ausdruck |--->( ) )-----'
| '-' '-------------' '-' |
| .----------. .-. .----------. |
'-->| Ausdruck |--->( * )--->| Ausdruck |---'
| '----------' '-' '----------' |
| .----------. .-. .----------. |
'-->| Ausdruck |--->( / )--->| Ausdruck |---'
| '----------' '-' '----------' |
| .----------. .---. .----------. |
'-->| Ausdruck |-->( DIV )-->| Ausdruck |---'
| '----------' '---' '----------' |
| .----------. .-. .----------. |
'-->| Ausdruck |--->( + )--->| Ausdruck |---'
'----------' '-' '----------'
| .----------. .-. .----------. |
'-->| Ausdruck |--->( - )--->| Ausdruck |---'
'----------' '-' '----------'
Priorität
In der folgenden Liste von Operatoren stehen Operatoren höherer Priorität weiter oben.
- Prioritäten von Operatoren
- »()« (eingeklammerter Ausdruck)
- »-«, »+« (Vorzeichen)
- »*«, »/«, »DIV« („Punktrechnung“)
- »-«, »+« („Strichrechnung“. binäre Operatoren)
Übungsaufgaben ⃗
/ Tabellen erweitern ⃗
Erweitern Sie die Tabelle »POSTEN« um den Gesamtwert, die Mehrwertsteuer und den Bruttobetrag für jeden Posten.
(Das heißt: Schreiben Sie eine Abfrage, welche eine neue abgeleitete Tabelle ergibt, die sechs Spalten hat: Die drei Spalten der ursprünglichen Tabelle und zusätzlich jeweils eine Spalte mit dem Gesamtwert der in der Zeile angegebenen Ware (Anzahl mal Wert), der Mehrwertsteuer zu diesem Gesamtwert und dem Bruttobetrag als Summe aus Gesamtwert und der Mehrwertsteuer. Hier soll keine neue Basistabelle angelegt werden, sondern nur eine abgeleitete Tabelle.)