SQL nyelv Táblák összekapcsolása. Táblák összekapcsolása



Hasonló dokumentumok
Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

SQL parancsok feldolgozása

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

Adatbázis-kezelés. Harmadik előadás

B I T M A N B I v: T M A N

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Adattípusok. Max. 2GByte

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Adattípusok. Max. 2GByte

Adatbázisok elmélete 10. előadás

Bevezetés: az SQL-be

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

Adatbázis rendszerek SQL nyomkövetés

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

Adatbázisok elmélete 9. előadás

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Adatbázis-kezelés, információs-rendszerek

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

Adatbázisok elmélete 9. előadás

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

SQL DDL-1: táblák és megszorítások

Adatbázis-kezelés alapok Adatbázisok című tárgyhoz, ismétlés kapcsán

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Adatbázis kezelés Delphiben. SQL lekérdezések

BEVEZETÉS Az objektum fogalma

Relációsémák létrehozása SQL nyelvben

Adatbázis használat I. 5. gyakorlat

Adatbázisok* tulajdonságai

Adatbázis Rendszerek II. 8. Gyakorló környezet

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv).

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Vizuális programozás gyakorlat

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Több tábla összekapcsolásán alapuló lekérdezések

Többtáblás lekérdezések megjelenítése

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Adatbázis Rendszerek II. 3. SQL alapok

3. Előadás. Az SQL adatbázisnyelv (Tartalom) Az SQL története. Az SQL felépítése. Adattípúsok. SQL utasítások

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Készítette: Szabóné Nacsa Rozália

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

SQLServer. SQLServer konfigurációk

Webfejlesztés 4. alkalom

Több tábla összekapcsolásán alapuló lekérdezések. Copyright 2004, Oracle. All rights reserved.

Adatbázis I. 11. előadás. Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok.

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

B I T M A N B I v: T M A N

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

Java és web programozás

Java és web programozás

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

SELECT DISTINCT deptno FROM emp; (distinct) SELECT STATEMENT HASH UNIQUE TABLE ACCESS FULL EMP

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Elemi alkalmazások fejlesztése IV.

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Az SQL adatbázisnyelv: DML

Adatbázis tartalmának módosítása

Tranzakciókezelés PL/SQL-ben

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Adatbázis rendszerek. dr. Siki Zoltán

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Adatbázis, adatbázis-kezelő

Adatbázis-kezelés alapjai SQL 1: DDL, DML. v: B IT MAN 92/1B IT MAN

SQL DDL: Táblák, megszorítások (constraints), triggerek, nézettáblák

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Adatbázis-kezelés. Második előadás

ADATBÁZIS RENDSZEREK I BEADANDÓ

MySQL. Elektronikus jegyzet Széchenyi István Egyetem Távközlési tanszék

LBRA6i integrált rendszer

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Lekérdezések az SQL SELECT utasítással

Adatbázisok tavaszi félév Vizsgatételsor

Adatbázis rendszerek Gy: MySQL alapok

INTEGER egész típusú érték megadása, hozzá hasonló, de számábrázolási tartományában eltérő típus még a SMALLINT, szinonimája a DECIMAL

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:


B I T M A N B I v: T M A N

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

6.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Átírás:

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Adatbázisok I Módosítás: DML: - rekord felvitel INSERT - rekord törlés DELETE - rekord módosítás UPDATE Lekérdezés: DQL: - lekérdezés SELECT Vezérlés DCL: - védelem GRANT,.. - tranzakció kezelés COMMIT,.. 2 SQL nyelv Táblák összekapcsolása A normalizálási folyamat általában sok táblára bont szét egy adatstruktúrát Gyakori az a helyzet, hogy egy táblában nem áll rendelkezésre egy lekérdezéshez szükséges összes információ, ilyenkor több táblából kell az adatokat összegyűjteni Ehhez az SQL a JOIN, azaz összekapcsolás művelet különböző változataival nyújt segítséget Táblák összekapcsolása A JOIN művelet a két vagy több tábla rekordjaiknak az eredménytáblában történő összekapcsolását jelenti, a legtöbbször egy vagy több kapcsoló mező (Join Field)értékegyezősége alapján kapcsolja össze a két tábla rekordjait. 3 4 1

