Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Adatbázisok / SQL v 2.1 Viczián Gergely (eredeti: Török János 2004)

Hasonló előadás


Az előadások a következő témára: "Adatbázisok / SQL v 2.1 Viczián Gergely (eredeti: Török János 2004)"— Előadás másolata:

1 Adatbázisok / SQL v 2.1 Viczián Gergely (eredeti: Török János 2004)

2 Útiterv az első 45 percre  Egy kis adatbázis történelem  Relációs Adatbázis-kezelők  Mi az SQL?  SQL alapjai  parancsok  lekérdezés  lekérdezési terv  variációk (Lotus, Access)  Közkívánatra: XML  Adatbiztonság

3 Az adatbázisok története  „data base” 1963 (~data bank)  Charles Bachman – szekv. feldolg. felváltása  1970 E. F. Codd 12 szabálya relációs model  1978 CP/M →MsDOS (Vulcan → dBASE)  1979 Oracle 2 (RDBMS)  1981 Tate és Lashlee dBASE-II PC assembly  1984 dBASE-III (89 / 92 / 99 modosítások)  1986 SQL ANSI és ISO szabvány lesz  XML ~ adatbázis

4 Relációs adatbáziskezelők „RDBMS”  Edgar Frank „Tedd” Codd szabályai 0. Reláció kizárólag csak kezelésre 1. Az egységes megjelenésű információ szabálya (tábla) 2. Garantált lokalizálhatóság szabálya (tábla, oszlop, sor/kulcs) 3. A NULL értékek egységes kezelése (mező lehessen "üres") 4. Dinamikus szerkezetleírás (maga a séma is adatbázis) 5. A teljeskörű „adatnyelv” szabálya (lineáris, interaktív, adat: SQL) 6. A nézetek frissítésének szabálya (valósidejű manipulálás: nincs) 7. Magas szintű beszúrás, frissítés és törlés (sok adat egyidejűleg) 8. Fizikai szintű adatfüggetlenség 9. Logikai szintű adatfüggetlenség (nehéz megvalósítani) 10. Jóság (integritás) függetlenség (adatkorlát, jóság kezelése) 11. Elosztástól való függetlenség (változások, lekérdezések) 12. Megkerülhetetlenség szabálya (alacsony szintű megkerülés)

5 dBASE USE bertabla REPLACE ALL fizetes WITH fizetes * 1.1 FOR vezeto > 0 LIST ALL nev, beosztas, fizetes TO PRINT

6 Relációs adatbázis  Relációs adatmodell (Codd szabályok) alapján létrehozott adatbázis részei:  Felhasználók, jogosultsági rendszerek  Táblák  Nézetek  Indexek (bináris fa)  Megszorítások  Eljárások, függvények  Triggerek Azonos szerkezetű rekordok: táblázat minden oszlop rögzített típusú alap, vagy null érték Automatikus programok változások véglegesítése üres mezők kitöltése integritás biztosítása indexek létrehozása dialektus, más programnyelv

7 SQL  Structured Query Language  Általános leíró nyelv adatbázis elérésére, módosítására  Relációs adatbázis kezelők elterjedt nyelve  ANSI szabvány…  Sokféle programtámogatás:  Visual Basic (MsSQL)  Java  PL/SQL  ACCESS  php (MySQL) A dBASE nem SQL!

8 Az SQL alapjai 1.  Lekérdezés  (CREATE VIEW) SELECT  Adatmanipuláció  UPDATE  DELETE  INSERT INTO  Adatleírás  CREATE TABLE  ALTER TABLE  DROP TABLE  CREATE INDEX  DROP INDEX Az olvashatóság miatt írjuk nagybetűvel a parancsokat COMMIT/ROLLBACK

9 AZ SQL alapjai 2.  Lekérdezés SELECT [any/distinct all/distinct/top/distinctrow] { oszlopok } [AS alias1, alias2,…] FROM táblakifejezés [,…] [IN külső adatbázis] [INNER/LEFT/RIGHT JOIN …] [WHERE ….] [GROUP BY …] [HAVING…] [ORDER BY…] [WITH OWNERACCESS OPTION] nincs/van ismétlődés van/nincs ismétlődés/első n/ nincs dupla sor Amire kíváncsiak vagyunk Megjelenített táblázat fejléccíme Lehet az oszlopok után is írni Táblázat/ok Csak ACCESS, a vizuális összekapcsolás miatt Szűrési feltétel Csoportosítás (összeg, átlag) Csoportosítás utáni szűrési feltétel Az eredmény rendezését adja meg

10 Példa SELECT Fokonyv_2K4.Sorsz, Fokonyv_2K4.Datum, Fokonyv_2K4.[Brutto(Tart)], Fokonyv_2K4.[Brutto(Kov)], Fokonyv_2K4.[KP/Bank], [Brutto(Tart)]-[Brutto(Kov)] AS akt FROM Fokonyv_2K4 WHERE (((Fokonyv_2K4.Datum)<=[vegnap]));

