SQL osnove

Ranked #4,650 in Computers & Electronics, #84,252 overall

SQL okolje

For all who don't speak slovene. There is also english version of this lens, that is named Learn SQL Queries Basics With SQL Exercises.
SAA (System Application Architecture) predstavlja zbirko dogovorov in protokolov, ki zagotavlja konsistenčno okolje za razvoj aplikacij neodvisno od tega, na katerem računalniku se bo aplikacija izvajala. Vključuje:
- CUA (Common User Access) - za zagotavljanje doslednosti pri interakciji uporabnika z računalnikom
- CPI (Common Programming Interface) - zagotavlja programske jezike in storitve, ki se lahko uporabljajo pri razvoju aplikacij in se enostavno integrirajo v vsako SAA okolje, lahko pa se tudi selijo iz enega v drugo okolje. V sklopu CPI je ena izmed storitev Database Interface, vključuje SQL (Structured Query Language) jezik.

Kaj so relacijske baze podatkov

- podatki so vidni kot zbirka imenovanih tabel
- tabele so sestavljene iz stolpcev in vrstic
- vrstica je horizontalnih del tabele, ki predstavlja zbirko vrednosti, ki pripadajo določeni vrednosti ključa
- vse vrstice v tabeli imajo enako strukturo, vrstni red vrstic pa ni pomemben
- vrstice v neki tabeli so enolično določene s pomočjo vrednosti ključa
- stolpec je vertikalni del tabele in predstavlja zbirko vrednosti istega tipa, vsak stolpec pa ima svoje ime
- kjer se križata stolpec in vrstica, je specifični podatek, ki se imenuje vrednost

Uporaba SQL

- končni uporabniki s pomočjo SQL jezika navajajo, katere podtke zahtevajo
- SQL ukazi se izvršujejo s pomočjo programa za upravljanje baze podatkov (Database Manager)
- DBM predstavi uporabniku rezultat v obliki tabele, ki se imenuje ciljna tabela
- izvorna tabela se kreira s pomočjo ukaza CREATE TABLE in vsebuje uporabniške podatke
- vse zahteve, izražene z SQL jezikom se lahko nanašajo na več vrstic hkrati

Nekateri uporabniki imajo stalne zahteve za vpogled podatkov na določeni način.
ustrezno podporo dosežemo s kreiranjem pogleda (VIEW), ki zadovoljuje opisano zahtevo
uporabnik lahko obravnava pogled kot pravo tabelo.

Snov bomo ponazorili s primeri uporabe ukazov na dveh tabelah, ki jih vidite na sliki.

Operatorji za primerjanje

Podatkovni tipi za vrednosti, ki se primerjajo morajo biti primerljivi, numerični znaki pa se lahko primerjajo tudi različnih tipov.
= enako
<> ni enako
> večje
>= večje ali enako
< manjše
<= manjše ali enako

če je vrednost v stolpcu neznana ali neuporabna za določeno vrstico, se vrednost izrazi kot NULL, ki je bolj prikladna kot vstavljanje presledkov ali vrednosti 0. če hočemo prikazati vrstico kjer vrednost ni enaka NULL, uporabimo ukaz NOT NULL.

Osnovni predikanti

Konstante so podprte za različne tipe podatkov.
INTEGER (celoštevilske): največ 10 cifer (primer: 56, -18, 1479)
FLOATING POINT (plavajoča vejica): največ 24 cifer (primer: 17E33, 7.8E+9, -13E-3)
DECIMAL (decimalne konstante): največ 15 (31) cifer (primer: 67.3, 12.0, -7.7)
CHAR (znak): točno določena dolžina (primer: a, n, z)
VARCHAR: variabilna dolžina (primer: Sava, Kumho, Michelin)
NULL: prazna vrednost

SQL iskalni kriterij lahko vsebuje enega ali več predikantov.
Za povezovanje dveh ali več predikantov se uporabljata opratorja AND in OR.
AND - oba predikanta morata biti izpolnjena
OR - izpolnjen mora biti vsaj en predikant