A JOIN típusai A Táblák közti összekapcsolás módozatait mindig a lekérdezés FROM részében adjuk meg: Az összekapcsolás bal oldali táblájának (Left Side Table) nevezzük a FROM részben elsőként hivatkozott táblát. Az összekapcsolás jobb oldali táblájának (Right Side Table) nevezzük a FROM részben másodikként hivatkozott táblát. A lekérdezések túlnyomó részében a bal és jobb oldalon két különböző tábla található. Előfordulhat, hogy a bal és a jobb oldali tábla azonos, mert egy táblát és a rá hivatkozó aliast-t csatoljuk össze. Ez általában önmagára visszamutató relációk mentén történő lekérdezésekben szerepel. SQL nyelv Táblák összekapcsolása Descartes szorzat: SELECT * FROM táblanév1, táblanév2 Vagy SELECT * FROM táblanév1 CROSS JOIN táblanév2 Az eredményhalmaz sorainak száma= táblanév1.sorainakszama*táblanév2.sorainakszama Belső összekapcsolás (Theta összekapcsolás) INNER JOIN művelet SELECT * FROM tabla1 INNER JOIN tabla2 ON tabla1.attribútum1 = tabla2.attribútum2; Kapcsoló mezők 5 6 INNER JOIN Táblák összekapcsolása Egy vagy több mező egyezése alapján kapcsolja össze a rekordokat, de csak azokat, amelyben a JOIN operátorban megadott mezők egyeznek. Táblák összekapcsolása Reláció aliasok SELECT alias.attribútum FROM relació [AS] alias; Tábla összekapcsolása önmagával SELECT alias1.attribútum1, alias2.attribútum2, FROM reláció [AS] alias1, reláció AS alias2; 7 8 2

SQL SELECT - a join megadása AUTÓ rsz tulaj r1 r4 r6 3 1 4 EMBER id név 1 2 3 4 SELECT mlista FROM tabla1, tabla2,.. WHERE feltétel; Laci Ágota János Zoltán összekapcsolás rsz tulaj id név r1 r4 r6 r1 r4 r6 r1 r4 r6 r1 r4 r6 3 1 4 3 1 4 3 1 4 3 1 4 1 Laci 1 Laci 1 Laci 2 Ágota 2 Ágota 2 Ágota 3 János 3 János 3 János 4 Zoltán 4 Zoltán 4 Zoltán Ha a feltétel elmarad Descartes szorzatot kapunk Kettőnél több tábla is összekapcsolható SQL Szelekciós join: SELECT * FROM AUTO, EMBER WHERE TULAJ = ID; Ha több táblában is azonos elnevezésű mező van, akkor a kibővített mezőnevet használjuk: tábla.mező SELECT * FROM AUTO, EMBER WHERE AUTO.TULAJ = EMBER.ID; Ha hosszú a táblanév alias nevet használhatunk: SELECT * FROM AUTO A, EMBER E WHERE A.TULAJ = E.ID; tábla alias 9 10 Alkalmazott tábla (emp) Descartes szorzat Listázzuk ki az egyes részlegeken dolgozó alkalmazottakat! SELECT emp.ename as név, dept.dname "Részleg neve" FROM emp, dept Vagy : SELECT emp.ename as név, dept.dname "Részleg neve" FROM EMP Cross JOIN DEPT... Fizetési kategóriák (Salgrade tábla) Részlegek (osztályok; department) NEM ÍGY GONDOLTUK! Eredmény sorainak száma 14*5=70 11 12 3

