1 Einf¼hrung in SQL Universeller Zugriff auf Daten in Datenbanksystemen unterschiedlicher Systemhersteller!

  • View
    109

  • Download
    5

Embed Size (px)

Text of 1 Einf¼hrung in SQL Universeller Zugriff auf Daten in Datenbanksystemen unterschiedlicher...

  • Folie 1
  • 1 Einfhrung in SQL Universeller Zugriff auf Daten in Datenbanksystemen unterschiedlicher Systemhersteller!
  • Folie 2
  • Dipl.-Ing. Walter Sabin -- 2006 2 SQL berblick Nichtprozedurale Sprache zum Zugriff auf Daten. Herstellerspezifische prozedurale Erweiterungen Oracle -> PL/SQL Deklarative Beschreibung der gewnschten Daten Genormt aber doch nicht einheitlich z.B.: DB-Verwaltung bei Oracle in SQL integriert Themen: Geschichte SQL - Befehlskategorien Elementare Datentypen und Operatoren Einfache Abfragen
  • Folie 3
  • Dipl.-Ing. Walter Sabin -- 2006 3 Geschichte 1974 SEQUEL (Chamberlin, Boyce) Structured English Query Language basierend auf SQUARE, einer mathematischen Formelsprache Erster Prototyp: System R IBM / San Jose ~1975 (Basis fr DB2 und SQL/DS) Wassergekhlter Computer Erstes Produkt: Oracle 1979 Version 2!! PDP 11, Assembler basiert auf verffentlichten "System R" Spezifikationen Derzeit gltiger ANSI Standard SQL3
  • Folie 4
  • Dipl.-Ing. Walter Sabin -- 2006 9 Elementare Datentypen (2/3) Zahlen number(, ) z.B.: number(6,2) - 1226.45 p: Precission maximal 38 s: Scale Nachkommastellen Rundung wenn Anzahl der Nachkommastellen > s negatives "s" mglich - rundet links vom Dezimalpunkt z.B.: 12345.345 in number(5,-2) ergibt 12300
  • Folie 10
  • Dipl.-Ing. Walter Sabin -- 2006 10 Elementare Datentypen (3/3) Datum und Zeit date belegt 7 Bytes - CC YY MM DD HH MI SS Funktionen to_date, sysdate Datum ohne Uhrzeit -> Mitternacht (00:00:00) Standard format: DD-MON-YY
  • Folie 11
  • Dipl.-Ing. Walter Sabin -- 2006 11 Operatoren und Literale (1/2) Operator: manipuliert Datenelemente und liefert ein Ergebnis unre Operatoren - z.B.: +5 oder 2 binre Operatoren - + - * / Verkettungsoperator verbindet Zeichenketten || - z.B.: 'Oracle' || 'Datenbank' ergibt 'OracleDatenbank'
  • Folie 12
  • Dipl.-Ing. Walter Sabin -- 2006 12 Operatoren und Literale (2/2) Literale reprsentieren einen konstanten Wert Text oder Zeichenketten in einfachen Hochkomma: 'Die Schule ist toll' Ganze Zahlen (Integer): 24 oder 455 Zahlen (Number) 24.45 oder 433.78 oder 2.3E-4
  • Folie 13
  • Dipl.-Ing. Walter Sabin -- 2006 13 Einfache Abfragen SELECT 1/12 Allgemeiner Aufbau der Abfrage SELECT FROM WHERE ORDER BY Liefert als Ergebnis eine Menge von Datenstzen (Dataset oder Resultset) Beispieldatenbank - Anhang
  • Folie 14
  • Dipl.-Ing. Walter Sabin -- 2006 14 Einfache Abfragen SELECT 2/12 SQL> SELECT * FROM jobs; JOBIDJOB_TITLEMIN_SALARYMAX_SALARY AD_PRESPresident2000040000 ------- FI_MGRFinance Manager820016000 FI_ACCOUNTAccountant4200 9000 -------
  • Folie 15
  • Dipl.-Ing. Walter Sabin -- 2006 15 Einfache Abfragen SELECT 3/12 SQL> SELECT job_title, min_salary FROM jobs; JOB_TITLEMIN_SALARY President20000 ------- Finance Manager8200 Accountant4200 -------
  • Folie 16 SELECT job_title AS Title, min_salary AS "Minimum Salary" FROM job">
  • Dipl.-Ing. Walter Sabin -- 2006 16 Einfache Abfragen SELECT 4/12 Alias Namen SQL> SELECT job_title AS Title, min_salary AS "Minimum Salary" FROM jobs; Title Minimum Salary President20000 ------- Finance Manager8200 Accountant4200 -------
  • Folie 17
  • Dipl.-Ing. Walter Sabin -- 2006 17 Einfache Abfragen SELECT 5/12 Eindeutigkeit der Ergebnismenge sicherstellen SQL> SELECT DISTINCT department_id FROM employees; DEPARTMENT_ID 10 20 30 --- 100 110 12 rows selected
  • Folie 18 SELECT SYSDATE, USER FROM dual; SYSDATE USER 20 -NOV-03HR"> SELECT SYSDATE, USER FROM dual; SYSDATE USER 20 -NOV-03HR"> SELECT SYSDATE, USER FROM dual; SYSDATE USER 20 -NOV-03HR" title="Dipl.-Ing. Walter Sabin -- 2006 18 Einfache Abfragen SELECT 6/12 Pseudotabelle "dual" SQL> SELECT SYSDATE, USER FROM dual; SYSDATE USER 20 -NOV-03HR">
  • Dipl.-Ing. Walter Sabin -- 2006 18 Einfache Abfragen SELECT 6/12 Pseudotabelle "dual" SQL> SELECT SYSDATE, USER FROM dual; SYSDATE USER 20 -NOV-03HR
  • Folie 19 (!=, ^=), >= Logische Operatoren: NOT, AND, OR"> SELECT first_name || ' ' || last_name "Name", depa">
  • Dipl.-Ing. Walter Sabin -- 2006 19 Einfache Abfragen SELECT 7/12 Ergebniszeilen einschrnken SQL> SELECT first_name || ' ' || last_name "Name", department_id FROM employees WHERE department_id=90; NameDEPARTMENT_ID Steven King90 Neena Kochhar90 Lex De Haan90 Vergleichsoperatoren = (!=, ^=), >= Logische Operatoren: NOT, AND, OR
  • Folie 20
  • Dipl.-Ing. Walter Sabin -- 2006 20 Einfache Abfragen SELECT 8/12 Sonstige Operatoren IN, NOT IN, BETWEEN, EXISTS SELECT * FROM employees WHERE department_id in (10, 20, 90); SELECT * FROM employees WHERE salary BETWEEN 5000 and 6000; SELECT * FROM employees e WHERE EXISTS (SELECT 1 FROM departments d WHERE d.department_id = e.department_id AND d.department_name = 'Administration');
  • Folie 21
  • Dipl.-Ing. Walter Sabin -- 2006 21 Einfache Abfragen SELECT 9/12 Null Werte IS NULL, IS NOT NULL SELECT last_name FROM employees WHERE department_id IS NULL; LIKE Pattern-Matching _, %, Escape clause _ matched ein einzelnes Zeichen % matched beliebig viele Zeichen Escape Claus erlaubt die Verwendung obiger Zeichen SELECT * FROM jobs WHERE job_id LIKE 'AC\_%' ESCAPE '\'; WHERE salary BETWEEN 5000 and 6000;
  • Folie 22 SELECT first_name || ' ' || last_name "Mitarbeit">
  • Dipl.-Ing. Walter Sabin -- 2006 22 Einfache Abfragen SELECT 10/12 Sortieren der Ergebniszeilen SQL> SELECT first_name || ' ' || last_name "Mitarbeiter Name" FROM employees WHERE department_id=90 ORDER BY last_name; Mitarbeiter Name --------------------- Lex De Haan Steven King Neena Kochar
  • Folie 23
  • Dipl.-Ing. Walter Sabin -- 2006 23 Einfache Abfragen SELECT 11/12 Sortieren der Ergebniszeilen mit DISTINCT SQL> SELECT DISTINCT 'Region ' || region_id FROM hr.countries ORDER BY region_id ; ERROR ORA-01791: not a SELECTed expression SQL> SELECT DISTINCT 'Region ' || region_id FROM hr.countries ORDER BY 'Region ' || region_id ; 'Region ' || region_id ------------------------- Region 1 Region 2 Region 3 Region 4
  • Folie 24
  • Dipl.-Ing. Walter Sabin -- 2006 24 Einfache Abfragen SELECT 12/12 Expressions verwenden z.B.: in SELECT Klausel SELECT ((2*4)/(3+1))*10 FROM dual; CASE Expression - "if.. then.. else" Logik SELECT country_name, CASE region_id WHEN 1 THEN 'Europa' WHEN 2 THEN 'AMERIKA' WHEN 3 THEN 'Asien' ELSE 'Anderes' END "Kontinent" FROM countries WHERE country_name LIKE 'I%'; COUNTRY_NAME Kontinent IsraelAnderes IndiaAsien ItalyEuropa
  • Folie 25
  • Dipl.-Ing. Walter Sabin -- 2006 25 Quiz ?
  • Folie 26
  • Dipl.-Ing. Walter Sabin -- 2006 26 Zusammenfassung Geschichte von SQL. Elementare Datentypen und Operatoren. Einfache Abfragebefehle mit SELECT, FROM, WHERE und ORDER BY Operatoren in der WHERE Klause Pattern-Matching Operatoren
  • Folie 27
  • Dipl.-Ing. Walter Sabin -- 2006 27 Jemand versucht den Wert: 34567.2255 in ein Feld mit dem Datentyp number(7,2) zu speichern. Welcher Wert wird tatschlich gespeichert? A 34567.00 B 34567.23 C 34567.22 D 3456.22
  • Folie 28
  • Dipl.-Ing. Walter Sabin -- 2006 28 Welche Standardanzeigelnge hat ein Datumsfeld? A 8 B 19 C 9 D 6
  • Folie 29
  • Dipl.-Ing. Walter Sabin -- 2006 29 Gegeben ist die folgende Abfrage: SELECT 'Mitarbeiter Name: ' || ename FROM emp where deptno=10; Welche Komponente ist ein Literal? A 10 B ename C emp D ||
  • Folie 30
  • Dipl.-Ing. Walter Sabin -- 2006 30 Welche Klause in einer Abfrage schrnkt die Anzahl der Datenstze ein? A ORDER BY B SELECT C FROM D WHERE
  • Folie 31
  • Dipl.-Ing. Walter Sabin -- 2006 31 Gegeben ist die folgende Abfrage: SELECT empno, ename FROM emp where empno=7782 or empno=7876; Welcher Operator kann die "OR Bedingung" ersetzen? A IN B BETWEEN.. AND.. C LIKE D
  • Dipl.-Ing. Walter Sabin -- 2006 38 FUNKTIONEN Single Row 4/ 16 Zeichenfunktionen (Fs) INITCAP(c1) liefert den ersten Buchstaben jedes Wortes in c1 als Grobuchstaben und alle anderen als Kleinbuchstaben SELECT INITCAP('die drei lauser') FROM dual; => Die Drei Lauser LENGTH(c) Liefert Lnge einer Zeichenkette in Zeichen SELECT LENGTH('Die Spengergasse') FROM DUAL; => 16
  • Folie 39
  • Dipl.-Ing. Walter Sabin -- 2006 39 FUNKTIONEN Single Row 5/16 Zeichenfunktionen (Fs) INSTR(c1, c2[,i [,j]]) Liefert die Zeichenposition fr das j-te Vorkommen von c2 in c1, beginnend mit Position i. Negatives i bedeutet Suche von rechts (sonst von links) SELECT INSTR('Mississippi','i',-2,3) FROM dual; => 2 SUBSTR(c1, i[,j]) liefert einen Teilstring aus c1 beginnend an der Position i von j Zeichen. Ist j Rest des Strings. Ist Zhlen der Position von rechts. SELECT SUBSTR('Die Spenger Gasse',5,7) FROM dual; => Spenger
  • Folie 40
  • Dipl.-Ing. Walter Sabin -- 2006 40 FUNKTIONEN Single Row 6/ 16 Zeichenfunktionen (Fs) LOWER(c1) Kovertiert alle Zeichen auf Kleinbuchstaben UPPER(c1) Konvertiert alle Zeichen auf Grobuchstaben SELECT LOWER(job_id), last_name FROM employees WHERE UPPER(last_name) LIKE 'KIN%'; => ad_pres King
  • Folie 41
  • Dipl.-Ing. Walter Sabin -- 2006 41 FUNKTIONEN Single Row 7/ 16 Zeichenfunktionen (Fs) LPAD(c1,i[,c2]) Erweitert den String c1 auf i Zeichen. Verwendet c2 um den freien Raum links aufzufllen SELECT LPAD(job_id,10,'.') FROM employees =>.

View more