Pomemben je vrstni red ovrednotenja.
NOT se uporabi pred AND, AND pa pred OR, vrstni red pa se lahko spremeni s pomočjo oklepajev.

Predikanti

IN

Ključna beseda IN se uporablja za primerjanje ene vrednosti s seznamom vrednosti
seznam je ograjen z oklepajema, elementi seznama pa so ločeni z vejicami
elementi seznama so konstante, primerljive z vrednostjo, ki je navadena pred ključno besedo IN.
primer:

SELECT * FROM PNEVMATIKE
WHERE VISINA IN (30, 45, 70)

BETWEEN

Klučna beseda BETWEEN se uporablja za primerjavo neke vrednosti z območjem vrednosti, ki vključuje obe mejni vrednosti.
primer:

SELECT * FROM PNEVMATIKE
WHERE CENA BETWEEN 100 AND 200

LIKE

Ključna beseda LIKE se uporablja za iskanje nizov, ki vsebujejo določen vzorec.
Vsak podčrtaj predstavlja natančno en neznan znak, znak za procent pa predstavlja neznani niz znakov, vključno z 0.
primer:

SELECT * FROM PNEVMATIKE
WHERE ZNAMKA LIKE '%A'

NOT

Ključne besede BETWEEN, LIKE, IN ter NULL imajo lahko pred seboj ključno besedo NOT za izražanje nasprotne zahteve.
primer:

SELECT * FROM PNEVMATIKE
WHERE ZNAMKA NOT LIKE '%A'

Aritmeticni operatorji

+ seštevanje
- odštevanje
* množenje
/ deljenje

Lahko se uporabljajo v različnih kombinacijah.
Vrstni red ovrednotenja izrazov:
predznaka (+,-)
* in /
+ in -
primerjanja
NOT
AND
OR

ORDER BY

primer:
SELECT ZNAMKA, MODEL, VELIKOST
FROM PNEVMATIKE
WHERE CENA < 100
ORDER BY ZNAMKA, MODEL DESC

Če v SQL zahtevi ne navedemo, kakšen vrstni red vrstic v ciljni tabeli želimo, se vrstice prikažejo v nepredvidljivem vrstnem redu.
V mogih primerih bo potrebno pokazati uporabniku sortirano ciljno tabelo.
Zahtevo izrazimo s stavkom ORDER BY, vrstice se sortirajo po vrednosti v stolpcih, ki jih navedemo v stavku.
Prvi navedeni stolpec se uporablja kot glavni sortirni kriterij, drugi pa kot podrejeni sortirni kriterij itd.
Zahtevamo lahko tudi padajoči vrstni red in sicer z ukazom DESC, če ga ne navedemo, se privzame naraščajoči vrstni red, ki pa se tudi lahko navede (ASC).

GROUP BY

primer:
SELECT PRIIMEK, SUM(CENA)
FROM KUPCI
GROUP BY PRIIMEK

Stavek GROUP BY zahteva, da se iz izbranih vrstic oblikuje več grup vrstic v okviru iste zahteve. Isti grupi pripadajo vrstice, ki imajo enako vrednost v stolpcu, navadenem v stavku GROUP BY. Stolpec, ki je navaden v stavku GROUP BY, se imenuje grupni indikator. Grupna funkcija se izvede posebej za vsako grupo vrstic. Če izpustimo stavek GROUP BY, pa se nam prikaže tabela z vsemi priimki in seštetimi vsemi cenami.

DISTINCT

primer:
SELECT DISTINCT VISINA, SIRINA
FROM PNEVMATIKE
WHERE SIRINA > 200

Ukaz SELECT išče po eno vrstico pnevmatik, ki ustrezajo kriteriju, lahko se zgodi, da nam vrne več istih vrstic. Podvojene vrstice lahko izločimo s pomočjo ključne DISTINCT, ključna beseda ALL pa zahteva ohranitev vseh vrstic, ker pa je takšen način privzet, se ponavadi ključna beseda ALL izpusti.

