SQL

SQL vadnico bi lahko dal v svojo vadnico, ampak, ker večinoma delamo s SQL-om v PHP-ju, bo tudi vadnica za SQL zraven. SQL je standardni jezik za shranjevanje, manipulacijo in pridobivanje podatkov v baze podatkov. Tukaj se bomo naučili, kako uporabljati SQL v MySQL, lahko pa se uporablja tudi v MS Access, Oracle, Sybase, Informix, Postgres in drugih sistemskih baz podatkov.

SQL

Predstavitev SQL

SQL je standardni jezik za dostop do podatkovnih baz, in njihovega upravljanja. In kaj SQL sploj je?

  1. SQL je kratica za Structured Query Language
  2. omogoča nam dostop do podatkovnih baz in njihovega upravljanja
  3. SQL je postal standard ANSI 1986 in ISO 1987
    Kaj SQL sploh lahko naredi?
  1. lahko izvaja poizvedbe v bazi podatkov
  2. lahko pridobi podatke iz baze podatkov
  3. lahko vstavi zapise v bazo podatkov
  4. lahko posodablja zapise v bazi podatkov
  5. lahko izbriše zapise v bazi podatkov
  6. lahko ustvari nove baze podatkov
  7. lahko ustvari nove tabele
  8. lahko ustvari shranjene procedure v bazi podatkov
  9. lahko ustvari poglede v bazi podatkov
  10. lahko nastavi dovoljenja za tabele, procedure in poglede

SQL seveda uporabljamo tudi na spletnih straneh, kjer lahko podatke prikazujemo ali shranjujemo nazaj v bazo. Če želimo prikazovati podatke iz baze podatkov za to potrebujemo standardne RDBMS programe (SQL strežnik, MySQL). Za uporabo skriptnega jezika na strani strežnika, na primer PHP ali ASP. Ko pa želimo oblikovati, potrebujemo znanje iz HTML in CSS-ja.

RDBMS je kratica za Relational Database Management System, in je osnova za SQL in vse druge sodobne sisteme baz podatkov. Podatki v RDBMS so shranjeni v objektih baze podatkov, ki se imenujejo tabele. Tabela je zbirka povezanih podatkovnih vnosov, in je sestavljena iz stolpcev in vrstic. Vsaka tabela je razdeljena na manjša polja. Polja v tabeli stranke so sestavljena iz id-ja, imena, priimka, naslova, mesta in poštne številke.

Tabele baze podatkov

Baze podatkov najpogosteje vsebujejo eno ali več tabel, in vsaka tabela je označena s svojim imenom. Te tabele vsebujejo stolpce in vrstice s podatki. Ker delamo na spletnih straneh, se bomo tudi osredotočili na MySQL tabele, ki jih potrebujemo za shranjevanje in prikaz podatkov. Za začetek bomo naredili tabelo z imenom stranke, kako to naredimo, lahko najdemo v Ustvarimo tabele vodiču.

Tabele baze podatkov

Zgornja tabela vsebuje DESET zapisov, in ŠEST stolpcev, ti so id, ime, priimek, naslov, mesto in posta. Skozi vadnico bomo posodabljali in urejali tabelo, in bom prilepil sliko vsake spremembe. Tabela bo prikazana samo tukaj, brez posodobitev in spremeb.

Komentarji

Komentiranje se uporablja za razlago, lahko "ne pozabi" komentar, kot v vsakem programskem jeziku. Oglejmo si najprej primer za enovrstični komentar. Komentar se začne z dvema –– (minus) in potem napišemo komentar.

    SELECT * FROM stranke -- prikaže celotno tabelo 

Večvrstični komentar pa se piše med znakoma /* in se zaključi z */.

    SELECT * FROM stranke
    /* za večvrstični komentar
    uporabimo že znane znake */ 

Izjave

Večina dejanj, ki jih bomo izvedli v bazi podatkov, se bo izvedla s stavki. Naslednji stavek SELECT izbere vse zapise v tabeli. Mi bomo seveda izpisali tabelo stranke.

    SELECT * FROM stranke
SQL izjave 1
SQL izjave 2

Ključne besede niso občutljive na velike in male črke, pomeni, da je stavek SELECT enak kot select. Še glede podpičja. Nekateri sistemi, kot je PHP recimo zahteva na koncu stavka, če pišemo direktno v SQL ga ne potrebujemo.

Najpomebnejši ukazi

Nekaj od teh pomembnih ukazov smo že spoznali v MySQL, in jih bom še enkrat zapisal tukaj. To so ukazi:

