Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaSzebasztián Barna Megváltozta több, mint 10 éve
1
Adatbázisok-SQL Dr. Viczián Gergely (Dr. Török János V2.0)
2
Tartalom 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) 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 Vulcan CP/M (dBASE) 1979 Oracle 2 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 + dokumentum
4
Relációs adatbáziskezelők „RDBMS”
Edgar Frank „Tedd” Codd szabályai 0. Reláció kizárólag csak kezelésre Az egységes megjelenésű információ szabálya Garantált lokalizálhatóság szabálya (tábla, oszlop, sor/kulcs) A NULL értékek egységes kezelése (egységes) A rel. modell alapján aktív online katalógust kell üzemben tartani A teljeskörű „adatnyelv” szabálya (lineáris, interaktív, adat) A nézetek frissítésének szabálya Magas szintű beszúrás, frissítés és törlés (egyidejű) Fizikai szintű adatfüggetlenség Logikai szintű adatfüggetlenség Jóság (integritás) függetlenség (adatkorlát, jóság kezelése) Elosztástól való függetlenség (változások, lekérdezések) 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
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
9
Az SQL alapjai 1. Lekérdezés Adatmanipuláció Adatleírá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
10
AZ SQL alapjai 2. Lekérdezés
Amire kíváncsiak vagyunk 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 Megjelenített táblázat fejléccíme van/nincs ismétlődés/első n/ nincs dupla sor Lehet az oszlopok után is írni Csak ACCESS, a vizuális összekapcsolás miatt Táblázat/ok 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
11
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]));
12
Ö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<1 or ISNULL(flowFCatID)) AND (base.actiroleRoleID IN ('22')) AND (ISNULL(actiPlannedEnd) OR actiPlannedEnd<=CURDATE()+INTERVAL 7 DAY) AND (actiState='3' OR (3=3 AND actiState<>2) OR (3=4 AND actiState<>0)) GROUP BY actiID ORDER BY col12 asc LIMIT 0,30
13
Lekérdezési terv A keresés végeredményét általában tovább analizáljuk
A kapott halmazt (eredmények különböző táblákból) egy kurzor segítségével tudjuk tovább olvasni
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 sztenderd 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 Flexibilis lekérdezések formokkal!
Sub test() Dim s As String s=”SELECT ….” DoCmd.RunSQL s End Sub Flexibilis lekérdezések formokkal!
17
PHP @ $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 '<table border=1>'; echo ‘<tr><td>Név</td>'; echo '<td>Tart</td>'; echo '<td>Utsó</td>'; echo '</tr>'; for ($i=0;$i<$n; $i++) { $row = mysql_fetch_array($res); if($row['ossz']!=0) { echo '<tr>'; echo '<td><a href=user.php?id='.$row['uid'].'&wr=1>'.$row['nev']‘; echo ‘</a></td>'; echo '<td>'.$row['ossz'].'</td>'; $ossz+=$row['ossz']; echo '<td>'.substr($row['utolso'],5).'</td></tr>'; echo "<tr><td>Összesen:</td><td>$ossz</td><td></td></tr>";
18
Adatbiztonság Az adatbázis feladata Rendszergazda/főnök 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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.