Egy feltétel megadásával már jó eredményt kapunk! SELECT emp.ename As név, dept.dname As "Részleg neve" FROM emp, dept WHERE emp.deptno=dept.deptno; Azoknak az alkalmazottaknak a neve, részlegük neve, és a részleg telephelye, akiknek a nevében R betű van. SELECT emp.empno As Azonosító, emp.ename As név, dept.dname As "Részleg neve", dept.loc As telephely FROM emp, dept WHERE emp.deptno=dept.deptno AND emp.ename LIKE '%R%'; 13 14 Az egyes alkalmazottak milyen fizetési kategóriába esnek? SELECT emp.ename As név, emp.sal As fizetes, salgrade.grade As "fizetési besorolás" FROM emp, salgrade WHERE emp.sal BETWEEN salgrade.losal AND salgrade.hisal; Tábla összekapcsolása saját magával Adjuk meg a dolgozók és főnökeik nevét! SELECT dolgozo.ename As dolgozó, fonok.ename AS Főnök FROM emp dolgozo, emp fonok WHERE dolgozo.mgr=fonok.empno; 15 16 4

Táblák összekapcsolása Külső összekapcsolás SELECT * FROM reláció1 LEFT RIGHT JOIN reláció2 ON reláció1.attribútum1 = reláció2.attribútum2; Külső összekapcsolásnál fontos szerepe van annak, hogy a FROM kulcsszó után melyik tábla szerepel. Ezt bal oldali táblának hívjuk. A JOIN operátorban megadott tábla lesz a jobb oldali tábla. A LEFT OUTER JOIN a bal oldali tábla minden sorát, a RIGHT OUTER JOIN a jobb oldali tábla minden sorát tartalmazza, akkor is, ha nem talál illeszkedést a másik táblában. Számoljuk meg részlegenként az alkalmazottak számát! SELECT d.dname As részlegnév, count(e.ename) AS létszám FROM emp e, dept d WHERE e.deptno=d.deptno GROUP BY d.dname; De hol a Operations és a Kereskedes részleg? Ezen segít a külső összekapcsolás SELECT d.dname As részlegnév, count(e.ename) AS létszám FROM dept d LEFT OUTER JOIN emp e ON e.deptno=d.deptno GROUP BY d.dname; 17 18 Adjuk meg részlegenként a dolgozók nevét! SELECT e.ename As név, d.deptno As kód, d.dname As részlegnév FROM emp e Right OUTER JOIN dept d ON e.deptno=d.deptno; Táblák összekapcsolása FULL OUTER JOIN művelet Eredménye a jobb és bal oldali táblák minden sorát fogja tartalmazni, azokat is, amelyekhez nincs illeszkedés a másik oldalon. 19 20 5

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Módosítás: DML: - rekord felvitel INSERT - rekord törlés DELETE - rekord módosítás UPDATE Lekérdezés: DQL: - lekérdezés SELECT Módosítás Rekord felvitele: INSERT INTO tabla VALUES (mezo=ertek, ); Az érték lehet NULL is. Nem maradhat ki mező. Fontos a mezősorrend INSERT INTO AUTO VALUES ( bju564,234, FIAT ); INSERT INTO AUTO VALUES ( bju564,234,null); INSERT INTO AUTO VALUES (RSZ= bju564,...); Vezérlés DCL: - védelem GRANT,.. - tranzakció kezelés COMMIT,.. 21 22 Módosítás Rekord törlése: DELETE FROM tabla WHERE feltétel; A feltételnek eleget tevő rekordok törlődnek Ha elmarad a WHERE tag, minden rekord törlődik DELETE FROM AUTO WHERE AR<1200000; Rekord módosítása: UPDATE tabla SET mezo= érték,... WHERE feltétel; A feltételnek eleget tevő rekordok módosulnak Ha elmarad a WHERE tag, minden rekord módosul UPDATE AUTO SET AR = AR * 1.2 WHERE AR<1200000; SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Módosítás: DML: - rekord felvitel INSERT - rekord törlés DELETE - rekord módosítás UPDATE Lekérdezés: DQL: - lekérdezés SELECT Vezérlés DCL: - védelem GRANT,.. - tranzakció kezelés COMMIT,.. 23 24 6

