Mit jelentenek ezek az sql parancsok?
OKJ Konzultáció Sallai András 2015_05_07
NORMAIZÁLÁS
--> [link]
-->Idegen kulcs
Összetett táblákból törlés
2 TÁBLA-->KAPCSOLATOT EGY MÁSIK TÁBLÁBAN-->EGYIKBEN SZÁMOK A MÁSIKBAN AZONOSÍTÓ KELL TÖRÖLNÖM
össze kapcsolva idegen kulcsal
törölje ki Nagy Jószefet és jegyét-->jegyet kitörlöm és utána lehet ő magát(idegen kulcsal lesz összekapcsol 2 tábla.)Mindig abból kell törölni ahol az idegen kulcs van)
Kapcsolatok adatbázisok között
1:N kapcsolatban van akkor optimális (erre kell törekedni)
1:1 tervezünk -->valószinüleg-->felesleges van felvéve egy mező (felesleges tábla
N:N-->logikailag így tudjuk-->valamelyi mezőt ki kel tenni táblába (plusz tábla kell)
Normalizálás
egy tábla többször szerepel az EDDA még rosszabb -->ebben a mezőbe több érték van-->ilyen van akkor nincsen 1 normálformán
1.össze szedtük h miket kell tárolni
2.majd tervezünk
Első Normárforma
-->egy táblából kettőt csinálok-->úgy h ne legyen fügösség
-->Kell h legyen egyedi azonosító (cd táblában-->cdAz)(plusz mező hozok létre)
-->Zeneszám oszlop ki-->CD táblából és egy külön táblába-->Zeneszám van egy CD és ZENESZÁM táblám//nincs függöség
1 adat többször is szerpel egy táblázatban//ha változtatni kell akkor nagyon sok ehylen kell-->akkor nincs 2. normárformán
2.normárforma
-->1. normárformán kell h lehgyen
-->nincsenek ismétlések
előadó CD ítrja nem ?Nem
előadó kapcsolatba valami infó kell?Nem
redundáns mert ismétlődik
mellérendelő viszony előadó és kiadó nincs teljesen allárendelbve egyedi aznisítónak-->mellérendelő viszonyban
akkor lenne jó cdAz-->allárendelve lenne teljesen
CD cím már alárendelő viszonybav van már
megnézem tartalmat és ismétlések vannak -->akkor
CD táblában van mező az mint alárendelő viszonybann legyen
kiadónak kell külön-->egyed
Kiado nem cd Kiado egyedhez tartozik
megkeressük egy létező táblában-->vagy létrehozunk egy másikhoz
N:N-->több a többhöz kapcsolat van meg kell szüntetni-->vagy egy kapcsoló táblaval vagy át kell rendeznem
kapcsolómező-->első tábla neve és másik tábla neve-->ez a kapcsoló mező igy 1:n kapcsolatunk van már
3.Normálforma
kIADÓKNÁL TÖBB ÉRTÉKET IS ADATOT AKAROK TÁROLNI-->VALAMI PLUSZ INFÓT AKAROK TÁROLNI-->VAN 2 OLYAN MEZŐ AMI NAGYON FÜGG EGYMÁSTÓL-->HA EGYIKET VÁLTOZTATOM VÁLTOZIK A MÁSIK IS
függöségben vannak-->ezért nincs 3.NF-->külön táblában rakom-->ORSZÁG táblába rakom
függöség=tranzitív függőség
3.NF van ?
mindig megnézem h 1 normárformán van vagy 2. vagy 3.
Fizika tervezés
-Idegen kulcsot is petesszük-->többes oldalon van idegen kulcs
-Adott adatbázistól h miben tárolom
-NULL-->nem információnk h mennyi-->null lehet van jutalma de lehet h nincs nem árulkta el nekünk
-0-->valakinek van jutalma valakinek nincs
------------------------------------------------------------------------------------------------------
SQL(Gyakorlat)
értelmezeni a kell pl.:Create stb.
collacte utf8_hungarian_ci-->akkor vanank értelmezve ha rendezés van betűrendszer szerint-->akkor h milyen ABC vegen figyelmbe-->collacte-->meg lehet adni h miszerint lehgen értelmezve
InnoDB-->táblatípusa
autoicrement=6-->ha van vbenne ez a mezó(autoicrement)-->akkor a következő()
Insert into-->sorok beszúrása(va olyan feladat h vehyük fel sor)
Táblába bele
alt+gr+7-->ezzel csinálok ferde aposztrofot
VALUES-->után konkrét értékek
------------------------------------------------------------
SELECT példák
1.feladat
vannak e miskolci dolgozók?
SELECT * FROM `szemelyek`WHERE telepules="Miskolc"
feladat-->számoljunk valamit megszámolás-->count mindig a számolás
SELECT COUNT(*) as Miskolciak
FROM `szemelyek`
WHERE telepules="Miskolc"
megszámolsá-->ki kell iratni mindig!!!!
select-->leválogatás
select után milyen mezők összes mező *
from-->milyen táblából szertnék
where-->szűrés
2Feladat
OR hazsnálata
mEGSZÁMOLOM HÁNYAL ÉLNEK SZOLNOK ÉS MISKOLCON
SELECT COUNT(*) as `Miskolciak és Szolnokiak`
FROM `szemelyek`
WHERE telepules="Miskolc" OR telepules="Szolnok"
` -->tábla neveket mező neveket as kulcszó neveket is-->akkor van értelme ha szóköz van a szövegben
ha megvan feladat-->txt le kell menteni
r
egy jegyzetömb-->ctrl+c és ctrl+v a
-----------------------------------------------------
AND használata (Logikai ÉS kapcsolat hazsnálata(akkor igaz ha mindegyik igaz különben nem))
Azon miskolciak, nevét szeretném megjeleníteni akiknek a fizetése több mint 650000 ft
SELECT nev
FROM szemelyek
WHERE telepules="Miskolc" AND fizetes>650000
---------------------------------------------------
Miylen besozstások vannak?
SELECT nev FROM beosztasok
---------------------------------------------------
Miylen beosztásai vannak a Miskolciaknak?
inner join-->köt össze
meg kell adni 2 táblába mi az összekapcsoló mezők
SELECT beosztasok.nev
FROM beosztasok
INNER JOIN szemelyek
ON beosztasok.az=szemelyek.beosztasAz
ezekkel összekötöttem a 2 táblát
WHERE szemelyek.telepules="Miskolc"
GROUP BY beosztasok.nev //csoportosítom
--------------------------------------------------
Modosítások
az mezőt azért nem növelem mert automatikusan növeli 1 az értéket-->auto_icrement
Szúrjuk be kettő új beosztást: szabó-->asztalos :
INSERT INTO beosztasok
(nev,leiras)
VALUES
("szabó","ruhákat készít")
INSERT INTO beosztasok
(nev,leiras) -->ez nem kell-->ha pontsoan annyit értéket adok meg amennyi mezőm van
VALUES ("asztalos","asztalokat készít")
másképp
//Update=használom általáéban a SET
INSERT INTO beosztasok
SET
nev="asztalos"
leiras="asztalokat készít";
----------------------------------------------------
Asztalosnak javítsuk ki a leírását, mert ajtókat is csinál//Update
UPDATE beosztasok
SET
leiras="asztalokat és ajtókat készít"
WHERE nev="asztalos"-->FONTOS!!!nagyon fontos h ezzel lehet kiadni//ha nem azzal adom kia kkor mindenhol megfog változni a jelszó globálisan!Többször megnézni!!!!
-----------------------------------------------------
Töröljük Reith Marion-->azonosítóját használjuk
töröljük az 3 azonosítót Rith Mariant
DELETE FROM szemelyek
WHERE az=3
------------------------------------------------------
Kitérő
elsődleges-kulszó 3db van--> ez az összetettkulcs
FOREIGN KEY(szemelyAz) REFERENCES szemly(Az)-->ezzel függöségi viszonyt alakítunk ki!! idegen kulcs összevan kapcsolva személy tábla Az mezőjével -->elsődleges kulcs//-->meg kell nézbni-->
-------------------------------------------------
függvények
count()-->számláljuk meg
sum()-->összegező
avg()--yátlag
min()-->minimum
max()-->maximum kiválasztása
minimum,maximum kiválaztás másként-->sorbarendezek és megjelenítés-->1//sok eredményből egy-->LIMIT 1
----------------------------------------------------
legnagyobb-->desc
Miskolciak összes fizetése
SELECT sum(fizetes) FROM `szemelyek`
WHERE telepules="Miskolc"
---------------------------------------------------
Miskolciak, és szolnokiak fizetése településenként
ként szerepel-->group by
SELECT sum(fizetes)
FROM `szemelyek`
WHERE telepules="Miskolc" OR telepules="Szolnok"
GROUP by telepules
--------------------------------------------------
Szolnokiak átlagfizetése
SELECT AVG(fizetes) FROM `szemelyek`
WHERE telepules="Szolnok"
---------------------------------------------------
Szolnokiak legidősebb dolgozója
SELECT nev, MIN(szuletes)
FROM szemelyek
where telepules="Szolnok"
---------------------------------------------------
hatványozás
SELECT power (3, 2)-->megadja 3 2 hatványát de nem így fogjuk hazsnálni ez csak az elv
Újabb asatbázisban dolgozunk
gyakEgy_v3.sql
testömeg,tesmagasság(kiszámolása)-->átlagos testömegindexet
testTomeg * (testMagassag^2)
Minden emberk testőmeg indexet kiirja
SELECT vezetekNev,keresztNev,testTomeg / power (testMagassag/100, 2)
FROM tanulok
-->akik nagyobb testömeg indexe nagyobb 25-->túlsúlyos
SELECT vezetekNev,keresztNev,testTomeg
FROM tanulok
WHERE testTomeg /
power (testMagassag/100, 2) >25
---------------------------------------------------------
Beszúrásnál ha két tábla kapcsolatban van idegenkulcsal melyikbe szúrok be elsőnek-->mind a két táblába új lesz
1 táblába szúrok és az Idegen kulcsban a másodikba
---------------------------------------------------------
Bevételek
h melyik vállatnak van a legnagyobb bevétele?
beszúrunk bevételeket a piros és kék zrt hez-->beszúrás fülell
Számoljuk ki a legnagyobb összfzetést
SELECT sum(bevetel)
FROM bevetelek
GROUP BY vallalatNev //vállaltonként
azok a vállatok kellnek akik a lgtöbb az össz bevételük-->nem csak egy de nem tudhatjuk hány van
megnézi melyik legnagyobb és abból több van
Feladat
kérdezzük le legnyagyoiob-->beágyazunk egy olyan select-tet ami-->ami megjeleniti ezeket válallatokat-->beátyazot select csak az h melyik a lgnagyobb-->külső select-->ha kijött redmény 62800000-->öszvebételü vállatokat listázza
Megoldás
legnagyobb összbevétü cégek
SELECT vallalatNev,
SUM(bevetel) AS ossz
FROM bevetelek
GROUP BY vallalatNev
HAVING osz=(
SELECT sum(bevetel) FROM bevetelek
GROUP BY vallalatNev
ORDER BY SUM(bevetel)DESC
LIMIT 1)
//KÓD NEM JÓ!!
-----------------------------------------------------
1970 előtt születtek
SELECT nev
FROM szemelyek
WHERE szuletes<"1970-01-01"
SELECT nev
FROM szemelyek
WHERE szuletes<"1970-01-01 08:13:00"
születés év részét venni//születési évre szürünk
......
where year(szuletes) < 1970
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!