SQL Bevezetés
- Magas szintű programozási nyelv
- Deklaratív
- "hogyan" helyett "mit"
- Előny a procedurális megközelítéshez képest
- Az adatbázis-kezelő rendszer kitalálja a leggyorsabb végrehajtási módot
- So called: Lekérdezés optimalizáció
SQL mantra - Select From Where
Példa táblák a jegyzethez: (EA boi goes p hard on this one)
- Sörök(név, gyártó)
- Kocsmák(név, cím, engedélySzám)
- Alkeszek(név, cím, telefon)
- Szeret(alkesz, sör)
- Felszolgál(kocsma, sör, ár)
- Látogat(alkesz, kocsma)
Don't forget, underline is key :3
Kotlin reminder
A pontosvessző (pontosabban sorelválasztó karakter, később módosítható) működése egy kicsit érdekes SQL viszonlatban, de erre ha eljutunk PL/SQL-ig, szót ejtek.
Csak ne felejts el, hogy utasítások után jó dolog...
Lekérdezés - Példa
Mely söröket gyártotta az Anheuser-Busch?
Eredmény - Anheuser
| név |
|---|
| Bud |
| Bud Lite |
| Michelob |
| ... |
Lekérdezés jelentése
- Elővesszük a
FROMzáradékban megadott relációt- A reláció lehet másik
SELECTeredménye is...
- A reláció lehet másik
- Alkalmazzuk a
WHEREzáradékban megadott kiválasztási feltételt - Az ederményt a
SELECTzáradékban megadott oszlopokra vetítjük- A
*-al kiválaszthatjuk az összes oszlopot - Opcionálisan a
SELECT <A> AS <A'>, <B> AS <B_stg>... alakban át is nevezhetünk oszlopokat
- A
Kifejezések a SELECT-ben
According to the EA:
"Minden kifejezés, ami 'értelmesnek tűnik' megjelenhet a
SELECTzáradékban"Lényegében a típusinveriánsan megfelelő műveletek alkalmazhatóak
Konstansok a SELECT-ben
Eredmény - BudIvó
| alkesz | BudIvó |
|---|---|
| Sally | szereti a Budot |
| Fred | szereti a Budot |
| ... | ... |
Információ integráció
- Az adatbázisok sok firrásból épülhetnek fel (adattárházak)
- Például minden kocsmának van egy saját
Menü(sör, ár)táblája - A
Felszolgál(kocsma, sör, ár)tábla elkészítéséhez pedig minden táblát fel kell dolgoznuk, a kocsma nevét pedig konstansként kell beszúrnunk
- Például minden kocsmának van egy saját
Indegráció - Példa
"Joe bárja" esetén
Összetett feltételek a WHERE-ben
- Logikai műveletek
AND,OR,NOT
- Összehasonlítások
=,<>,<,>,<=,>=
Összetett feltétel - Példa
Joe bárjában mennyibe kerül a Bud?
Kotin reminder
SQL-nek teljesen mindegy, hogy space, vagy sortöréssel választasz el, addig olvassa az utasítást, amíg új záradékot, vagy sorelválasztót nem talál...
SELECT ár FROM Felszolgál WHERE kocsma = 'Joe bárja' AND sör = 'Bud'; is teljesen valid, csak a mantra szavait konvenció sortöréssel kezdeni, subquery-nél meg behúzni.
Ez alól a programban tárolt nyers SQL kivétel, a Java kód elég ramatyul nézne ki, főleg a régi IDE-ken, ahol még nem volt az inline SQL-re syntax-highlight ._.
Minták
- Feltételben a szavakon mintát illeszthetünk
<Attribútum> LIKE <minta><Attribútum> NOT LIKE <minta>
- Speciális karakterek
%\(\to\) tetszőleges számú, tetszőleges karakter_\(\to\) pontosan egy, tetszőleges karakter
Minták - Példa
Budapesten belüli alkeszek listája
Ez a példa nem tetszik, mert a címet egy rekordként tárolja, but anyways ig...
- Így a címben bárhol megjelenik pontosan a
Budapestkaraktersor, akkor match-elni fog1056 Budapest, Fővám tér 2.talál2112 Veresegyház, Budapesti utca 2.szintén talál<!--
Mondom én, hogy ez a példa bs. És igen, ezt a címet direkt megkerestem lmao --> - \(\red{\text{Buda alatt, de Pest mellett}}\) nem talál
Keressünk olyan alkeszeket, akiknek a nevük második karaktere
a, és nevüky-ra végződik
- Ig it is time for
Sallyto show up :D
NULL
- Alapértelmezés szerint a kulcson kívül minden attribútum tartalmazhat üres értéket
- Ez később szigorítható, don't worry
- A jelentés kontextusfüggő
- Hiányzó érték
- Ismeretlen elkövető
- Nem tudjuk, hogy van Joe bárja (elég sus ngl)
- Értelmetlen
- Szingli embernek házastárs
- Egyetemistának életkedv
- Hiányzó érték
NULL - összehasonlítások
- SQL háromértékű logikája
TRUEFALSEUNKNOWN
- Egy érték
NULL-lal hasonlítvaUNKNOWNeredményű lesz - A
WHEREzáradékban csak aTRUEérték kerül be az eredménybe
THF.:
TRUE = 1FALSE = 0,UNKNOWN = 1/2Ekkor
AND=MINOR=MAXNOT(x)=1-x