Táblák létrehozása Az üres adatszerkezeti elemeket, struktúrákat kell először megadni, később töltjük fel őket adatokkal A táblázat szerkezete, sémája, a már ismert, a táblázathoz tartozó adatmezőkkel írható le. A mezők megadása a Mezők nevének Adattípusának és Az integritási feltételeknek a kijelölésével történik. Táblák megadása Összefoglalva a tábla létrehozásakor meg kell adni: Tábla nevét Mezők nevét Mezők típusát Integritási feltételeket 25 26 Táblák megadása CREATE TABLE táblanév(m 1 t 1 [i 1 ] [,, m i t i [i i ]], [i g ]); m i : mezőnév t i : típus i i : mezőhöz kötött integritási feltétel i g : mezőcsoporthoz kötött integritási feltétel Táblák megadása CREATE TABLE tnév (mnév1 típus1 intfelt1, intfelt); CHAR(n) PRIMERY KEY NUMBER(n,m) NOT NULL DATE UNIQUE CHECK felt REFERENCES tábla PRIMERY KEY (m1,m2) FOREIGN KEY(m1, m2) REFERENCES tábla CHECK felt 27 CREATE TABLE AUTO (RSZ CHAR(6) PRIMARY KEY, AR NUMBER(9) NOT NULL, GYART_IDO DATE); 28 7

Adattípusok Szabványosított hivatkozást nehéz megadni, mert a legtöbb elterjedt RDBMS más-más elnevezést használ. Legfontosabb típusok: CHAR (n) : n hosszúságú szöveg NUMBER(n [,m]) : n hosszú szám, ahol m a tizedesjegyek száma DATE : dátum Numerikus adattípusok Fix vagy lebegőpontos számok Fixpontos adattípusok: A fixpontos szám rendelkezik egész (P) és tizedesjegy(s) résszel. NUMERIC(P,S) DECIMAL(P,S) INTEGER SMALLINT 29 30 Numerikus adattípusok Fix vagy lebegőpontos számok Lebegőpontos adattípusok: Mantissza és kitevő is előjeles érték. A lebegőpontos értéknek "pontosság" tulajdonsága is van. (A mantisszában lévő szignifikáns bináris számjegyek száma) FLOAT(P) REAL DOUBLE PRECISION Egyedi adattípus: MONEY A numerikus adattípusok esetében sok problémát okoz, hogy a tárolás megvalósítás függő. Dátum és Idő Dátum és idő kezelése sok problémát vet fel Dátum típusú konstans formája: DATE '1948-05-14' TIME '15:00:02.5' Dátum és idő együtt jelenik meg a TIMESTAMP értékben: TIMESTAMP '1948-05-14 12:00:00' Microsoft SQLServer dátumábrázolása DateTime típus :1753.jan.1. és 9999.dec.31 közötti dátumidő adatok három századmásodperc pontossággal, 8 byte-on tárolva SmallDateTime típus: 4 byte, 1900.jan.1-2079.jún.6 közötti egyperces pontossággal. 31 32 8

