<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_El%C5%91ad%C3%A1s%2C_2006.02.17.</id>
	<title>Adatbázisok szerver oldali programozása Előadás, 2006.02.17. - Laptörténet</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_El%C5%91ad%C3%A1s%2C_2006.02.17."/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_El%C5%91ad%C3%A1s,_2006.02.17.&amp;action=history"/>
	<updated>2026-05-16T17:55:04Z</updated>
	<subtitle>Az oldal laptörténete a wikiben</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_El%C5%91ad%C3%A1s,_2006.02.17.&amp;diff=163818&amp;oldid=prev</id>
		<title>2001:738:2001:2078:0:208:37:0: Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|AdatbServerProgJegyzet20060217}}  &lt;!--  * Set DENYTOPICVIEW = TWikiGuest --&gt;   &lt;style&gt; ol li { line-height: 18px; } &lt;/style&gt;  &lt;br/&gt; [[A…”</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_El%C5%91ad%C3%A1s,_2006.02.17.&amp;diff=163818&amp;oldid=prev"/>
		<updated>2013-03-31T19:03:00Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|AdatbServerProgJegyzet20060217}}  &amp;lt;!--  * Set DENYTOPICVIEW = &lt;a href=&quot;/index.php?title=TWikiGuest&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;TWikiGuest (a lap nem létezik)&quot;&gt;TWikiGuest&lt;/a&gt; --&amp;gt;   &amp;lt;style&amp;gt; ol li { line-height: 18px; } &amp;lt;/style&amp;gt;  &amp;lt;br/&amp;gt; [[A…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Valaszthato|AdatbServerProgJegyzet20060217}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
* Set DENYTOPICVIEW = [[TWikiGuest]]&lt;br /&gt;
--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt; ol li { line-height: 18px; } &amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt; [[AdatbServerProg|&amp;amp;lt;&amp;amp;lt;]] Előadás, 2006.02.17. [[AdatbServerProgJegyzet20060221|&amp;amp;gt;&amp;amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Kliens-szerver architektúra==&lt;br /&gt;
* Kliens: üzleti logika és megjelenítés&lt;br /&gt;
* Szerver: adatbázis&lt;br /&gt;
&lt;br /&gt;
* Előny: kevés kommunikáció&lt;br /&gt;
* Hátrány: ha az üzleti logika megváltozik, minden klienst cserélni kell&lt;br /&gt;
&lt;br /&gt;
==n-rétegű architektúra==&lt;br /&gt;
* Presentation Layer&lt;br /&gt;
* Business Logic Layer&lt;br /&gt;
* Data Access Layer&lt;br /&gt;
* Database -&amp;gt; mi csak ezzel foglalkozunk&lt;br /&gt;
&lt;br /&gt;
===Előnyök===&lt;br /&gt;
* rugalmasabban módosítható&lt;br /&gt;
* DAL miatt a DB cserélhető&lt;br /&gt;
* skálázható&lt;br /&gt;
===Hátrányok===&lt;br /&gt;
* bonyolultabb&lt;br /&gt;
* több kommunikáció&lt;br /&gt;
* interfészeket előre definiálni kell&lt;br /&gt;
&lt;br /&gt;
==Szerver oldali programozás==&lt;br /&gt;
* Tárolt eljárások és függvények&lt;br /&gt;
* Triggerek = eseményre automatikusan lefutó tárolt eljárások. Esemény alatt mást értünk Oracle és MS SQL alatt.&lt;br /&gt;
&lt;br /&gt;
===Tárolt eljárások===&lt;br /&gt;
&lt;br /&gt;
====Előnyök====&lt;br /&gt;
* Teljesítmény&lt;br /&gt;
** Szerveren lefordítva tárolódnak&lt;br /&gt;
** Több szál ugyanazt a memóriát használja&lt;br /&gt;
** Kisebb hálózati forgalom&lt;br /&gt;
** BLL-ben kevesebb funkció, jobban skálázható (rossz is lehet, mert a szervert terheljük)&lt;br /&gt;
* Kevésbé redundáns kódolás&lt;br /&gt;
* Biztonságos jogosultságkezelés a szerveren: felhasználó jogosultsága csak a tárolt eljárások futtatására korlátozható&lt;br /&gt;
* karbantarthatóság: ha csak a szervert módosítjuk, a klienst nem kell újrafordítani&lt;br /&gt;
 &lt;br /&gt;
====Hátrányok====&lt;br /&gt;
* Szervert terheljük&lt;br /&gt;
* Nem szabványos&lt;br /&gt;
&lt;br /&gt;
==SQL szintaktika==&lt;br /&gt;
&lt;br /&gt;
===Alap típusok===&lt;br /&gt;
* =int=&lt;br /&gt;
* =varchar(20)=: változó hosszú string&lt;br /&gt;
* =nvarchar(20)=: változó hosszú unicode string&lt;br /&gt;
* =char(20)=: fix hosszú string&lt;br /&gt;
* =nchar(20)=: fix hosszú unicode string&lt;br /&gt;
* =date= vagy =datetime=&lt;br /&gt;
* =float=&lt;br /&gt;
* =bit= (csak MS SQL-ben)&lt;br /&gt;
&lt;br /&gt;
===Tábla létrehozása===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CREATE TABLE táblanév (&lt;br /&gt;
	{ oszlopdef | tábla szintű megkötés }*&lt;br /&gt;
)&lt;br /&gt;
oszlopdef: oszlopnév típus [oszlopszintű megkötés]&lt;br /&gt;
oszlopszintű megkötés:&lt;br /&gt;
	NULL | NOT NULL	// default: NULL&lt;br /&gt;
	[CONSTRAINT megkötésnév]&lt;br /&gt;
		PRIMARY KEY&lt;br /&gt;
		UNIQUE&lt;br /&gt;
		REFERENCES tábla(oszlop)&lt;br /&gt;
		CHECK(feltétel)	// a feltételben csak a saját oszlopnév szerepelhet&lt;br /&gt;
táblaszintű megkötés:&lt;br /&gt;
	CONSTRAINT név&lt;br /&gt;
		PRIMARY KEY (oszlopnév1, oszlopnév2, ...)&lt;br /&gt;
		UNIQUE (oszlopnév1, oszlopnév2, ...)&lt;br /&gt;
		FOREIGN KEY (oszlopnév1, ... oszlopnévn) REFERENCES táblanév(oszlopnév1, ... oszlopnévn)&lt;br /&gt;
		CHECK (több oszlopot tartalmazó logikai kifejezés&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tábla módosítása===&lt;br /&gt;
&amp;lt;pre&amp;gt;ALTER TABLE&lt;br /&gt;
	ADD { oszlopdef | tábla szintű megkötés }&lt;br /&gt;
	DROP, stb.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Lekérdezés===&lt;br /&gt;
&amp;lt;pre&amp;gt;SELECT [ALL|DISTINCT] oszloplista	// default: all&lt;br /&gt;
FROM táblalista&lt;br /&gt;
[WHERE keresési feltétel]&lt;br /&gt;
[GROUP BY csoportosítási kifejezés&lt;br /&gt;
	[HAVING csoport feltétel]]&lt;br /&gt;
[ORDER BY oszlop [ASC|DESC]]	// default: ASC&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Táblák összekapcsolása====&lt;br /&gt;
# Descartes-szorzat &lt;br /&gt;
&amp;lt;br/&amp;gt; =SELECT * FROM t1,t2=&lt;br /&gt;
# =WHERE= mögött id-k alapján &lt;br /&gt;
&amp;lt;br/&amp;gt; =SELECT * FROM t1,t2 WHERE t1.id=t2.t1_id=&lt;br /&gt;
# =JOIN= kulcsszó &lt;br /&gt;
&amp;lt;br/&amp;gt; =SELECT * FROM t1 JOIN t2 ON t1.id=t2.t1_id= &lt;br /&gt;
&amp;lt;br/&amp;gt; Állítólag gyorsabb, de a jobb olvashatóság miatt a 2. változatot szokták használni.&lt;br /&gt;
# =NATURAL JOIN= &lt;br /&gt;
&amp;lt;br/&amp;gt; =SELECT * FROM t1 NATURAL JOIN t2= &lt;br /&gt;
&amp;lt;br/&amp;gt; A két tábla közötti referenciánál illeszt.&lt;br /&gt;
# Beágyazott =SELECT= a tábla helyén &lt;br /&gt;
&amp;lt;br/&amp;gt; =SELECT * FROM t1, (SELECT * FROM t2) a WHERE a.id=t1.a_id=&lt;br /&gt;
# Beágyazott =SELECT= a =WHERE= mögött &lt;br /&gt;
&amp;lt;br/&amp;gt; =SELECT * from t1 WHERE t1_id IN (SELECT id FROM t2)=&lt;br /&gt;
&lt;br /&gt;
====GROUP BY====&lt;br /&gt;
&lt;br /&gt;
Oszlopfüggvények: =MIN=, =MAX=, =SUM=, =COUNT=, =AVG=.&lt;br /&gt;
&lt;br /&gt;
* Legjobban megfizetett alkalmazott: &lt;br /&gt;
&amp;lt;br/&amp;gt; =SELECT MAX(fizetés) FROM alkalmazott=&lt;br /&gt;
* Minden tanszékről a legjobban megfizetett alkalmazott: &lt;br /&gt;
&amp;lt;br/&amp;gt; =SELECT tanszék, MAX(fizetés) FROM alkalmazott GROUP BY tanszék=&lt;br /&gt;
* Azok a tanszékek, ahol a legjobb fizetés 200000 fölött van + a fizetés értéke: &lt;br /&gt;
&amp;lt;br/&amp;gt; =SELECT tanszék, MAX(fizetés) maxfizu FROM alkalmazott &lt;br /&gt;
&amp;lt;br/&amp;gt; GROUP BY tanszék HAVING MAX(fizetés)&amp;gt;200000= &lt;br /&gt;
&amp;lt;br/&amp;gt; (A =HAVING= után nem használható az oszlopok új neve (itt: maxfizu))&lt;br /&gt;
* Ha a =SELECT= oszlopfüggvényt tartalmaz, a =GROUP BY= után szerepelnie kell minden olyan oszlopnak, ami a &amp;lt;pre&amp;gt;SELECT&amp;lt;/pre&amp;gt;-ben oszlopfüggvény kívül szerepelt.&lt;br /&gt;
&lt;br /&gt;
====Halmazműveletek====&lt;br /&gt;
&lt;br /&gt;
* =UNION=&lt;br /&gt;
* =UNION ALL=&lt;br /&gt;
* =INTERSECT= (Az SQL Server 2000 nem támogatja, csak a 2005)&lt;br /&gt;
* =MINUS= (Az SQL Server 2000 nem támogatja, csak a 2005)&lt;br /&gt;
-- [[PallosPeter|Peti]] - 2006.02.21.&lt;br /&gt;
&lt;br /&gt;
===Beszúrás===&lt;br /&gt;
&lt;br /&gt;
* =INSERT INTO tábla (oszlop1, oszlop2, ...) VALUES (érték1, érték2, ...)=&lt;br /&gt;
* =INSERT INTO tábla (oszlop1, oszlop2, ...) SELECT (oszlop1, oszlop2, ...) ...=&lt;br /&gt;
&lt;br /&gt;
====Azonosító generálás====&lt;br /&gt;
&lt;br /&gt;
* SQL Server&lt;br /&gt;
** Létrehozás: =CREATE TABLE a (id INT IDENTITY PRIMARY KEY, szoveg VARCHAR(20))=&lt;br /&gt;
** Beszúrás: =INSERT INTO a VALUES(&amp;#039;abc&amp;#039;)=&lt;br /&gt;
** Beszúrás nem automatikusan generált id-vel: &lt;br /&gt;
&amp;lt;br/&amp;gt; =SET IDENTITY_INSERT a ON= &lt;br /&gt;
&amp;lt;br/&amp;gt; =INSERT INTO a(id,szoveg) VALUES(3, &amp;#039;cde&amp;#039;)= &lt;br /&gt;
&amp;lt;br/&amp;gt; =SET IDENTITY_INSERT a OFF=&lt;br /&gt;
* Oracle&lt;br /&gt;
** Szekvencia létrehozása (különálló objektum, nem kapcsolódik táblához): &lt;br /&gt;
&amp;lt;br/&amp;gt; =CREATE SEQUENCE a_seq START WITH 1 INCREMENT BY 1=&lt;br /&gt;
** Beszúrás: =INSERT INTO a VALUES(a_seq.NEXTVAL, &amp;#039;abc&amp;#039;)=&lt;br /&gt;
** Beszúrás a szekvencia aktuális értékével: &lt;br /&gt;
&amp;lt;br/&amp;gt; =INSERT INTO a VALUES(a_seq.CURVAL, &amp;#039;abc&amp;#039;)=&lt;br /&gt;
&lt;br /&gt;
===Módosítás===&lt;br /&gt;
&lt;br /&gt;
* =UPDATE táblanév SET oszlop1=érték1, oszlop2=érték2, ... [WHERE feltétel]=&lt;br /&gt;
* Több táblás módosítás:&lt;br /&gt;
** SQL Server: =FROM= kulcsszóval&lt;br /&gt;
** Oracle: al-&amp;lt;pre&amp;gt;SELECT&amp;lt;/pre&amp;gt; segítségével&lt;br /&gt;
&lt;br /&gt;
===Törlés===&lt;br /&gt;
&lt;br /&gt;
* =DELETE FROM táblanév [WHERE feltétel]= &lt;br /&gt;
&amp;lt;br/&amp;gt; Ha nincs feltétel megadva, az egész táblát törli.&lt;br /&gt;
* =TRUNCATE táblanév= == =DELETE FROM táblanév=. Az előbbi gyorsabb.&lt;br /&gt;
&lt;br /&gt;
===Nézet létrehozása===&lt;br /&gt;
&lt;br /&gt;
* =CREATE VIEW nézetnév(oszlop1, oszlop2, ...) AS lekérdezés=&lt;br /&gt;
* Egy táblás nézetbe be lehet szúrni sorokat, több tábla esetén csak triggerekkel lehet trükközni.&lt;br /&gt;
&lt;br /&gt;
-- [[PallosPeter|Peti]] - 2006.02.21.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Valaszthato]]&lt;/div&gt;</summary>
		<author><name>2001:738:2001:2078:0:208:37:0</name></author>
	</entry>
</feed>