Entfernen von Schemata in SQL (Entfernen von Schemata in SQL), Lektion, Seite 723615
https://www.purl.org/stefan_ram/pub/drop_schema_sql (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
SQL-Kurs

Persistierung abgeleiteter Tabellen mit SQL  (MySQL )

Vorbereitung

Zum Nachvollziehen der folgenden Beispiele kann das folgende Skript in einen MySQL -Klienten kopiert werden. Der Inhalt dieses Skripts kann aber ansonsten ignoriert werden. Beim Kopieren ist darauf zu achten, nur genau den Text von »DROP« bis zum letzten »;« zu kopieren und dann die Eingabetaste zu drücken.

Skript (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE PAAR ( LINKS VARCHAR ( 255 ), RECHTS VARCHAR ( 255 ));
INSERT INTO PAAR ( LINKS, RECHTS ) VALUES ( 'D', 'D' );
INSERT INTO PAAR ( LINKS, RECHTS ) VALUES ( 'D', 'E' );
INSERT INTO PAAR ( LINKS, RECHTS ) VALUES ( 'E', 'D' );
INSERT INTO PAAR ( LINKS, RECHTS ) VALUES ( 'E', 'E' );
SELECT * FROM PAAR;

Einfügen eines Abfrageergebnisses

Das Ergebnis einer SELECT-Abfrage, also eine abgeleitete Tabelle, kann auch in eine Basistabelle eingefügt werden, indem die SELECT-Abfrage in einer INSERT-Anweisung an Stelle einer VALUES-Klausel verwendet wird.

Konsole (MySQL, T92, C99, C03)
CREATE TABLE ERGEBNIS ( BUCHSTABE VARCHAR ( 255 ));
Konsole (MySQL, E92, C99, C03)
INSERT INTO ERGEBNIS ( BUCHSTABE ) SELECT DISTINCT LINKS FROM PAAR;
Records: 2  Duplicates: 0  Warnings: 0
SELECT * FROM ERGEBNIS;
+-----------+
| BUCHSTABE |
+-----------+
| D |
| E |
+-----------+
Aussprachehinweis
duplicate (n) ˈduːplɪkət

Wir sprechen hier von Persistierung, weil dadurch flüchtige Informationen persistent  (dauerhaft) gemacht werden.

Die Spalten des Ergebnisses der SELECT-Abfrage werden nacheinander den Spalten der Zieltabelle zugeordnet, deren Namen in den runden Klammern angegeben sind.

Es besteht aber das Risiko, daß bei der Verwendung dieses Vorgehensweise Redundanz in die Datenbank eingefügt wird. Deswegen sollten zum Speichern von Abfrage Ansichten (Views) bevorzugt werden. Eine Ansicht ergibt allerdings bei Verwendung stets das Ergebnis einer aktuellen  Abfrage während in einer Basistabelle ein Ergebnis einer früheren  Abfrage gespeichert werden kann.

Diese INSERT-SELECT-Kombination erlaubt es auch, bei Bedarf genaue oder veränderte Kopien von Basistabellen anzulegen. Sie kann beispielsweise verwendet werden, um bei der manuellen Überarbeitung von Tabellen vorübergehende Sicherungskopien anzulegen.

MySQL 

Unter MySQL  kann eine Tabelle auch wie folgt angelegt und gleichzeitig kopiert werden, dies ist aber kein Standard-SQL .

Konsole (MySQL )
CREATE TABLE P AS SELECT * FROM PAAR;

Die Syntax erinnert dabei an das schon behandelte Anlegen einer Ansicht.

Konsole (MySQL )
CREATE VIEW P AS SELECT * FROM ZAHL;

Das »AS« kann dabei auch weggelassen werden.

Konsole (MySQL )
CREATE TABLE P SELECT * FROM PAAR;

Übungsaufgaben

/   Kopieren einer Tabelle *

Skript (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE PAAR ( LINKS VARCHAR ( 255 ), RECHTS VARCHAR ( 255 ));
INSERT INTO PAAR ( LINKS, RECHTS ) VALUES ( 'D', 'D' );
INSERT INTO PAAR ( LINKS, RECHTS ) VALUES ( 'D', 'E' );
INSERT INTO PAAR ( LINKS, RECHTS ) VALUES ( 'E', 'D' );
INSERT INTO PAAR ( LINKS, RECHTS ) VALUES ( 'E', 'E' );
SELECT * FROM PAAR;

Legen Sie eine neue Tabelle »DL« mit den beiden Spalten »RECHTS« und »LINKS« (in dieser Reihenfolge) an und kopieren Sie dann die vorhandene Tabelle »Paar« in die neue Tabelle »DL«. Dabei soll die Reihenfolge der Spalten vertauscht werden, aber jede Spalte der neuen Tabelle »DL« soll dieselben Werte enthalten wie die gleichnamige Spalte der Originaltabelle »PAAR«.

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 stefanram723615 stefan_ram:723615 Entfernen von Schemata in SQL Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723615, slrprddef723615, 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/drop_schema_sql