IME OPIS
SELECT ekstrahira podatke iz baze
UPDATE posodablja podatke v bazi
DELETE izbriše podatke iz baze
INSERT INTO vstavi nove podatke v bazo
CREATE DATABASE ustvari novo bazo podatkov
ALTER DATABASE spremeni bazo podatkov
CREATE TABLE ustvari novo tabelo v bazi podatkov
ALTER TABLE spremeni tabelo v bazi podatkov
DROP TABLE izbriše tabelo v bazi podatkov
CREATE INDEX ustvari indeks v bazi podatkov
DROP INDEX izbriše indeks v bazi podatkov

SELECT

Stavek SELECT se uporablja za izbiro podatkov iz baze. Vrnjeni podatki so shranjeni v tabeli rezultatov, ki se imenuje nabor rezultatov.

    Sintaksa: SELECT stolpec1, stolpec2, stolpec3, ... FROM ime tabele; (če delamo v SQL bazi ne potrebujemo podpičja, v PHP-ju ga)

Če želimo izbrati podatke iz določenih stolpcev to vpišemo v stavek, če želimo izpisati celo tabelo, samo uporabimo zvezdico *. Preverimo oba primera, s stolpci in z zvezdico.

    SELECT ime, priimek FROM stranke
Izjava SELECT 1
Izjava SELECT 2
    SELECT * FROM stranke
Izjava SELECT 3
Izjava SELECT 4

DISTINCT

Z stavkom DISTINCT lahko izberemo samo določene vrednosti v tabeli, in v našem primeru bomo iz stolpca mesto izpisali podatke.

    SELECT DISTINCT mesto FROM stranke
DISTINCT 1
DISTINCT 2

Lahko tudi preverimo, koliko različnih mest se nahaja v tabeli. Izpisal nam bo koliko mest je v tabeli, v številski obliki. Za to obliko izpisa uporabimo stavek COUNT, ki ga vpišemo pred DITINCT.

    SELECT COUNT(DISTINCT mesto) FROM stranke
DISTINCT 3
DISTINCT 4

WHERE

Iz tabele stranke bomo izpisali posamezni vpis, odvisno od izbire stolpca, saj klavzula WHERE naredi to za nas. Mi bomo izbrali stolpec priimek, in iz njega izpisali priimek Kozolec.

    SELECT * FROM stranke WHERE priimek='Kozolec'
WHERE 1
WHERE 2

Lahko tudi vpišemo

    SELECT * FROM stranke WHERE id='3'

in izpisala se nam bo stranka, ki je vpisana pod id-jem številka 3.

WHERE 3
WHERE 4

SQL zahteva enojne narekovaje okoli besednih vrednosti (v PHP-ju lahko uporabimo dvojne narekovaje), pri številskih vrednostih narekovajev ne sme biti. Oglejmo si še nekaj operatorjev, ki se uporaljajo v klavzuli WHERE.

OPERATER OPIS PRIMER
= je enako SELECT * FROM stranke WHERE posta=7498
> večje kot SELECT * FROM stranke WHERE posta>5000
< manjše kot SELECT * FROM stranke WHERE posta<5000
>= večje ali enako SELECT * FROM stranke WHERE posta>=5000
<= manjše ali enako SELECT * FROM stranke WHERE posta<=5000
<> ni enako (v določenih SQL verzijah se lahko uporablja != operater za ne-enakost) SELECT * FROM stranke WHERE posta<>5000
BETWEEN med določenim razponom SELECT * FROM stranke
WHERE posta BETWEEN 4000 AND 7000
LIKE poišči vzorec SELECT * FROM stranke WHERE posta LIKE 's%'
IN za določitev večih vrednosti za stolpec SELECT * FROM stranke
WHERE posta IN (3998,7498,9999)

Operatorji AND, OR in NOT

Stavek WHERE lahko kombiniramo z operatorji AND, OR in NOT. Operaterja AND in OR se uporabljata za filtriranje zapisov na podlagi več kot enega pogoja.

  1. operater AND prikaže zapis, če so vsi pogoji ločeni z AND pravilni (ang. TRUE)
  2. operater AND prikaže zapis, če je kateri od pogojev ločenih z OR pravilen (ang. TRUE)

Operater NOT prikaže zapis, če pogoji niso pravilni (ang. NOT TRUE).

    SELECT * FROM stranke WHERE ime='Mateja' AND mesto='Vidmarji'
Operatorji AND, OR in NOT 1
Operatorji AND, OR in NOT 2
    SELECT * FROM stranke WHERE ime='Mateja' OR mesto='Kozolci'
Operatorji AND, OR in NOT 3
Operatorji AND, OR in NOT 4
    SELECT * FROM stranke WHERE NOT ime='Janez'
Operatorji AND, OR in NOT 5
Operatorji AND, OR in NOT 6

Operaterje lahko tudi med seboj kombiniramo.

    SELECT * FROM stranke WHERE ime='Janez' AND priimek='Kranjski' OR priimek='Mercedes'
Operatorji AND, OR in NOT 7
Operatorji AND, OR in NOT 8
1 2 3 4 5