PMG2224 4/Einführung 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; <font color=darkred size=3>'''weitere Hinweise und Materialien im LearningView unter "Script"'''</font> Die unterstützten SQL Befehle können ggf. auch hier nachgeschlagen werden: [http://hsqldb.org/doc/guide/sqlgeneral-chapt.html SQL Befehlssatz]. == Eine weitere kleine Datenbank zum Nacharbeiten == * 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="6586f4e1c980b"> 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="6586f4e1c985d"> 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="6586f4e1c9939"> SELECT * FROM Customer; SELECT * FROM Customer,place WHERE Customer.place=place.code AND place.name='Berne' </run> <code id="6586f4e1c98a5"> 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="6586f4e1c997d"> 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="6586f4e1c98eb"> </code> <check> .---------------------------. | A_Nr | A_Name | A_Preis | |------|----------|---------| | 12 | Oberhemd | 22.23 | '---------------------------' 1 Zeile(n) gefunden. </check>