Funkcije

SKALARNE FUNKCIJE
Skalarne funkcije se vedno izvajajo na eni vrstici.

date - datum
day - dan
days - pretvori datum v število dni
hour - ura
microsecond - mikro sekunda
minute - minuta
month - mesec
second - sekunda
time - čas
timestamp - časovna oznaka
year - podatek o letu
length - dolžina vrednosti elementa
substr - podniz vrednosti
value - vrednost

GRUPNE FUNKCIJE
Grupne funkcije se izvajajo na več vrsticah, ki so bile izbrane iz tabele.

NUMERIČNE
sum - seštevek
avg - povprečje

VSE
min - najmanjše
max - največje
count - število vrstic

primer uporabe:
SELECT MIN(VISINA), MAX(VELIKOST), AVG(SIRINA)

Pristop do vecih tabel

primer:
SELECT IME, PRIIMEK, PLACILO, ZNAMKA
FROM KUPCI, PNEVMATIKE
WHERE PLACILO = CENA

Prikažeta se nam združeni tabeli. V stavku SELECT smo izbrali katere stolpce iz obeh tabel želimo prikazati, v stavku FROM smo navedli iz katerih dveh tabel naj dobi te stolpce, v stavku WHERE pa smo povedali kateri stolpec se uporablja za povezavo. Previdni moramo biti, da ne pozabimo uporabiti stavka WHERE, v primeru da ga pozabimo se vsaka vrstica prva tabele poveže z vsako vrstico druge tabele. Stolpca, ki vsebujeta ceno imata v našem primeru različno ime (cena, placilo), v primeru, da pa bi bili imeni isti, pa moramo kvalificirati ime stolpca z imenom tabele.

primer:
Predpostavimo, da se stolpca v obeh tabelah imenujeta CENA in želimo dobiti enako tabelo, kot smo jo dobili v zgornjem primeru.
SELECT IME, PRIIMEK, KUPCI.CENA, ZNAMKA
FROM KUPCI, PNEVMATIKE
WHERE KUPCI.CENA = PNEVMATIKE.CENA

Bolj prikladen način za kvalificiranje imen stolpcev pa je z označitvijo tabele s določitvo designatorja.
primer:
SELECT IME, PRIIMEK, K.CENA, ZNAMKA
FROM KUPCI K, PNEVMATIKE P
WHERE K.CENA = P.CENA

Kreiranje

CREATE TABLE

Naredimo tabelo KUPCI.
CREATE TABLE KUPCI
( IME VARCHAR(15)
PRIIMEK VARCHAR(20)
DRZAVA VARCHAR(20)
PLACILO DECIMAL)

Dovoljeni tipi podatkov pa so:
INT, SMALLINT, FLOAT, DECIMAL, CHAR, VARCHAR, GRAPHIC, VARGRAPHIC, DATE, TIME, TIMESTAMP, NOT NULL (onemogoča, da vsebuje stolpec neznano vrednost).

CREATE INDEX

Index vsebuje vrednost stolpcev skupaj s kazalci vrstic. Index se ne navaja v ukazu SELECT. Ključna beseda UNIQUE se uporablja za preprečitev vstavljanja podvojenih vrednosti.
primer:
CREATE UNIQUE INDEX SIFRA_KUPCA
ON KUPCI

V tabelo kupci doda nov stolpec (SIFRA_KUPCA), ki mora biti unikaten za vsako vrstico.

CREATE VIEW

V definiciji pogleda lahko navedemo nova imena za stolpce, ki se vključujejo v pogled. Definicija pogleda ne sme vsebovati stavkov ORDER BY ali UNION. Pogled bo dostopen samo za branje, če definicija vsebuje enega od naslednjih elementov:
- več tabel ali pogledov v prvem FROM stavku
- ključno besedo DISTINCT
- stavek GROUP BY
- grupno funkcijo
- samo bralni pogled v prvem FROM stavku

primer:

