Weitere Übungen zu MySQL (Weitere Übungen zu MySQL), Lektion, Seite 722534
https://www.purl.org/stefan_ram/pub/uebungen_mysql (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
SQL-Kurs

Beispiele und Übungsaufgaben

Zeitrechnen

WARNINGS; SET sql_mode = 'ANSI,TRADITIONAL,PIPES_AS_CONCAT';

SET div_precision_increment = 4;

DROP SCHEMA IF EXISTS S20171127092111;

CREATE SCHEMA S20171127092111;

USE S20171127092111

CREATE TABLE HMS

( H INT, M INT, S INT );

INSERT INTO HMS( H, M, S )VALUES

( 2, 52, 15 ),

( 4, 41, 58 );

SELECT * FROM HMS;

SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( T )))FROM( SELECT CAST( H || ':' || M || ':' || S AS TIME ) AS T FROM HMS )AS T1;

07:34:13

SEC_TO_TIME arbeitet nicht mehr korrekt, wenn die Summe zu groß wird!

Untertypen
.-------------------------.
| PRODUCT |
'-------------------------'
^ ^
| |
.----------. .----------.
| PHYSICAL | | DATA |
'----------' '----------'
Untertypen
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS PHYSICAL;
DROP TABLE IF EXISTS DATA;
DROP TABLE IF EXISTS PRODUCT;
DROP VIEW IF EXISTS PHYSICAL_PRODUCT;
DROP VIEW IF EXISTS ALL_PRODUCT;
DROP VIEW IF EXISTS PHYSICAL_TYPED;
DROP VIEW IF EXISTS DATA_TYPED;
SET foreign_key_checks = 1;

CREATE TABLE PRODUCT
( PRODUCT SERIAL PRIMARY KEY,
PRICE DECIMAL ( 22, 2 ) );

CREATE TABLE PHYSICAL
( PRODUCT BIGINT UNSIGNED NOT NULL UNIQUE PRIMARY KEY,
WEIGHT DECIMAL ( 12, 5 ),
FOREIGN KEY ( PRODUCT ) REFERENCES PRODUCT ( PRODUCT )
ON DELETE CASCADE );

CREATE TABLE DATA
( PRODUCT BIGINT UNSIGNED NOT NULL UNIQUE PRIMARY KEY,
SIZE BIGINT,
FOREIGN KEY ( PRODUCT ) REFERENCES PRODUCT ( PRODUCT )
ON DELETE CASCADE );

CREATE VIEW PHYSICAL_PRODUCT AS
SELECT * FROM PRODUCT NATURAL JOIN PHYSICAL;

INSERT INTO PRODUCT ( PRICE ) VALUES ( 12.00 );

INSERT INTO PHYSICAL ( PRODUCT, WEIGHT )
VALUES ( LAST_INSERT_ID(), 10.00 );

SELECT * FROM PHYSICAL_PRODUCT;

INSERT INTO PRODUCT ( PRICE ) VALUES ( 24.00 );

INSERT INTO DATA ( PRODUCT, SIZE )
VALUES ( LAST_INSERT_ID(), 10.00 );

CREATE TABLE TYPE_P AS SELECT 'P' AS TYPE;
CREATE TABLE TYPE_D AS SELECT 'D' AS TYPE;

CREATE VIEW PHYSICAL_TYPED AS
SELECT PRODUCT, TYPE, WEIGHT FROM PHYSICAL
JOIN TYPE_P;

CREATE VIEW DATA_TYPED AS
SELECT PRODUCT, TYPE, SIZE FROM DATA
JOIN TYPE_D;

CREATE VIEW ALL_PRODUCT AS
SELECT PRODUCT.PRODUCT,
COALESCE( PHYSICAL_TYPED.TYPE, DATA_TYPED.TYPE ) AS TYPE,
PRICE, WEIGHT, SIZE FROM PRODUCT
LEFT JOIN PHYSICAL_TYPED ON PRODUCT.PRODUCT=PHYSICAL_TYPED.PRODUCT
LEFT JOIN DATA_TYPED ON PRODUCT.PRODUCT=DATA_TYPED.PRODUCT;

SELECT * FROM ALL_PRODUCT;

+---------+------+-------+----------+------+
| PRODUCT | TYPE | PRICE | WEIGHT | SIZE |
+---------+------+-------+----------+------+
| 1 | P | 12.00 | 10.00000 | NULL |
| 2 | D | 24.00 | NULL | 10 |
+---------+------+-------+----------+------+

Übungsaufgaben

/   Übungsaufgabe (mittel)

Struktur der Basistabelle:

DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE base
( id INT NOT NULL AUTO_INCREMENT KEY,
Hauptwert INT NULL,
Linkswert INT NULL,
Rechtswert INT NULL );

Es soll der Wert einer neuen Spalte nach folgenden Regeln ermittelt werden: Wenn ein Hauptwert angegeben ist, wird dieser verwendet, wenn Linkswert und Rechtswert angegeben sind, soll deren Mittelwert verwendet werden, sonst ist der Wert der neuen Spalte NULL.

Erstellen Sie die Basistabelle mit der passenden Struktur, füllen Sie diese mit einigen Testzeilen und erstellen Sie einen View mit einer weiteren Spalte wie oben angegeben.

Motivation In einer Newsgroup fragte jemand wie das geht, weil er dies für die Verwaltung von Chemikalien benötigte.

Verständnisfrage Was bedeutet es, daß ein Wert „angegeben“ ist?

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 stefanram722534 stefan_ram:722534 Weitere Übungen zu MySQL Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722534, slrprddef722534, 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/uebungen_mysql