Példa táblák létrehozására CREATE TABLE Auto ( TUL NUMBER(3) NOT NULL, RSZ CHAR(6) NOT NULL UNIQUE, TIP CHAR(10), SZIN CHAR(10), EVJ NUMBER(4), AR NUMBER(8)); Megszorítások Egy oszlopra vonatkozó megszorítások NULL az attribútum definíciójában arra utal, hogy az adat megadása nem kötelező, ez az alapértelmezés ezért a legritkább esetben írják ki. NOT NULL az attribútum definíciójában arra utal, hogy az adat megadása kötelező, azaz nem vihető be olyan sor a relációban, ahol az így definiált adat nincs kitöltve. PRIMARY KEY ez az oszlop a tábla elsődleges kulcsa. UNIQUE ez az oszlop a tábla kulcsa. CHECK(feltétel) csak feltételt kielégítő értékek kerülhetnek be az oszlopba. [FOREIGN KEY] REFERENCES reláció_név [ (oszlop_név) ], ez az oszlop külső kulcs 33 34 Több oszlopra vonatkozó megszorítások PRIMARY KEY(oszlop1[, oszlop2,...]) ezek az oszlopok együtt alkotják az elsődleges kulcsot. UNIQUE(oszlop1[, oszlop2,...]) ezek az oszlopok együtt kulcsot alkotnak. CHECK(feltétel) csak feltételt kielégítő sorok kerülhetnek be a táblába. FOREIGN KEY (oszlop1[, oszlop2,...]) REFERENCES reláció(oszlop1[, oszlop2,...]), az oszlopok külső kulcsot alkotnak a megadott tábla oszlopaihoz. Tábla szerkezet módosítása ALTER objektumtípus azonosító paraméterek ALTER TABLE tnév ADD MODIFY(mnev tip intfelt intfelt); ALTER TABLE Auto (TULAJ REFERENCES Ember); Objektum megszüntetése: DROP objektumtípus azonosító paraméterek DROP TABLE tnév; Pl. DROP TABLE Auto 35 36 9

Példák CREATE TABLE osztaly ( oszt_azon INT PRIMARY KEY, nev VARCHAR(14) NOT NULL, varos VARCHAR(13) NOT NULL, CONSTRAINT unev UNIQUE(nev)); CREATE TABLE alkalmazott ( alk_azon INT PRIMARY KEY, nev VARCHAR(10) NOT NULL, beosztas VARCHAR(9) NOT NULL, belepes DATE NOT NULL, fizetes FLOAT NOT NULL, jutalom FLOAT, oszt_azon INT NOT NULL, CONSTRAINT alk_kulso_kulcs FOREIGN KEY (oszt_azon) REFERENCES osztaly (oszt_azon)); Példák CREATE TABLE fiz_oszt ( f_oszt INT PRIMARY KEY, min FLOAT NOT NULL, max FLOAT NOT NULL, CONSTRAINT min_max CHECK (min < max)); 37 38 Példák ALTER TABLE reláció_név ADD attribútum_név adattípus [(szélesség)]; ALTER TABLE reláció_név MODIFY attribútum_név adattípus (új_szélesség) [NOT NULL]; ALTER TABLE reláció_név RENAME COLUMN régi_név TO új_név; ALTER TABLE reláció_név DROP COLUMN attribútum_név; DROP TABLE [IF EXISTS] reláció_név; Példák ALTER TABLE osztaly ADD oszt_vez int2 NOT NULL; ALTER TABLE osztaly DROP COLUMN oszt_vez; DROP TABLE osztaly; kényszerek (alkalmazott külső kulcs hivatkozás) miatt nem hajtható végre! Indexek CREATE [UNIQUE] INDEX index_név ON reláció(oszlop1, oszlop2,...); Egyedi index = kulcs Példák CREATE INDEX belepes_index ON alkalmazott(belepes); DROP INDEX belepes_index; 39 40 10

Adatbázis létrehozása CREATE DATABASE <database name> [ON ( [ NAME = logical_name, ] FILENAME = physical_file_name [, FILESIZE = size ] [, MAXSIZE = maxsize ] [, FILEGROWTH = growth_increment] ) ] [LOG ON ( [ NAME = logical_name, ] FILENAME = physical_file_name [, FILESIZE = size ] [, MAXSIZE = maxsize ] [, FILEGROWTH = growth_increment] ) ] [COLLATE collation_name ] Tábla létrehozása, törlése CREATE TABLE [database_name].[schema_name].table_name (column_name data_type [length] [IDENTITY(seed, increment)] [NULL/NOT NULL]) Törlés: DROP TABLE táblanév; Pl.: USE Northwind DROP TABLE Customers 41 42 Karakter típusú adatok Karakter típusú adatok 43 44 11

