<?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.04.21.</id>
	<title>Adatbázisok szerver oldali programozása Előadás, 2006.04.21. - 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.04.21."/>
	<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.04.21.&amp;action=history"/>
	<updated>2026-04-15T00:28:58Z</updated>
	<subtitle>Az oldal laptörténete a wikiben</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_El%C5%91ad%C3%A1s,_2006.04.21.&amp;diff=163852&amp;oldid=prev</id>
		<title>2001:738:2001:2078:0:208:37:0: Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|AdatbServerProgJegyzet20060421}}  &lt;!--  * Set DENYTOPICVIEW = TWikiGuest --&gt;   &lt;style&gt;  	code.pre { white-space: pre; display: block; m…”</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.04.21.&amp;diff=163852&amp;oldid=prev"/>
		<updated>2013-03-31T19:03:55Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|AdatbServerProgJegyzet20060421}}  &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;  	code.pre { white-space: pre; display: block; m…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Valaszthato|AdatbServerProgJegyzet20060421}}&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; &lt;br /&gt;
	code.pre { white-space: pre; display: block; mergin-top: 2px; margin-bottom: 2px; }&lt;br /&gt;
	code.precompact { white-space: pre; display: block; mergin-top: 2px; margin-bottom: 2px; line-height:13px; }&lt;br /&gt;
	li { line-height: 18px; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt; [[AdatbServerProgJegyzet20060418|&amp;amp;lt;&amp;amp;lt;]] Előadás, 2006.04.21. [[AdatbServerProgJegyzet20060425|&amp;amp;gt;&amp;amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Microsoft SQL Server bevezetés==&lt;br /&gt;
&lt;br /&gt;
===Rendszer objektumok és kapcsolataik===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code class=&amp;quot;precompact&amp;quot;&amp;gt;+------=	  * +-----------+ *	  +-------------+=&lt;br /&gt;
&amp;amp;#124; példány |-------|| adatbázis ||-------|| felhasználó &lt;br /&gt;
|}&lt;br /&gt;
+------=		 +-----------+		 +-------------+&amp;lt;/code&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
===Rendszer adatbázisok===&lt;br /&gt;
&lt;br /&gt;
* Master: rendszer szintű információk&lt;br /&gt;
** SQL init adatok&lt;br /&gt;
** többi adatbázis helye&lt;br /&gt;
* TempDB: átmeneti táblák és tárolt eljárások&lt;br /&gt;
* Model: ez alapján jön létre egy új adatbázis&lt;br /&gt;
* MSDB: SQL Server Agent használja&lt;br /&gt;
** figyelmeztetések&lt;br /&gt;
** munkák ütemezése&lt;br /&gt;
&lt;br /&gt;
adat file: *.mdf, *.ndf&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
log file: *.ldf&lt;br /&gt;
&lt;br /&gt;
A rendszer szintű információkat az =sp_= kezdetű tárolt eljárásokkal lehet lekérdezni és müdosítani.&lt;br /&gt;
&lt;br /&gt;
==Identity==&lt;br /&gt;
&lt;br /&gt;
Kulcsgeneráló objektum. 1 táblának legfeljebb 1 identity oszlopa lehet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;CREATE TABLE anyag (&lt;br /&gt;
	anyag_id INT IDENTITY PRIMARY KEY,&lt;br /&gt;
	anyag_nev VARCHAR(50) NOT NULL,&lt;br /&gt;
	lejar DATETIME&lt;br /&gt;
)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Megadható a kulcs kezdőértéke és növekménye is: =IDENTITY(start, incr)=. Default érték: 1-től indul és egyesével nő.&lt;br /&gt;
&lt;br /&gt;
* Beszúrás generált kulccsal: =INSERT INTO anyag VALUES (&amp;#039;cukor&amp;#039;, NULL)=&lt;br /&gt;
* Beszúrás felhasználó által definiált kulccsal: &amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;SET IDENTITY_INSERT anyag ON&lt;br /&gt;
&amp;lt;br/&amp;gt;INSERT INTO anyag(anyag_id, anyag_nev) VALUES(2, &amp;#039;liszt&amp;#039;)&lt;br /&gt;
&amp;lt;br/&amp;gt;SET IDENTITY_INSERT anyag OFF&amp;lt;/code&amp;gt; Az =INSERT= utasításon belül ilyenkor kötelező felsorolni az oszlopokat.&lt;br /&gt;
* Session utoljára generált kulcsának lekérdezése (globális változó, nem táblafüggő): =SELECT @@IDENTITY=&lt;br /&gt;
* Adott táblába utoljára beszúrt kulcs: =IDENT_CURRENT(táblanév)=&lt;br /&gt;
* Identity kezdeti beállításainak lekérdezése: =IDENT_SEED(táblanév)=, =IDENT_INCR(táblanév)=&lt;br /&gt;
&lt;br /&gt;
==SQL Server programozása==&lt;br /&gt;
&lt;br /&gt;
A szerver Transact-SQL (T-SQL) nyelven programozható.&lt;br /&gt;
A végrehajtás batchenként történik, a batcheket =GO= utasítás zárja le. Az utasítások végére nem kell pontosvessző.&lt;br /&gt;
&lt;br /&gt;
===Komment===&lt;br /&gt;
&lt;br /&gt;
* egysoros: =--=&lt;br /&gt;
* többsoros: =/* */=, egymásba ágyazható (az Oracle-ben nem)&lt;br /&gt;
&lt;br /&gt;
===Azonosítók===&lt;br /&gt;
&lt;br /&gt;
* Szabályos: ([A-Z0-9_]|@{1,2}#{1,2})[A-Z0-9_$]*&lt;br /&gt;
** =@=: lokális változó vagy paraméter&lt;br /&gt;
** =@@=: rendszerváltozó vagy -függvény&lt;br /&gt;
** =#=: átmeneti tábla vagy eljárás&lt;br /&gt;
** =##=: globális átmeneti tábla vagy eljárás&lt;br /&gt;
* Delimited: [ ] vagy &amp;quot; &amp;quot; jelek közé kell írni, speciális karaktereket is tartalmazhat&lt;br /&gt;
* Deklaráció: =DECLARE @változónév típus, @változónév típus, ...=&lt;br /&gt;
&amp;lt;br/&amp;gt; Alapértéket nem lehet megadni, a változók &amp;lt;pre&amp;gt;NULL&amp;lt;/pre&amp;gt;-ra inicializálódnak. Változó bárhol deklarálható, nem csak blokk elején.&lt;br /&gt;
* Értékadás:&lt;br /&gt;
** =SET @a = 5=&lt;br /&gt;
** =SET @a = (SELECT ...)=. A =SELECT= 0 vagy 1 soros és 1 oszlopos eredménnyel kell, hogy visszatérjen, különben hiba történik. Ha 0 sorral tér vissza, a változó =NULL= értéket kap.&lt;br /&gt;
** =SELECT @a=oszlop1, @b=oszlop2, ... FROM ...= &lt;br /&gt;
&amp;lt;br/&amp;gt; Ha a =SELECT= 0 sorral tér vissza, &amp;lt;pre&amp;gt;NULL&amp;lt;/pre&amp;gt;-t vesz föl minden változó, több soros eredmény esetén az utolsó sor mezői kerülnek a változókba. A legutolsó SQL utasítás által érintett sorok számát a =@@ROWCOUNT= változó adja vissza.&lt;br /&gt;
&lt;br /&gt;
===Adattípusok===&lt;br /&gt;
&lt;br /&gt;
* Egészek&lt;br /&gt;
** =BIGINT=: 64 bit, előjeles&lt;br /&gt;
** =INT=: 32 bit, előjeles&lt;br /&gt;
** =SMALLINT=: 16 bit, előjeles&lt;br /&gt;
** =TINYINT=: 8 bit, előjel nélküli&lt;br /&gt;
** =BIT=: 0 vagy 1 értékű&lt;br /&gt;
* Fixpontos&lt;br /&gt;
** =DECIMAL=, =NUMERIC=: legfeljebb 38 jegyű&lt;br /&gt;
** =MONEY=, =SMALLMONEY=&lt;br /&gt;
* Lebegőpontos&lt;br /&gt;
** =FLOAT=: 8 byte-os lebegőpontos, 15 számjegy pontosságú&lt;br /&gt;
** =REAL=: 4 byte-os lebegőpontos, 7 számjegy pontosságú&lt;br /&gt;
* Dátum&lt;br /&gt;
** =DATETIME=: 1753. január 1. és 9999. december 31. közötti időpontot tárol&lt;br /&gt;
** =SMALLDATETIME=: 1900. január 1. és 2079. január 6. közötti időpontot tárol&lt;br /&gt;
** Elfogadott dátum formátumok: =&amp;#039;mm/dd/yyyy&amp;#039;=, =&amp;#039;mm-dd-yyyy&amp;#039;=, =&amp;#039;yyyy-mm-dd&amp;#039;=, stb.&lt;br /&gt;
** a =SET DATEFORMAT= utasítással egyéb formátumokban is beolvasható a dátum&lt;br /&gt;
* String&lt;br /&gt;
** =CHAR=, =VARCHAR=: &amp;lt;=8000 byte-os fix/változó hosszúságú string&lt;br /&gt;
** =NCHAR=, =NVARCHAR=: &amp;lt;=8000 byte-os (4000 karakteres) fix/változó hosszúságú unicode string&lt;br /&gt;
** =TEXT=, =NTEXT=: &amp;lt;=2 GB hosszú string, a string műveletek nem alkalmazhatók rá&lt;br /&gt;
** =VARCHAR(MAX)=, =NVARCHAR(MAX)=: &amp;lt;=2 GB hosszú string, string függvények alkalmazhatók rá, az SQL Server 2005-ben jelentek meg.&lt;br /&gt;
** =BINARY=, =VARBINARY=: &amp;lt;=8000 byte-os fix/változó hosszúságú bináris string&lt;br /&gt;
** =IMAGE=: &amp;lt;=2 GB-os bináris string&lt;br /&gt;
* Egyéb&lt;br /&gt;
** =BOOLEAN=: implicit típus, csak kifejezésben lehet használni, nem lehet oszlopnak vagy változónak értékül adni&lt;br /&gt;
** =CURSOR=&lt;br /&gt;
** =SQL_VARIANT=: típus nélküli változó&lt;br /&gt;
** =TABLE=: eredményhalmazt tárol későbbi feldolgozásig&lt;br /&gt;
** =TIMESTAMP=&lt;br /&gt;
** =UNIQUEIDENTIFIER=: globálisan egyedi azonosító&lt;br /&gt;
** =XML=&lt;br /&gt;
&lt;br /&gt;
====Típus precedencia====&lt;br /&gt;
&lt;br /&gt;
Ha egy operátor 2 oldalán különböző típusok állnak, az eredmény a magasabb precedenciájú típus lesz.&lt;br /&gt;
&lt;br /&gt;
=SQL_VARIANT= &amp;gt; =DATETIME= &amp;gt; =SMALLDATETIME= &amp;gt; =FLOAT= &amp;gt; =REAL= &amp;gt; =DECIMAL= &amp;gt; =MONEY= &amp;gt; =SMALLMONEY= &amp;gt; =BIGINT= &amp;gt; =INT= &amp;gt; =SMALLINT= &amp;gt; ... &amp;gt; =NVARCHAR= &amp;gt; =VARCHAR= &amp;gt; =CHAR=&lt;br /&gt;
&lt;br /&gt;
A fenti precedencia sor következménye pl. az, hogy stringet és számot csak típuskonverzió után lehet összefűzni. Castolni a =CONVERT(típusnév[(paraméterek)], érték)= függvénnyel lehet. Pl. =CONVERT(numeric(10,2), 1.23456)=&lt;br /&gt;
&lt;br /&gt;
===Operátorok===&lt;br /&gt;
egy operandusú műveletek: =+=, =-=, =~=&lt;br /&gt;
====operátor precedencia:====&lt;br /&gt;
	1 =+ - ~= előjel&lt;br /&gt;
	2 =* / %=&lt;br /&gt;
	3 =+ -= additív és összefűző&lt;br /&gt;
	4 =&amp;lt; &amp;gt; ...=&lt;br /&gt;
	5 =^ &amp;amp; |=&lt;br /&gt;
	6 =NOT=&lt;br /&gt;
	7 =AND=&lt;br /&gt;
	8 =ALL ANY=&lt;br /&gt;
	9 =SET=&lt;br /&gt;
&lt;br /&gt;
===Batch===&lt;br /&gt;
====Def.:====&lt;br /&gt;
amit egyszerre küldünk a szervernek, utasítások sorozata&lt;br /&gt;
====Kliens:====&lt;br /&gt;
* Query Analyzer (2000)&lt;br /&gt;
* Management Studio (2005)&lt;br /&gt;
====Blokk:====&lt;br /&gt;
batch vagy =BEGIN ... END=&lt;br /&gt;
&lt;br /&gt;
===Vezérlési szerkezetek===&lt;br /&gt;
&lt;br /&gt;
====Feltételes utasítások====&lt;br /&gt;
=IF bool_kif utasítás ELSE utasítás=&lt;br /&gt;
* több utasítás esetén =BEGIN END= közé kell tenni&lt;br /&gt;
=IF (bool értékű SQL utasítás) utasítás ELSE utasítás=&lt;br /&gt;
&lt;br /&gt;
=====Pl.:=====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IF (EXISTS (SELECT * FROM anyag))&lt;br /&gt;
  print(&amp;#039;nem üres&amp;#039;)&lt;br /&gt;
ELSE&lt;br /&gt;
  print(&amp;#039;üres&amp;#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* =THEN= és =ELSE= ágban ugyan arra a táblára kell vonatkoznia a =CREATE TABLE= ill. a =SELECT= utasításoknak&lt;br /&gt;
&lt;br /&gt;
====Ciklus====&lt;br /&gt;
=WHILE bool_kifejezés utasítás=&lt;br /&gt;
* kilépes: =BREAK=&lt;br /&gt;
* folytatás: =CONTINUE=&lt;br /&gt;
====Ugrás====&lt;br /&gt;
=GOTO címke=&lt;br /&gt;
* címke def.: =cimke:=&lt;br /&gt;
* =RETURN=&lt;br /&gt;
====Várakozás====&lt;br /&gt;
=WAIT FOR {DELAY idő | TIME időpont}=&lt;br /&gt;
====Case függvény====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CASE bemeneti kif.&lt;br /&gt;
	WHEN kif. THEN kif.&lt;br /&gt;
	...&lt;br /&gt;
	[ELSE kif.]&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=====Pl.:=====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT CASE egyseg_nev&lt;br /&gt;
			 WHEN &amp;#039;l&amp;#039; THEN &amp;#039;liter&amp;#039;&lt;br /&gt;
			 WHEN &amp;#039;dl&amp;#039; THEN &amp;#039;deci&amp;#039;&lt;br /&gt;
			 ELSE egyseg_nev&lt;br /&gt;
		 END egysnev&lt;br /&gt;
FROM anyag&lt;br /&gt;
ORDER BY egysnev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ha nem, tud illeszteni és nincs ELSE-ág akkor =NULL= lesz az eredmény&lt;br /&gt;
====Searched case:====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CASE &lt;br /&gt;
	WHEN bool_kif THEN kif.&lt;br /&gt;
	...&lt;br /&gt;
	[ELSE kif.]&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[PallosPeter|Peti]] - 2006.04.25.&lt;br /&gt;
-- [[StMa|Matyi]] - 2006.07.03.&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>