or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing
xxxxxxxxxx
Osnove podatkovnih baz - vaje 25.2.2021
CREATE TABLE
(ključi, omejitve),ORDER BY
,GROUP BY
Naloga 1:
CREATE TABLE
Naredi sledeče tabele, v katerih boš hranil podatke o osebah, njihovih traktorjih in rezervnih delih za traktorje:
oseba
opisuje posamezne osebe.otroci
vsebuje IDje vseh staršev in njihovih otrok.znamka
našteva znamke traktorjev. ID znamke naj bo serijska številka, ki se določi avtomatično (pri vpisu vrstice nam je ni treba posebej navajati).traktor
opisuje posamezne traktorje. Barva traktorja je lahko neznana (NULL
). Če čas nakupa pri vstavljanju v bazo ni podan, privzemi, da je bil traktor kupljen v trenutku vnosa vrstice v bazo. Uporabi funkcijonow()
, ki vrne trenutni čas. ID traktorja naj bo serijska številka, ki se določi avtomatično.deli
opisuje nadomestne dele. Posamezna vrstica opisuje enega ali več (stolpecstevilo
) nadomestnih delov določenega tipa (npr. volan) za traktor določene znamke. Če število delov pri vnosu v tabelo ni podano, privzemi, da je del en sam.Preden narediš tabele, si dobro oglej datoteko
kmetija_insert.sql
, s katero boš tabele pozneje napolnil; na podlagi te datoteke tudi določi smiselne podatkovne tipe, primarne in tuje ključe ter omejitve. Tabele naredi tako, da se bodo ob vstavljanju prožile napake natanko na tistih mestih, kjer je to označeno vkmetija_insert.sql
.Če se pri ustvarjanju tabel zmotiš, jih lahko bodisi uničiš z ukazom
DROP TABLE
in začneš znova, bodisi poskusiš popraviti z ukazomALTER TABLE
.Naloga 2: Določili
ORDER BY
,LIMIT
Pogosto želimo prikazati rezultate poizvedbe v določenem vrstnem redu. V ta namen uporabimo določilo
ORDER BY
(glej dokumentacijo zaORDER BY
za Postgresql in članekORDER BY
(SQL) iz MaFiRa wiki). V podatkovni zbirkibanka
napravi naslednje poizvedbe:seznam vseh krajev, urejen po imenu kraja (ali baza pravilno uredi šumnike?)
seznam vseh oseb, urejen v padajočem vrstnem redu po datumu rojstva
V praksi imamo podatkov dostikrat zelo veliko in zato ni smiselno, da bi izpisovali vse. Takrat uporabimo
LIMIT
:Izpiši najmlajšega komitenta banke.
Izpiši tiste tri transakcije, pri katerih se je obrnilo največ denarja.
Naloga 3: Določilo
GROUP BY
Z določilom
GROUP BY
rezultate poizvedbe združimo v posamezne skupine, vsako skupino pa združimo v eno vrstico z agregacijsko funkcijo, kot jesum
alicount
(glej dokumentacijo zaGROUP BY
za PostgreSQL in članekGROUP BY
(SQL) iz MaFiRa wiki). V podatkovni zbirkibanka
napravi naslednje poizvedbe:število oseb, ki živijo v vsakem posameznem kraju. Izpiši dva stolpca: poštna številka in število naročnikov, ki živijo v kraju s to poštno številko.
trenutno stanje na računih oseb (brez obresti). Izpiši dva stolpca: številka računa in trenutno stanje.
trenutno stanje na računih oseb (brez obresti). Izpiši štiri stolpce: številka računa, ime, priimek lastnika in trenutno stanje.
Določili
ORDER BY
inGROUP BY
lahko uporabimo hkrati:izpiši trenutno stanje na računih naročnikov (brez obresti). Izpiši štiri stolpce: številka računa, ime, priimek, trenutno stanje. Izpis naj bo urejen po trenutnem stanju v padajočem vrstnem redu.