SQL, SELECT (Enostavna oblika z eno tabelo)

SQL, SELECT (Enostavna oblika z eno tabelo)

Avtor: Matija Lokar

Kako do podatkov iz baze

  • Vsebina tabel je uporabniku dostopna s pomočjo poizvedovalnih jezikov.
  • Uveljavil se je standardni jezik

    • SQL
    • Structured Query Language
    • Strukturirani poizvedovalni jezik
  • Enostavno berljiv

    • SELECT tecajnica.simbol,  vp.opis,
      tecajnica.eTecaj  FROM  tecajnica  LEFT
      JOIN vp ON tecajnica.simbol = vp.simbol
      WHERE tecajnica.simbol LIKE 'Z%'  AND
      tecajnica.datum = '2004-02-26'  ORDER BY 1;

DDL, DML, DCL

  • Jezik za rokovanje s podatki (DML - Data Manipulation Language)

    • podmnožica SQL-a
    • izvajanje povpraševanj po podatkih z določenimi lastnostmi kot tudi dodajanje, brisanje ter spreminjanje zapisov v podatkovni bazi.
    • Poizvedovanje: SELECT.
    • Spreminjanje podatkov:

      • DELETE (za brisanje podatkov),
      • INSERT (za vstavljanje podatkov) in
      • UPDATE (za posodabljanje podatkov).
  • Jezik za definiranje podatkov (DDL - Data Definition Language)

    • podmnožica SQL-a
    • kreiranje, brisanje in spreminjanje definicij tabel in pogledov na zapise.
    • Nekateri najpomembnejši ukazi tega dela jezika

      • CREATE TABLE (ustvari tabelo),
      • ALTER TABLE (spremeni tabelo),
      • DROP TABLE (izbriše tabelo),
      • CREATE INDEX (ustvari indeks) in
      • DROP INDEX (izbriše indeks).
  • Jezik za kontrolo dostopa do podatkov (DCL - Data Control Language)

    • GRANT : dovoli
    • REVOKE : prepovej

SELECT

  • Najpogosteje uporabljen ukaz
  • Povpraševanje po podatkih
  • Osnovna struktura

    • SELECT seznam podatkov, ki jih želimo videti
      FROM seznam tabel, kjer bomo podatke našli
      WHERE pogoji, ki določajo, katere podatke želimo videti
    • SELECT * FROM knjige WHERE cena > 100.00
      ORDER BY naslov

SELECT * FROM tabela

  • *

    • Izpiši vse stolpce
  • Tabela

    • Ime tabele, katere stoplce želimo videti
  • Zgledi z http://sqlzoo.net/1.htm
  • SELECT * FROM bbc

SELECT s1, s2 FROM tabela

  • s1, s2

    • Izpiši vsebino stolpcev s1 in s2
  • Izpiši ime in število prebivalcev
  • SELECT name, population FROM bbc
  • SELECT population, name FROM bbc
  • Kaj, če ni stolpca se tem imenom

    • Napaka
  • SELECT name AS "Ime drževe",
    population FROM bbc

    • AS : poimenovanje stolpca v izhodu

SELECT DISTINCT

  • Izpiši le različne stolpce
  • Izpiši vse regije, ki nastopajo v tabeli
  • SELECT DISTINCT region FROM bbc

Poizvedba po določenih podatkih

  • Zanima nas izpis podatkov o vseh evropskih državah
  • SELECT * FROM bbc WHERE region="Europe "
  • Možni relacijski operatorji so:
    =, <>, !=, <, <=, >, >=
    IS NULL, IS NOT NULL
    e BETWEEN a AND b
    e NOT BETWEEN a AND b
    e IN (v1, v2, ...)
    e NOT IN (v1, v2, ...)
    in še kak specifičen za vsak RDBMS
  • Pogoje lahko sestavljamo. Možni logični operatorji so:
    NOT
    AND
    OR
    XOR
    in še kak specifičen za vsako podatkovno bazo

Izrazi

  • Izpiši gostoto prebivalstva vseh evropskih držav
  • SELECT name, population / area FROM bbc
        WHERE region = "Europe
    "
  • Malo šminke
  • SELECT name AS "ime države", population / area
         AS "gostota prebivalstva"
            FROM bbc
                WHERE region = "Europe
    "
  • Zaokroži na dve decimalki in upoštevaj le države z več kot 2M prebivalstva
  • SELECT name AS "ime države",
    round(population / area, 2)
     AS "gostota prebivalstva"
        FROM bbc WHERE region = "Europe"
             AND population > 2000000

Urejenost

  • Dobljene podatke lahko uredimo
  • Na koncu dodamo ORDER BY
  • Izpiši imena države in število prebivalstva urejeno po številu prebivalcev
  • SELECT name, population
         FROM bbc
             ORDER BY population
  • Padajoče
  • SELECT name, population
         FROM bbc
             ORDER BY population DESC
  • Uporabimo lahko izraze
  • Izpiši imena evropskih držav urejeno po gostoti prebivalstva
  • SELECT name FROM bbc
         WHERE region = "Europe"
               ORDER BY population/area
0%
0%