Numerikus adatok tárolása Numerikus (valós típus) adatok tárolása 45 46 Érték tartományok Megszorítások A megszorítás biztosítja, hogy adataink megfeleljenek az adatintegritási szabályoknak Típusai: Entitás megszorítások Tartományi megszorítások Hivatkozási integritás megszorítások 47 48 12

Tartományi megszorítások Egy vagy több oszloppal foglalkoznak Ellenőrzi, hogy egy adott oszlop vagy oszlopok megfelelnek-e egy adott feltételnek, (az egész oszlop függetlenül attól hány sora van) megfelel-e a megszorításnak. Például: az egységár csak pozitív lehet Entitás-megszorítások Egyedi sorokra vonatkoznak. Jelentése: Ehhez a sorhoz nem létezhet már ugyanaz az érték mint bármelyik más sorban. 49 50 Hivatkozási integritás Egy oszlopbeli értéknek meg kell felelnie egy más oszlopban lévő értéknek, amely ugyanabban vagy másik táblában van. Tartományi táblák Hivatkozási táblák Kulcs megszorítások Elsődleges kulcsok PRIMARY KEYmegszorítások Idegenkulcs - FOREIGN KEY megszorítás Alternatív kulcs - UNIQUE-megszorítás 51 52 13

Kulcs megszorítások Elsődleges kulcsok PRIMARY KEYmegszorítások Létrehozás: CREATE TABLE ALTER TABLE utasításokkal PRIMARY KEY megszorítás Tábla létrehozásakor: CREATE TABLE Dolgozók (DolgozóKód int IDENTITY NOT NULL PRIMARY KEY, DolgozoNev varchar (40). FonokKod int NULL. stb.) Meglévő táblán: ALTER TABLE Dolgozók ADD CONSTRAINT PK_DolgozóKód PRIMARY KEY (DolgozóKód) 53 54 Idegenkulcs megszorítás Adatintegritás biztosítása Táblák közötti kapcsolatok megvalósítása Létrehozás: CREATE TABLE ALTER TABLE utasításokkal Idegenkulcs megszorítás Tábla létrehozásakor: CREATE TABLE Rendelesek ( RendelSzam int IDENTITY NOT NULL PRMARY KEY, VevoKod int NOT NULL FOREIGN KEY REFERENCES Vevok(VevoKod), stb. ) 55 56 14

Idegenkulcs megszorítás Létező tábla esetén: ALTER TABLE Rendelesek ADD CONSTRAINT FK_REndLetrehoz FOREIGN KEY (Vevokod) REFERENCES Vevok(VevoKod) Tábla önmagára hivatkozóvá tétele ALTER TABLE Dolgozók ADD CONSTRAINT FK_Fonok FOREIGN KEY (FonokKod) REFERENCES Dolgozók(DolgozóKód) UNIQUE megszorítások Sokszor alternatív kulcsként hivatkoznak rá. Az adott oszlopban egyedi értékeket jelöl. Egy táblában egynél több unique megszorítás is lehet. (Primary Key csak egy!) Megengedi a mezőben a NULL értéket (de csak egyszer fordulhat elő) 57 58 UNIQUE megszorítás Létrehozás: CREATE ALTER utasításokkal CREATE TABLE Dolgozók ( DolgozóKód int IDENTITY NOT NULL PRIMARY KEY,. Telefonszám varchar(14) NOT NULL UNIQUE ) UNIQUE megszorítás Létrehozás: CREATE ALTER utasításokkal ALTER TABLE Dolgozók ADD CONSTRAINT AK_Telefonszám UNIQUE (Telefonszám) 59 60 15