11 Összetettebb példa Összetettebb példa SELECT SQL_CALC_FOUND_ROWS base.actiroleID AS col0, actiID, actiName AS col1, actiState AS col3, wbseID, wbseName AS col4, flowID, flowName AS col6, actiPriority AS col8, atypAbr AS col9, actiID AS col10, IF(ISNULL(actiRealStart) OR actiRealStart=' ',actiPlannedStart,actiRealStart) AS col11, actiPlannedEnd AS col12, IF(ISNULL(actiPlannedEnd) OR actiPlannedEnd=' ','',IF((ISNULL(actiRealEnd) OR actiRealEnd=' ') AND actiPlannedEnd>=CURRENT_DATE,'',TO_DAYS(IF(ISNULL(actiRealEnd) OR actiRealEnd=' ',CURRENT_DATE,actiRealEnd))- TO_DAYS(actiPlannedEnd))) AS col13 FROM TQactirole as base left join TQacti AS acti on (actiID=base.actiroleActiID) left join TQwbse AS wbse on (wbseID=actiWbseID) left join TQflow AS flow on (wbseFlowID=flowID) left join TQatyp AS atyp on (atypID=actiATypID) WHERE actiWbseID>-1 and (flowFCatID 2) OR (3=4 AND actiState<>0)) GROUP BY actiID ORDER BY col12 asc LIMIT 0,30

12 SQL hátrányai...  Nem igazi relációs adatbázis modell  A szintaxis komplikált  Sokszor igen hosszú parancsok születnek, amelyek nehezen törhetők darabokra  A különböző implementációk kicsit eltérnek egymástól (pl. Oracle és Access)  Ékezetes problémák bizonyos megvalósításokban

13 Lekérdezési terv  A keresés végeredményét általában tovább analizáljuk  Lekérdezési terv  A kapott halmazt (eredmények különböző táblákból) egy kurzor segítségével tudjuk tovább olvasni

14

15 Fontosabb különbségek  Adattípusok  NUMERIC-NUMBER  DATE  Oracle-ben dátum és idő is, máshol csak dátum  időnként van nem standard típus is  Gyors keresésnél néha csak pontos találat lehetséges, míg máshol nem  Helyettesítések (%_ (Oracle) *?#[a-z](Access))  Programozási kiterjesztések

16 Programozás  Visual Basic for ACCESS Sub test() Dim s As String s=”SELECT ….” DoCmd.RunSQL s End Sub  Flexibilis lekérdezések formokkal!

17 $db = mysql_pconnect('localhost', 'root', ''); if (!$db) {echo 'Nem konnektál!'; exit;}mysql_select_db('gergo'); $q = "SELECT tartuser.userid as uid, tartuser.nev, sum( tartitem.osszeg ) as ossz, max( tartitem.datum ) as utolso"." FROM tartuser, tartitem"." WHERE tartitem.userid = tartuser.userid"." GROUP BY tartitem.userid"." ORDER BY ossz desc"; $res = mysql_query($q); $n = mysql_num_rows($res); $ossz=0; echo ' '; echo ‘ Név '; echo ' Tart '; echo ' Utsó '; echo ' '; for ($i=0;$i<$n; $i++) { $row = mysql_fetch_array($res); if($row['ossz']!=0) { echo ' '; echo ' '.$row['nev']‘; echo ‘ '; echo ' '.$row['ossz'].' '; $ossz+=$row['ossz']; echo ' '.substr($row['utolso'],5).' '; }} echo " Összesen: $ossz ";

18 XML = eXtensible Markup Language no; surname; firstname 1; Goulson; Phil 2; Pooley; Joanna 3; Jack; Angus 4; Parsons-Hann; Wendy 5; Jenkinson; Debra 6; Jenkinson; Jon 7; Wintringham; Ben 8; Scott; Steve Goulson Phil Pooley Joanna Jack Angus : Scott Steve Elemek Kezdő "tag" Tartalom Záró "tag" Attribútumok Név Érték

19 Egyszeru kenyer Liszt Eleszto Viz So Gyúrd össze az összetevőket egyenletesen Takard le ruhával és hagyd kelni egy órán keresztül Gyúrd át újra majd tegyed forró sütőbe két órára DOM=Document Object Model (bejárható)DOM=Document Object Model (bejárható) SAX=Simple API for XML (eseményvezérelt)SAX=Simple API for XML (eseményvezérelt) Mire jó? Mire jó? RSS, INI, kis adatbázis, oldalleírás, adatcsere...

20 Adatbiztonság  Az adatbázis feladata  minden esemény naplózása  összeomlás után automatikus helyreállás  hibás adatok kiszűrése  Rendszergazda/főnök feladata  biztonsági másolat készítése  jogosultságok beállítása/ellenőrzése  biztonsági frissítések figyelése, különösen webes alkalmazásnál  auditálás


Letölteni ppt "Adatbázisok / SQL v 2.1 Viczián Gergely (eredeti: Török János 2004)"

Hasonló előadás


Google Hirdetések