SELECT
- primer
Ime |
Priimek |
Starost |
Kraj |
---|---|---|---|
Janez | Slovenec | 42 | Kranj |
Ivan | Slovenec | 44 | Celje |
Peter | Slovenec | 33 | Kranj |
Miha | Slovenski | 12 | Celje |
</span>
SELECT DISTINCT Kraj FROM t; -- 2 vrstici
SELECT DISTINCT Priimek, Kraj FROM t; -- 3 vrstice
SELECT DISTINCT Ime, Priimek, Kraj FROM t; -- 4 vrstice
SELECT Kraj FROM t; -- 4 vrstice
SELECT Priimek, Kraj FROM t; -- 4 vrstice
SELECT Ime, Priimek, Kraj FROM t; -- 4 vrstice
SELECT
- dodatkiSELECT naslov, ROUND(cena * 1.10, 2) FROM knjige
WHERE cena * (1 + davek/100.0) > 100.00;
AS
: pre(po)imenujemo izhodni stolpecORDER BY
: uredimo vrsticeDISTINCT
: v končnem rezultatu upoštevamo le različne vrsticeSELECT
SELECT * FROM world;
SELECT name, population FROM world;
SELECT name AS "Ime države" FROM world;
SELECT name AS Ime FROM world
ORDER BY population DESC;
SELECT DISTINCT continent FROM world;
SELECT 2 FROM world WHERE continent = 'Europe';
SELECT population/area FROM world
WHERE continent IN ('Europe', 'Asia', 'Africa') AND
area BETWEEN 100000 AND 1000000;
SELECT name FROM world
WHERE continent = 'Europe'
ORDER BY population/area;
</span>
SELECT name FROM world
WHERE population < (
SELECT population FROM world
WHERE name = 'Slovenia'
) AND
continent = 'Europe';
SELECT population FROM world
WHERE name = 'Canada';
SELECT population FROM world
WHERE name = 'Algeria';
SELECT name FROM world
WHERE population BETWEEN 35427524 AND 38700000;
SELECT name FROM world
WHERE population BETWEEN (
SELECT population FROM world
WHERE name = 'Canada'
) AND (
SELECT population FROM world
WHERE name = 'Algeria'
);
WITH
(2)WITH gospodarji_prstanov AS (
SELECT * FROM film
WHERE naslov LIKE 'Gospodar prstanov%'
),
leta_gospodarjev AS (
SELECT leto FROM gospodarji_prstanov
),
ocene_gospodarjev AS (
SELECT ocena FROM gospodarji_prstanov
)
SELECT * FROM film
WHERE leto IN leta_gospodarjev AND
ocena IN ocene_gospodarjev;
SELECT name, continent FROM world AS t1
WHERE population > (
SELECT 3 * MAX(population) FROM world AS t2
WHERE t1.continent = t2.continent AND
t1.name <> t2.name
);
HAVING
nobel(yr, subject, winner)
SELECT yr FROM nobel
WHERE subject = 'Physics' AND
yr > 1970
GROUP BY yr
HAVING COUNT(yr) = 1;
HAVING
(2)
SELECT winner, COUNT(subject) FROM nobel
GROUP BY winner
HAVING COUNT(subject) > 1;
winner |
COUNT(subject) |
---|---|
Frederick Sanger | 2 |
John Bardeen | 2 |
International Committee of the Red Cross | 3 |
Linus Pauling | 2 |
Marie Curie | 2 |
</span>
SELECT * FROM nobel
WHERE winner IN (
SELECT winner FROM nobel
GROUP BY winner
HAVING COUNT(subject) > 1
);
SELECT winner, COUNT(DISTINCT subject) AS podrocja FROM nobel
GROUP BY winner
HAVING COUNT(DISTINCT subject) > 1;
winner |
podrocja |
---|---|
Linus Pauling | 2 |
Marie Curie | 2 |
</span>
yr |
subject |
winner |
---|---|---|
1962 | Peace | Linus Pauling |
1954 | Chemistry | Linus Pauling |
1911 | Chemistry | Marie Curie |
1903 | Physics | Marie Curie |
</span> </span>
movie(id, title, yr, score, votes, director)
actor(id, name)
casting(movieid, actorid, ord)
movie
.actor
.casting
povezuje igralce in filme.
movie
in actor
(igralec je igral v več filmih, filmi pa imajo več igralcev)SELECT title FROM movie
JOIN casting ON movie.id = movieid
JOIN actor ON actorid = actor.id
WHERE actor.name = 'John Wayne';
WHERE
.
movie
.casting
, ki imajo vrednost v stolpcu movieid
enako vrednosti stolpca id
tabele movie
.actor
, ki imajo vrednost v stolpcu id
enako vrednosti stolpca actorid
tabele casting
.name
v tabeli actor
enaka John Wayne.casting
.
movie
.actor
.casting.ord
).
SELECT name FROM movie
JOIN casting ON movie.id = movieid
JOIN actor ON actor.id = actorid
WHERE title = 'Giant' AND
name <> 'James Dean'
ORDER BY ord;
casting
se pojavijo vsaj desetkrat z ord = 1
.
WHERE ord = 1
HAVING COUNT(*) >= 10
actor
.SELECT name FROM actor
JOIN casting ON actorid = id
WHERE ord = 1
GROUP BY id, name
HAVING COUNT(*) >= 10;
WHERE ord = 1
AND name <> 'Al Pacino'
AND movie.id IN (
-- seznam ID-jev filmov, kjer je igral Al Pacino
)
casting
in actor
.casting
!SELECT movieid FROM casting
JOIN actor ON actor.id = actorid
WHERE actor.name = 'Al Pacino';
SELECT title, name FROM movie
JOIN casting ON movie.id = movieid
JOIN actor ON actor.id = actorid
WHERE ord = 1 AND
name <> 'Al Pacino' AND
movie.id IN (
SELECT movieid FROM casting
JOIN actor ON actor.id = actorid
WHERE actor.name = 'Al Pacino'
);
SELECT [DISTINCT] -- 8
stolpci, združevalne_funkcije -- 7
FROM leva_tabela -- 1
[LEFT] JOIN -- 3
desna_tabela ON pogoji_stikanja -- 2
WHERE vsebinski_pogoji -- 4
GROUP BY ključi_skupin -- 5
HAVING pogoji_skupin -- 6
ORDER BY ključi_urejanja -- 9
LIMIT število; -- 10
Imamo tabeli narocnik
in narocilo
.
narocnik_id |
ime |
priimek |
---|---|---|
1 | Damjan | Kmetec |
2 | Aljaž | Kmetec |
3 | Špela | Prezelj |
4 | Metka | Kmetec |
</span>
narocilo_id |
narocnik_id |
kolicina |
---|---|---|
1 | 1 | 2 |
2 | 1 | 1 |
3 | 3 | 1 |
4 | 4 | 4 |
</span> </span>
Želimo dobiti število naročil vsakega naročnika s priimkom Kmetec, ki je naročil največ tri kose, urejeno naraščajoče po številu naročil.
narocnik_id |
ime |
priimek |
stevilo |
skupna_kolicina |
---|---|---|---|---|
2 | Aljaž | Kmetec | 0 | 0 |
1 | Damjan | Kmetec | 2 | 3 |
</span>
</span>
SELECT narocnik_id, ime, priimek,
COUNT(narocilo_id) AS stevilo,
COALESCE(SUM(kolicina), 0) AS skupna_kolicina
FROM narocnik
LEFT OUTER JOIN
narocilo USING (narocnik_id)
WHERE priimek = 'Kmetec'
GROUP BY narocnik_id, ime, priimek
HAVING COALESCE(SUM(kolicina), 0) <= 3
ORDER BY stevilo;
...
FROM narocnik LEFT OUTER JOIN narocilo USING (narocnik_id)
...
narocnik_id |
ime |
priimek |
narocilo_id |
kolicina |
---|---|---|---|---|
1 | Damjan | Kmetec | 1 | 2 |
1 | Damjan | Kmetec | 2 | 1 |
2 | Aljaž | Kmetec | NULL |
NULL |
3 | Špela | Prezelj | 3 | 1 |
4 | Metka | Kmetec | 4 | 4 |
</span>
...
WHERE priimek = 'Kmetec'
...
narocnik_id |
ime |
priimek |
narocilo_id |
kolicina |
---|---|---|---|---|
1 | Damjan | Kmetec | 1 | 2 |
1 | Damjan | Kmetec | 2 | 1 |
2 | Aljaž | Kmetec | NULL |
NULL |
4 | Metka | Kmetec | 4 | 4 |
</span>
...
GROUP BY narocnik_id, ime, priimek
...
narocnik_id |
ime |
priimek |
narocilo_id |
kolicina |
---|---|---|---|---|
1 | Damjan | Kmetec | 1 | 2 |
2 | 1 | |||
2 | Aljaž | Kmetec | NULL |
NULL |
4 | Metka | Kmetec | 4 | 4 |
</span>
...
HAVING COALESCE(SUM(kolicina), 0) <= 3
...
narocnik_id |
ime |
priimek |
narocilo_id |
kolicina |
skupna_kolicina |
---|---|---|---|---|---|
1 | Damjan | Kmetec | 1 | 2 | 3 |
2 | 1 | ||||
2 | Aljaž | Kmetec | NULL |
NULL |
0 |
4 | 4 | 4 |
</span>
SELECT narocnik_id, ime, priimek,
COUNT(narocilo_id) AS stevilo,
COALESCE(SUM(kolicina), 0) AS skupna_kolicina
...
narocnik_id |
ime |
priimek |
stevilo |
skupna_kolicina |
---|---|---|---|---|
1 | Damjan | Kmetec | 2 | 3 |
2 | Aljaž | Kmetec | 0 | 0 |
...
ORDER BY stevilo;
narocnik_id |
ime |
priimek |
stevilo |
skupna_kolicina |
---|---|---|---|---|
2 | Aljaž | Kmetec | 0 | 0 |
1 | Damjan | Kmetec | 2 | 3 |
pripada
- film ima lahko več žanrov!zanr
.SELECT naziv, COUNT(*) AS stevilo
FROM pripada
JOIN zanr ON zanr = id
GROUP BY id, naziv
ORDER BY stevilo DESC;
film
.SELECT naziv,
AVG(ocena) AS povprecna_ocena,
AVG(dolzina) AS povprecna_dolzina
FROM film
JOIN pripada ON film.id = film
JOIN zanr ON zanr = zanr.id
GROUP BY zanr.id, naziv
ORDER BY povprecna_ocena DESC;
SELECT naslov, COUNT(*) AS st_reziserjev
FROM vloga
JOIN film ON film = id
WHERE tip = 'R'
GROUP BY naslov
HAVING st_reziserjev > 1
ORDER BY st_reziserjev DESC;
SELECT naslov, COUNT(*) AS st_reziserjev
FROM vloga
JOIN film ON film = id
WHERE tip = 'R'
GROUP BY id, naslov
HAVING st_reziserjev > 1
ORDER BY st_reziserjev DESC;
</span>
SELECT film FROM pripada
WHERE zanr = 4 AND zanr = 8;
zanr = 4
kot tudi z zanr = 8
!SELECT film FROM pripada
JOIN zanr ON zanr = id
WHERE naziv IN ('Comedy', 'Romance')
GROUP BY film
HAVING COUNT(*) = 2;
filmi
.
SELECT naslov FROM film
JOIN pripada ON film.id = film
JOIN zanr ON zanr = zanr.id
WHERE naziv IN ('Comedy', 'Romance')
GROUP BY film.id, naslov
HAVING COUNT(*) = 2;
SELECT naslov, ime FROM film
JOIN vloga ON film.id = film
JOIN oseba ON oseba = oseba.id
GROUP BY film.id, naslov, oseba.id, ime
HAVING COUNT(*) = 2;
WITH reziser AS (
SELECT * FROM vloga
WHERE tip = 'R'
),
igralec AS (
SELECT * FROM vloga
WHERE tip = 'I'
)
SELECT naslov, ime FROM reziser
JOIN igralec USING (oseba, film)
JOIN film ON film.id = film
JOIN oseba ON oseba.id = oseba;
SELECT film.*
FROM pripada AS prvi
JOIN pripada AS drugi USING (film)
JOIN film ON id = film
WHERE prvi.zanr = 4 AND
drugi.zanr = 8 AND
oznaka <> 'R'
ORDER BY film.glasovi DESC;
CREATE TABLE kraj (
posta integer PRIMARY KEY,
kraj text NOT NULL
);
CREATE TABLE oseba (
emso text PRIMARY KEY,
ime text NOT NULL,
priimek text NOT NULL,
ulica text NOT NULL,
posta integer NOT NULL
REFERENCES kraj(posta)
);
</span>
CREATE TABLE racun (
stevilka integer PRIMARY KEY
AUTOINCREMENT,
lastnik text NOT NULL
REFERENCES oseba(emso)
);
CREATE TABLE transakcija (
id integer PRIMARY KEY
AUTOINCREMENT,
racun integer NOT NULL
REFERENCES racun(stevilka),
znesek integer NOT NULL,
cas timestamp NOT NULL
DEFAULT CURRENT_TIMESTAMP,
opis text
);
</span> </span>
$ host www.google.com
www.google.com has address 142.250.186.68
www.google.com has IPv6 address 2a00:1450:400d:80e::2004
</span>
www.google.com
com
(ali net
, org
, …, ter državne domene, kot si
, …)com
): google
google.com
): www
www.google.com
, pošljemo poizvedbo imenskemu strežniku internetnega ponudnika.
com
, nazadnje še strežnik za google.com
.localhost
ustreza naslovoma 127.0.0.1 in ::1.</span>
https://www.google.com/
www.google.com
.