CREATE VIEW KUPCI_POGLED
( KDO, KOLIKO, KAJ)
AS
SELECT IME, PLACILO, ZNAMKA
FROM KUPCI, PNEVMATIKE
WHERE PLACILO = CENA

Pogled prikažemo s stavkom SELECT * FROM KUPCI_POGLED

Prikaže se nam pogled, s spremenjenimi imeni stolpcev.

Dodajanje, posodabljanje in brisanje podatkov

INSERT DATA

Najprej navedemo v katero tabelo bi radi vstavili novo vrstico, potem pa še kaj bi vstavili v stolpce v tej vrstici.
primer:
INSERT INTO KUPCI
VALUES ('Ales','Pintar','Slovenija','46,90')

Lahko tudi naštejemo stolpce kamor bi radi dodali nove vrednosti. ostale pa pustimo prazne (null).

INSERT INTO KUPCI
(IME, PRIIMEK, DRZAVA)
VALUES ('Ales','Pintar','Slovenija')

UPDATE IN DELETE

Operacija UPDATE ažurira vrednosti v izbranih stolpcih in vrsticah v tabeli ali pogledu.
primer:
UPDATE KUPCI
SET IME = 'DAVID'

Vsem vrsticam v stolpcu IME ažurira vrednost v DAVID.

Operacija DELETE se lahko izvaja za več vrstic istočasno, brišejo pa se vse vrstice, ki izpolnjujejo izbirni kriterij. če stavek WHERE ni naveden, se brišejo vse vrstice.
primer:
DELETE FROM KUPCI
WHERE DRZAVA = 'Slovenija'

ALTER IN DROP

Obstoječi tabeli lahko dodamo nove stolpce. Stolpec se doda na desni strani tabele in mora predvidevati tudi vrednost NULL. Obstojeeč vrstice namreč v novem stolpcu ne vsebujejo vrednosti.
Tabele, indexe in poglede lahko tudi brišemo iz baze podatkov. Odvisni objekti se prav tako brišejo (avtomatsko).

primer dodajanja stolpca:
ALTER TABLE KUPCI
ADD PODJETJE VARCHAR(30)

primer brisanja:
DROP TABLE KUPCI

Primeri

Za vajo lahko naredite katerega izmed naslednjih primerov.

1) Naredite poizvedbo, ki bo izpisala vse kupce, ki so kupili pnevmatiko Sava Intensa.
2) Izpišite vse pnevmatike, katerih vlikost je večja od 14".
3) Izpišite skupno vrednost vseh nakupov.
4) Izpišite primerne pnevmatike za vaše vozilo, za katero so homologirane dimenzije pnevmatik 175/65/14 in 155/70/13.
5) Izpišite pnevmatike, ki imajo višino med 50 in 70.

Knjige o SQL

Loading

Anketa

Loading poll. Please Wait...

Dodajam nekaj povezav v zvezi z SQL

Tu si lahko preberete ostalo v zvezi z SQL.
SQL.org
SQL.org je spletna stran z osnovnimi informacijami in nekaj primeri.
Cems.uk
Ta stran je vizualno dokaj slaba, je pa na njej nekaj uporabnih stvari.
SQLzoo.net
Dobra stran z real-time vajami in osnovnimi podatki.

Tu pa prilagam linke do mojih ostalih prispevkov

V kolikor imate preveč časa ;)
Loading

If you don't speak Slovene

don't be scared ;)

Lens is now translated, it is named Learn SQL Queries Basics With SQL Exercises.

Komentarji

Tu lahko delite svoje mnenje z ostalimi.

  • SereneSea Jun 6, 2011 @ 12:04 pm | delete
    An effective primer for people who want to know what is SQL.
  • human_ Jun 1, 2011 @ 1:18 am | delete
    Odli?en lens! Res uporabne informacije za za?etnike.
  • Tipi May 31, 2011 @ 2:40 pm | delete
    Well explained SQL basics here!

by

davidberSLO

Hello world. This is my bio. I can edit it later!

Feeling creative? Create a Lens!

Featured Lenses 

Loading