CHECK megszorítások Oszlophoz, de táblához is kapcsolódhatnak A WHERE záradék szabályaihoz hasonlóan definiálhatjuk ALTER TABLE Dolgozók ADD CONSTRAINT CN_BelepDatum CHECK (BelepDatum<=GETDATE()) DEFAULT megszorítások Alapértelmezésnek is nevezzük Azt adja meg, mit kell tenni, ha egy új rekordot szúrunk be a táblába, és a beszúráskor az adott oszlophoz nem rendelünk értéket Alapértelmezést csak az INSERT utasításban használunk Ha bármilyen értéket megadunk az INSERT utasításban, akkor az alapértelmezést nem használja Ha nem adunk meg értéket, akkor mindig az alapértelmezést használja 61 62 DEFAULT megszorítás CREATE TABLE Szallítók ( SzKód int IDENTITY NOT NULL PRIMARY KEY, SzallNev varchar(35) NOT NULL, RogzitesDatuma smalldatetime NOT NULL DEFAULT GETDATE() ) DEFAULT megszorítás ALTER TABLE Vevok ADD CONSTRAINT CN_Miota DEFAULT GETDATE() FOR RogzDatum Másik példa: ALTER TABLE Vevok ADD CONSTRAINT CN_Cim DEFAULT 'Ismeretlen' FOR VevoCim 63 64 16

Nézetek A nézet egy tárolt lekérdezés Egyszerű nézetek: CREATE VIEW <nézet neve> AS <SELECT utasítás> Nézet létrehozása az Employees táblából USE Northwind GO CREATE VIEW Dolg_Telefon_VW AS SELECT LastName, FirstName, HomePhone FROM Employees Command(s) completed successfully. SELECT futtatása nézeten: 65 66 Nézet (VIEW) A nézet fizikailag nem tárol adatokat, csak egy lekérdező utasítást, amelyek segítségével fizikai vagy más, már létező nézettáblákra hivatkozik. "Tartalma " automatikusan frissítődik, mivel nem tárol adatot Miért használunk nézettáblát? Segítségükkel a gyakori lekérdezések eltárolhatók. A felhasználó egyszerű (származtatott) lekérdezésekből építhet fel bonyolult lekérdezéseket Korlátozhatjuk az adathoz való hozzáférést, mert egy nézetben csak a benne hivatkozott adattáblák oszlopait látjuk Adatfüggetlenség biztosítható 67 68 17

Nézet (VIEW) Lehet Egyszerű csak egy adattáblát tartalmaz Összetett minden más esetben Egyszerű nézet: Hozzunk létre nézetet az emp tábla manager-eiből. Nézet (VIEW) Összetett nézet: Az alkalmazottak telephelyenkénti csoportjainak maximális és átlagfizetését tartalmazó nézet. 69 70 Nézet (VIEW) Nézet felhasználása: Listázzuk ki fizetés szerint rendezve azokat a dolgozókat, akiknek fizetése a Dallasi és New York-i telephely átlagfizetését meghaladja. Nézet (VIEW) Beszúrás (INSERT) nézeten keresztül bizonyos korlátozással lehetséges Törlés: DROP VIEW nézetnév; Példa : DROP VIEW osszetett 71 72 18

