PMG1719/Einführung DB SQL
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language> Die in der Praxis am meisten verwendete relationale Datenbanksprache ist SQL.<br> SQL ist eine deskriptive Sprache, d.h. eine Anfrage hat das Ergebnis ohne Angabe des Algorithmus zu beschreiben. Grundlegend basieren die Anfrageanweisungen auf der '''SELECT-FROM-WHERE - Klausel''' Beispiel: SELECT Feldnamen FROM Tabelle(n) WHERE Bedingung; '''Dabei erfolgt unter SELECT eine <u>Projektion</u> auf die Spalten der Tabelle(n) und unter WHERE eine <u>Selektion (Auswahl)</u> der gewünschten Datensätze bzw. Datenfelder!''' <br><br> ''Für die WHERE-Klausel:''<br> Vergleichsoperatoren =; <>; <; <=; >; >= Prädikate können mit AND, OR und NOT zu komplexeren Bedingungen verknüpft werden.<br> Priorität: NOT vor AND vor OR oder Klammerung!<br> BETWEEN-Prädikat: entspricht einer Verknüpfung >= AND <=<br> Sortierung: ORDER BY <spaltenname> ASC/DESC (auf- bzw. absteigend)<br> Aggregatfunktionen: hinter SELECT stehen Funktionen wie SUM, MAX, COUNT, ..., z.B. SUM(Einwohner)<br> DISTINCT unterdrückt Dopplungen SELECT Feldnamen FROM Tabelle(n) WHERE Bedingung ORDER BY Feldname ASC/DESC; == SQL spielerisch erlernen == Zum Erlernen der Grundlagen bietet sich das Spiel '''SQL-Island''' an. Den Link bitte in einem neuen Fenster öffnen. Die Lösungen (SQL-Syntax) z.B. in einem Textdokument speichern. [http://wwwlgis.informatik.uni-kl.de/extra/game/ SQL_Island] == Eine erste Datenbank == * Diese Einleitung entstammt der Seite von [http://programmingwiki.de/SQL Michael Hielscher]. # Es wird eine Datenbank angelegt. # Die Datenfelder werden gefüllt. # Eine Abfrage gestellt. Eine kleine DB vorbereiten: <code id="5bd05cb697efb"> CREATE TABLE Place (Code INTEGER,Name VARCHAR(255)); CREATE INDEX iCode ON Place (Code); CREATE TABLE Customer (Nr INTEGER,Name VARCHAR(255),Place INTEGER); CREATE INDEX iNr ON Customer (Nr); </code> Ein paar Eingaben: <code id="5bd05cb697f76"> INSERT INTO Place VALUES (4900,'Langenthal'); INSERT INTO Place VALUES (8000,'Zurich'); INSERT INTO Place VALUES (3000,'Berne'); INSERT INTO Place VALUES (1200,'Geneva'); INSERT INTO Place VALUES (6900,'Lugano'); INSERT INTO Customer VALUES (1,'Meier',3000); INSERT INTO Customer VALUES (2,'Mueller',8000); INSERT INTO Customer VALUES (3,'Devaux',1200); INSERT INTO Customer VALUES (4,'Rossi',6900); INSERT INTO Customer VALUES (5,'Rickli',3000); INSERT INTO Customer VALUES (6,'Graf',3000); INSERT INTO Customer VALUES (7,'Mueller',4900); INSERT INTO Customer VALUES (8,'May',1200); INSERT INTO Customer VALUES (9,'Berger',8000); INSERT INTO Customer VALUES (10,'D''Ascoli',6900); INSERT INTO Customer VALUES (11,'Padruz',1200); INSERT INTO Customer VALUES (12,'Hug',4900); </code> Eine Abfrage dazu: <run id="5bd05cb6980ba"> SELECT * FROM Customer; SELECT * FROM Customer,place WHERE Customer.place=place.code AND place.name='Berne' </run> Natürlich kann man auch CODE Boxen verwenden oder versteckten Code für das anlegen einer Datenbank mit Beispielinhalten usw. Elemente, die in einer CODE Box hinterlegt sind, werden IMMER vor jedem RUN mit ausgeführt. Damit eignen Sie sich prima, um Tabellen und Datensätze anzulegen: <code id="5bd05cb697fe3"> Create Table Artikel( A_Nr integer, A_Name varchar(50), A_Preis decimal); Insert Into Artikel Values (12, 'Oberhemd', 22.23); Insert Into Artikel Values (22, 'Mantel', 360.00); Insert Into Artikel Values (11, 'Oberhemd', 44.20); Insert Into Artikel Values (13, 'Hose', 110.50); </code> <run id="5bd05cb698123"> SELECT * FROM Artikel; SELECT * FROM Artikel WHERE A_Preis = (SELECT MAX(A.A_Preis) FROM Artikel As A) </run> Schreibe einen SQL Befehl, der den Artikel mit dem niedrigsten Preis ausgibt: <code id="5bd05cb698044"> </code> <check> .---------------------------. | A_Nr | A_Name | A_Preis | |------|----------|---------| | 12 | Oberhemd | 22.23 | '---------------------------' 1 Zeile(n) gefunden. </check>