MSSQL rendszerfüggvények Dátum és időfüggvények DATE egy dátum típusú értéket ad vissza; szintaxis: DATE(year, month, day) DATEADD, dátumhoz ad hozzá egy időintervallumot, és egy új dátummal tér vissza DATEADD (dátumrész, szám, kezdődátum) példa: DATEADD(MONTH, 3, #8/18/2009#) eredmény: 11/18/2009 DATEDIFF (datepart,startdate,enddate ) MSSQL rendszerfüggvények Dátum és időfüggvények SELECT DATEDIFF(day, '2007-05-07 09:53:01.0376635', '2007-05-08 09:53:01.0376635'); eredmény=1 USE AdventureWorks SELECT DATEDIFF(day,(SELECT MIN(OrderDate) FROM Sales.SalesOrderHeader), (SELECT MAX(OrderDate) FROM Sales.SalesOrderHeader)); 73 74 Microsoft SQL Server Minimális hardware követelmények A Microsoft SQL Server 2008 egy megbízható, biztonságos, hatékony és intelligens adatplatformot és üzleti intelligencia megoldást nyújt, amellyel a legnagyobb kihívást jelentő alkalmazásokat is futtathatja, csökkentheti a fejlesztéshez és üzemeltetéshez szükséges erőforrásokat és a teljes szervezet számára nyújthat üzletileg fontos elemzéseket. Követelmények 32-bit 64-bit Processzor Pentium III vagy nagyobb Itanium, Opteron, Athelon vagy Xeon/Pentium EM64T támogatással Processzor sebesség 1 Ghz vagy nagyobb 1,6 Ghz vagy nagyobb Memória 512 MB 512 MB 75 76 19

Támogatott operációs rendszerek Az SQL Server mind 32, mind 64 bites operációs rendszerre telepíthető. A 64-bites SQL Server-t csak 64 bites operációs rendszerre lehet telepíteni. A 32 bites SQL Server viszont mind 32 bites Windowsra mind 64 bites Windowsra telepíthető. (Csak ha a Windows On Windows funkció él a 64 bites Windowson ) Szoftver követelmények.net Framework 3.5 Windows Installer 4.5 Microsoft Data Access Component 2.8 SP1 SharedMemory, NamedPipesvagy TCP/IP Internet Explorer 6 SP1 vagy nagyobb 77 78 SQL Server változatok SQL Server 2008 Enterprise Edition CPU-k száma Adatbázis mérete RAM SQL Server Management Studio Full Text Search Particionálás Parallel Operations Multiple Instance Log compression Unlimited Clustering Unlimited Database Mirroring Unlimited Hot Add Memory/CPU Stored Procedures, triggers, and viewes Import/Export Wizard Office Integration Report Builder Data Minin / OLAP Processing Transactional Replication 79 80 20

SQL Server 2008 Standard Edition SQL Server 2008 Workgroup Edition CPU-k száma 4 Clustering Adatbázis mérete Unlimited Database Mirroring RAM Unlimited Hot Add Memory/CPU SQL Server Management Studio Full Text Search Stored Procedures, triggers, and viewes Import/Export Wizard 2 nodes Single thread CPU-k száma 4 Clustering Adatbázis mérete Unlimited Database Mirroring RAM Unlimited Hot Add Memory/CPU SQL Server Management Studio Full Text Search Stored Procedures, triggers, and viewes Import/Export Wizard Particionálás Office Integration Particionálás Office Integration Parallel Operations Report Builder Parallel Operations Report Builder Multiple Instance Log compression Data Minin / OLAP Processing Transactional Replication Multiple Instance Log compression Data Minin / OLAP Processing Transactional Replication Subscriber Only 81 82 SQL Server 2008 Express Edition CPU-k száma 1 Clustering Adatbázis struktúra Adatbázis mérete 4 GB Database Mirroring RAM 1 GB Hot Add Memory/CPU SQL Server Management Studio Külön letölthető Stored Procedures, triggers, and viewes Full Text Search Advanced Import/Export Wizard N/A Particionálás Parallel Operations Multiple Instance Log compression Office Integration Report Builder Data Minin / OLAP Processing Transactional Replication Advanced Advanced N/A Subscriber 83 84 21

Hogyan tároljuk az adatokat? Adatbázis komponensek 85 86 SQL Server rendszeradatbázisai Master Model Msdb Tempdb Resource (mssqlsystemresource) rejtett, nem látható, gyors és biztonságos upgrade számára hozta létre a Microsoft 87 22