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

Hasonló dokumentumok
Elemi alkalmazások fejlesztése IV.

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

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

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

Adatbázisok* tulajdonságai

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

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

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

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

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

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

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

BEVEZETÉS Az objektum fogalma

Elemi alkalmazások fejlesztése IV.

Adatbázis rendszerek SQL nyomkövetés

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

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

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

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

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

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

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.

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

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

Java és web programozás

Adatbázis használat I. 5. gyakorlat

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

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

A könyv tartalomjegyzéke

SQL parancsok feldolgozása

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

Elemi alkalmazások fejlesztése IV.

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

Java és web programozás

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

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

Bevezetés: az SQL-be

MySql elindítása. Elemi alkalmazások fejlesztése IV. Feladat. Az alkalmazás adatbázisa

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

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

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

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

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

Webfejlesztés 4. alkalom

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

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

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


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

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

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

Az SQL*Plus használata

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

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

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS

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

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

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

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

Adatbáziskezelés. SQL parancsok. Függvények

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

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

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

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

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

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

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

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

Az SQL adatbázisnyelv: DML

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

Adatbázis rendszerek tervezése

ADATBÁZIS RENDSZEREK I BEADANDÓ

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

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték

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

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

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

GEIAL Kovács László. GEIAL Kovács László GEIAL Kovács László

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

SQL gyakorló feladatok. 6. Adatbázis gyakorlat április 5.

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

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

SQL DDL-2 (aktív elemek) triggerek

Adatbázisok I. Az SQL nyelv

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

Adatbázis-kezelés ODBC driverrel

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

Gazdasági folyamatok térbeli elemzése. 5. elıadás

Vizuális programozás gyakorlat

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:

SQLServer. DB Recovery modes

Adatbáziskezelés php-ben MySQL adatbáziskezelı rendszert használva

Adatbázisok I A relációs algebra

Csoportosított adatok megjelenítése összesítı függvények használatával. Copyright 2004, Oracle. All rights reserved.

Adatbázis. AMP! (Apache + MySql + PHP) XAMPP, LAMP, MAMP, WAMP et cetera

Adatbázis használat I. 2. gyakorlat

Keskeny Zoltán 2007/08 SQL. Structured Query Language. (gyakorlat az SQL2 szabvány alapján) Keskeny Zoltán tanév

Tranzakciókezelés PL/SQL-ben

Átírás:

Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu 1

Structured Query Language (Struktúrált lekérdező nyelv) Relációs adatbázisok kezelésére kifejlesztett szabvány 2

DIAKOK dkód vnév knév 1001 Kiss János 1002 Nagy János... 2004 Szabó Benedek Relációs adatbázis REGISZTRACIO dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14... 2004 nem01 2002-05-09 Reláció ORAK okód tárgy szint nap kezdete vége ang01 angol 1 Hétfö 08:00:00 10:00:00 ang02 angol 1 Hétfö 10:00:00 12:00:00 ang03 angol 2 Kedd 08:00:00 10:00:00 nem01 német 2 Kedd 10:00:00 12:00:00 nem02 német 1 Hétfö 10:00:00 12:00:00 3

DIAKOK dkód vnév knév 1001 Kiss János 1002 Nagy János 1003 Nagy Katalin 1004 Szabó Kinga 1005 Kiss Hajnalka 1006 Nagy Benedek 2001 Szabó Péter 2002 Kiss Katalin 2003 Nagy János 2004 Szabó Benedek ORAK ISKOLA okód tárgy szint nap kezdete vége REGISZTRACIO ang01 angol 1 Hétfö 08:00:00 10:00:00 ang02 angol 1 Hétfö 10:00:00 12:00:00 ang03 angol 2 Kedd 08:00:00 10:00:00 nem01 német 2 Kedd 10:00:00 12:00:00 nem02 német 1 Hétfö 10:00:00 12:00:00 dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 4

DIAKOK ISKOLA REGISZTRACIO dkód vnév knév dkód okód dátum 1001 Kiss János 1001 nem01 2002-05-07 1002 Nagy János 1002 ang03 2002-05-14 1003 Nagy Katalin 1003 ang01 2002-05-14 1004 Szabó Kinga 1004 nem01 2002-05-07 1005 Kiss Hajnalka 1005 ang01 2002-05-09 1006 Nagy Benedek 1006 ang03 2002-05-14 2001 Szabó Péter 2001 ang03 2002-05-09 2002 Kiss Katalin 2002 ang01 2002-05-07 2003 Nagy János 2003 nem01 2002-05-14 2004 Szabó Benedek 2004 ang03 2002-05-09 ORAK 2004 nem01 2002-05-09 okód tárgy szint nap kezdete vége ang01 angol 1 Hétfö 08:00:00 10:00:00 ang02 angol 1 Hétfö 10:00:00 12:00:00 ang03 angol 2 Kedd 08:00:00 10:00:00 nem01 német 2 Kedd 10:00:00 12:00:00 nem02 német 1 Hétfö 10:00:00 12:00:00 5

Kulcs DIAKOK dkód vnév knév 1001 Kiss János 1002 Nagy János 1003 Nagy Katalin 1004 Szabó Kinga 1005 Kiss Hajnalka 1006 Nagy Benedek 2001 Szabó Péter 2002 Kiss Katalin 2003 Nagy János 2004 Szabó Benedek ORAK ISKOLA Kulcs REGISZTRACIO dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 okód tárgy szint nap kezdete vége ang01 angol 1 Hétfö 08:00:00 10:00:00 ang02 angol 1 Hétfö 10:00:00 12:00:00 ang03 angol 2 Kedd 08:00:00 10:00:00 nem01 német 2 Kedd 10:00:00 12:00:00 nem02 német 1 Hétfö 10:00:00 12:00:00 6

MySQL: parancssor ablak Microsoft Windows XP [verziószám: 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\User>cd \mysql\bin C:\mysql\bin>mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 to server version: 3.23.51-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> Ha parancssor ablakból indítjuk a mysql.exe programot, akkor közvetlenül adhatunk ki parancsokat a MySQL adatbáziskezelőnek. 7

MySQL parancsok: Help mysql> \h MySQL commands: Note that all text commands must be first on line and end with ';' Help (\h) Display this help.? (\?) Synonym for `help'. Clear (\c) Clear command. connect (\r) Reconnect to the server. Optional arguments are db and host. Ego (\G) Send command to mysql server, display result vertically. Exit (\q) Exit mysql. Same as quit. Go (\g) Send command to mysql server. Note (\t) Don't write into outfile. Print (\p) Print current command. Quit (\q) Quit mysql. Rehash (\#) Rebuild completion hash. Source (\.) Execute a SQL script file. Takes a file name as an argument. Status (\s) Get status information from the server. Tee (\T) Set outfile [to_outfile]. Append everything into given outfile. Use (\u) Use another database. Takes database name as argument. Connection id: 5 (Can be used with mysqladmin kill) 8

Adatbázis létrehozása: CREATE DATABASE Szintaxis: CREATE DATABASE adatbázis neve ; Példa: mysql> create database iskola; Query OK, 1 row affected (0.00 sec) mysql> 9

Adatbázis használatbavétele: USE Szintaxis: USE adatbázis neve ; Példa: mysql> use iskola; Database changed mysql> 10

Egyszerűbb adattípusok CHAR(méret): VARCHAR(méret): INT(méret): DATE: TIME: fix (maximum méret) hosszúságú karakterlánc. Max: 255 hosszú. változó (maximum méret) hosszúságú karakterlánc. egész szám dátum ( éé-hh-nn alakban); idő ( oo:pp:mm alakban) VARCHAR Kiss Péter DATE 2002-09-23 TIME 08:30:00 11

CREATE TABLE - Diakok; dkód vnév knév CREATE TABLE diakok (dkod int(4) PRIMARY KEY NOT NULL, vnev VARCHAR(10), knev VARCHAR(10)); mysql> CREATE TABLE diakok -> (dkod int(4) PRIMARY KEY NOT NULL, -> vnev VARCHAR(10), -> knev VARCHAR(10)); Query OK, 0 rows affected (0.05 sec) 12

dkód okód dátum CREATE TABLE - Regisztracio; CREATE TABLE regisztracio ( dkod INT(4) NOT NULL, okod CHAR(4) NOT NULL, datum DATE, PRIMARY KEY(dkod,okod) ); mysql> CREATE TABLE regisztracio -> ( dkod INT(4) NOT NULL, -> okod CHAR(4) not null, -> datum DATE, -> PRIMARY KEY(dkod,okod) ); Query OK, 0 rows affected (0.01 sec) 13

CREATE TABLE - Orak; okód tárgy szint nap kezdete vége CREATE TABLE orak (okod char(5) PRIMARY KEY NOT NULL, targy CHAR(10) NOT NULL, szint INT(1), nap VARCHAR(9), kezdete TIME, vege TIME); mysql> CREATE TABLE orak (okod char(5) PRIMARY KEY NOT NULL, targy CHAR(10) NOT NULL, szint INT(1), nap VARCHAR(9), kezdete TIME, vege TIME); Query OK, 0 rows affected (0.01 sec) 14

DESCRIBE diakok; Field Type Null Key Default Extra dkod int(4) PRI 0 vnev varchar(10) YES NULL knev varchar(10) YES NULL CREATE TABLE diakok (dkod int(4) PRIMARY KEY NOT NULL, vnev VARCHAR(10), knev VARCHAR(10)); 15

DESCRIBE regisztracio; Field Type Null Key Default Extra dkod int(4) PRI 0 okod char(4) PRI datum date YES NULL CREATE TABLE regisztracio ( dkod INT(4) NOT NULL, okod CHAR(4) NOT NULL, datum DATE, PRIMARY KEY(dkod,okod) ); 16

DESCRIBE orak; Field Type Null Key Default Extra okod varchar(5) PRI targy varchar(10) YES NULL szint int(1) 0 nap varchar(9) YES NULL kezdete time YES NULL vege time YES NULL CREATE TABLE orak (okod char(5) PRIMARY KEY NOT NULL, targy CHAR(10) NOT NULL, szint INT(1), nap VARCHAR(9), kezdete TIME, vege TIME); 17

Táblázat struktúra módosítása: ALTER ALTER [IGNORE] TABLE táblanév alter_spec [,oszlopnév...] alter_spec: or or or or or or or ADD [COLUMN] oszlop_def [FIRST AFTER oszlopnév ] ADD [COLUMN] (oszlop_def, oszlop_def,...) CHANGE [COLUMN] régi_oszlopnév oszlop_def MODIFY [COLUMN] oszlop_def DROP [COLUMN] oszlopnév DROP PRIMARY KEY RENAME [TO] új_tablanév ORDER BY oszlop oszlop def: oszlopnév típus [megszorítás] 18

Field Type Null Key Default Extra dkod int(4) PRI 0 vnev varchar(10) YES NULL knev varchar(10) YES NULL ALTER TABLE diakok CHANGE vnev vnev VARCHAR(15) NOT NULL; Field Type Null Key Default Extra dkod int(4) PRI 0 vnev varchar(15) YES NULL knev varchar(10) YES NULL mysql> alter table diakok change vnev vnev varchar(15) not null; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 19

Új adatsor beszúrása: INSERT dkód vnév knév 1001 Kiss János INSERT INTO diakok VALUES (1001, Kiss, János ); mysql> INSERT INTO diakok -> VALUES (1001,'Kiss','János'); Query OK, 1 row affected (0.02 sec) 20

Új adatsor beszúrása: INSERT dkód vnév knév 1001 Kiss János 1002 Nagy János INSERT INTO diakok VALUES (1001, Kiss, János ); INSERT INTO diakok VALUES (1002, Nagy, János ); mysql> INSERT INTO diakok -> VALUES (1002,'Nagy','János'); Query OK, 1 row affected (0.01 sec) 21

INSERT - Orak; okód tárgy szint nap kezdete vége ang01 angol 1 Hétfö 08:00:00 10:00:00 INSERT INTO orak VALUES ( ang01, angol, 1, Hétfő, 08:00:00, 10:00:00 ); mysql> insert into orak VALUES('nem01','angol',1,'Hétfö','08:00:00','10:00:00'); Query OK, 1 row affected (0.00 sec) 22

INSERT - Regisztracio; dkód okód dátum 1001 nem01 2002-05-07 INSERT INTO regisztracio VALUES (1001, nem01, 2002-05-07 ); mysql> INSERT INTO regisztracio VALUES (1001,'nem01','2002-05-07'); Query OK, 1 row affected (0.00 sec) 23

Update - példa okód tárgy szint nap kezdete vége ang01 angol 1 Hétfö 08:00:00 10:00:00 ang02 angol 1 Hétfö 10:00:00 12:00:00 ang03 angol 2 Kedd 08:00:00 10:00:00 nem01 német 2 Kedd 10:00:00 12:00:00 nem02 német 1 Hétfö 10:00:00 12:00:00 UPDATE orak SET kezdete= 08:00:00, vege= 10:00:00, nap= Szerda WHERE nap= Hétfö AND kezdete= 10:00:00 ; okód tárgy szint nap kezdete vége ang01 angol 1 Hétfö 08:00:00 10:00:00 ang02 angol 1 Szerda 08:00:00 10:00:00 ang03 angol 2 Kedd 08:00:00 10:00:00 nem01 német 2 Kedd 10:00:00 12:00:00 nem02 német 1 Szerda 08:00:00 10:00:00 24

Delete - példa okód tárgy szint nap kezdete vége ang01 angol 1 Hétfö 08:00:00 10:00:00 ang02 angol 1 Hétfö 10:00:00 12:00:00 ang03 angol 2 Kedd 08:00:00 10:00:00 nem01 német 2 Kedd 10:00:00 12:00:00 nem02 német 1 Hétfö 10:00:00 12:00:00 DELETE FROM orak WHERE targy= német AND szint=1; okód tárgy szint nap kezdete vége ang01 angol 1 Hétfö 08:00:00 10:00:00 ang02 angol 1 Hétfö 10:00:00 12:00:00 ang03 angol 2 Kedd 08:00:00 10:00:00 nem01 német 2 Kedd 10:00:00 12:00:00 25

Delete - példa okód tárgy szint nap kezdete vége ang01 angol 1 Hétfö 08:00:00 10:00:00 ang02 angol 1 Hétfö 10:00:00 12:00:00 ang03 angol 2 Kedd 08:00:00 10:00:00 nem01 német 2 Kedd 10:00:00 12:00:00 nem02 német 1 Hétfö 10:00:00 12:00:00 Ha nem adunk where kiegészítést, akkor a táblázat összes sorát törli. NEM KÉRDEZ!!! DELETE FROM orak; okód tárgy szint nap kezdete vége 26

1 2 3 4 5 6 7 8 9 DIAKOK dkód vnév knév 1001 Kiss János 1002 Nagy János 1003 Nagy Katalin 1004 Szabó Kinga 1005 Kiss Hajnalka 1006 Nagy Benedek 2001 Szabó Péter 2002 Kiss Katalin 2003 Nagy János 2004 Szabó Benedek SELECT * FROM diakok; 27

1 2 3 4 DIAKOK dkód vnév knév 1001 Kiss János 1002 Nagy János 1003 Nagy Katalin 1004 Szabó Kinga 1005 Kiss Hajnalka 1006 Nagy Benedek 2001 Szabó Péter 2002 Kiss Katalin 2003 Nagy János 2004 Szabó Benedek SELECT dkod,knev FROM diakok WHERE vnev="nagy"; 28

REGISZTRACIO SELECT dkod,datum FROM regisztracio WHERE okod LIKE '%01'; 1 2 3 4 5 6 7 dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 29

Összetett lekérdezések - példa REGISZTRACIO SELECT okod FROM regisztracio; dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 30

Összetett lekérdezések - példa REGISZTRACIO SELECT DISTINCT okod FROM regisztracio; dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 31

Összetett lekérdezések - példa DIAKOK dkód vnév knév 1001 Kiss János 1002 Nagy János 1003 Nagy Katalin 1004 Szabó Kinga 1005 Kiss Hajnalka 1006 Nagy Benedek 2001 Szabó Péter 2002 Kiss Katalin 2003 Nagy János 2004 Szabó Benedek SELECT COUNT(*) FROM diakok; 32

Összetett lekérdezések - példa TANDIJAK SELECT AVG (tandij) FROM tandijak; okod tandij ang01 5000 ang02 10000 ang03 4000 nem01 6000 nem02 7000 33

Statisztikai függvények MIN MAX SUM AVG COUNT COUNT(*) Az adott oszlop legkisebb értéke Az adott oszlop legnagyobb értéke Az adott oszlop adatainak összege Az adott oszlop adatainak átlaga Az adott oszlopban szereplő sorok száma A táblázatban szereplő sorok száma 34

Matematikai műveletek Matematikai függvények abs(x) sign(x) mod(x,y) floor(x) ceiling(x) or ceil(x) power(x,y) round(x) round(x,d) sqrt(x) x abszolút értéke x előjelétől függően értéke -1, 0, vagy 1 (negatív, zéró, vagy pozitiv) Ugyanaz, mint az x%y Az x-nél kisebb vagy egyenlő legnagyobb egész érték Az x-hez legközelebb álló, x-nél nagyobb vagy egyenlő érték x y Egészre kerekített érték d db tizedesre kerekített érték x négyzetgyöke 35

GROUP BY - Példa REGISZTRACIO SELECT okod, COUNT (dkod) FROM regisztracio GROUP BY okod; dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 A GROUP BY kikötéssel összegyűjtjük azokat a sorokat, amelyek értéke a jelölt oszlopban megegyezik, és ezekre a sorokra együttesen elvégezzük el a megadott műveletet. 36

Having - Példa REGISZTRACIO SELECT okod, COUNT (dkod) FROM regisztracio GROUP BY okod HAVING COUNT (dkod) > 3; dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 A GROUP BY bővítménnyel kialakított csoportokból csak azok kerülnek be a listába, amelyek a HAVING feltételnek is eleget tesznek. 37

Group by - Having REGISZTRACIO dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 SELECT okod, COUNT (dkod) FROM regisztracio GROUP BY okod; okod count(dkod) ang01 3 ang03 4 nem01 4 SELECT okod, COUNT (dkod) FROM regisztracio GROUP BY okod HAVING COUNT (dkod) > 3; okod count(dkod) ang03 4 nem01 4 38

4 6 1 3 7 2 5 Order by - Példa DIAKOK dkód vnév knév 1001 Kiss János 1002 Nagy János 1003 Nagy Katalin 1004 Szabó Kinga 1005 Kiss Hajnalka 1006 Nagy Benedek 2001 Szabó Péter 2002 Kiss Katalin 2003 Nagy János 2004 Szabó Benedek SELECT vnev, knev, dkod FROM diakok WHERE knev<>"jános" ORDER BY vnev, knev; Az ORDER BY egy olyan tetszőlegesen választható kiegészítés, amellyel az ORDER BY után megadott oszlopok szerint rendezett listát készíthetünk. 39

In - Példa DIAKOK dkód vnév knév SELECT vnev, knev FROM diakok WHERE knev IN ("Katalin","Kinga"); 1001 Kiss János 1002 Nagy János 1003 Nagy Katalin 1004 Szabó Kinga 1005 Kiss Hajnalka 1006 Nagy Benedek 2001 Szabó Péter 2002 Kiss Katalin 2003 Nagy János 2004 Szabó Benedek Az IN feltételes operátor egy igazi halmazelméleti eleme operator. Az eredmény listába csak azok a tételek kerülnek be, amelyek eleget tesznek az eleme feltételnek. 40

Between - példa DIAKOK dkód vnév knév 1001 Kiss János 1002 Nagy János 1003 Nagy Katalin 1004 Szabó Kinga 1005 Kiss Hajnalka 1006 Nagy Benedek 2001 Szabó Péter 2002 Kiss Katalin 2003 Nagy János 2004 Szabó Benedek SELECT dkod, vnev, knev FROM diakok WHERE dkod BETWEEN 1003 AND 2002 ORDER BY dkod; A BETWEEN feltételes operátorral eldönthetjük, hogy a megjelölt oszlop adatai benne vannak-e a megadott intervallumban. 41

Több táblázat összekapcsolása: JOIN SELECT regisztracio.okod,tandij FROM tandijak, regisztracio; TANDIJAK okod tandij ang01 5000 ang02 10000 ang03 4000 nem01 6000 nem02 7000 REGISZTRACIO dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 42

SELECT * FROM regisztracio, tandijak; ang01 5000 dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 43

SELECT * FROM regisztracio, tandijak; ang01 5000 ang02 10000 dkód okód dátum 1001 nem01 2002-05-07 1002 dkód okód dátum ang03 2002-05-14 1003 1001 ang01 nem01 2002-05-07 2002-05-14 1004 1002 ang03 2002-05-14 nem01 2002-05-07 1005 1003 ang01 ang01 2002-05-14 2002-05-09 1006 1004 ang03 nem01 2002-05-07 2002-05-14 2001 1005 ang03 ang01 2002-05-09 2002-05-09 2002 1006 ang01 ang03 2002-05-14 2002-05-07 2003 2001 ang03 2002-05-09 nem01 2002-05-14 2004 2002 ang03 ang01 2002-05-07 2002-05-09 2004 2003 nem01 nem01 2002-05-14 2002-05-09 2004 ang03 2002-05-09 2004 nem01 2002-05-09 44

SELECT * FROM regisztracio, tandijak; ang01 5000 ang02 10000 ang03 4000 nem01 6000 nem02 7000 dkód okód dátum 1001 nem01 2002-05-07 1002 dkód okód dátum ang03 2002-05-14 1001 nem01 2002-05-07 1003 ang01 2002-05-14 1002 dkód ang03 okód2002-05-14 dátum 1004 nem01 2002-05-07 1003 1001 ang01 nem01 2002-05-14 2002-05-07 1005 ang01 2002-05-09 1004 1002 nem01 ang03 2002-05-07 2002-05-14 1006 ang03 dkód 2002-05-14 okód dátum 1005 1003 ang01 ang01 2002-05-09 2002-05-14 2001 ang03 1001 2002-05-09 nem01 2002-05-07 1006 1004 ang03 nem01 2002-05-14 2002-05-07 2002 ang01 1002002-05-07 2001 1005 ang03 ang01 dkódang03 2002-05-09 2002-05-09 okód2002-05-14 dátum 2003 nem01 1003 2002-05-14 2002 1006 ang01 ang03 1001 ang01 2002-05-07 2002-05-14 nem01 2002-05-14 2002-05-07 2004 ang03 1004 2002-05-09 2003 2001 nem01 ang03 1002 nem01 2002-05-14 2002-05-09 ang03 2002-05-07 2002-05-14 2004 nem01 1005 2002-05-09 2004 2002 ang03 ang01 1003 ang01 2002-05-09 2002-05-07 ang01 2002-05-09 2002-05-14 1006 2004 2003 nem01 nem01 1004 ang03 2002-05-14 2002-05-09 2002-05-14 nem01 2002-05-07 2001 ang03 2002-05-09 2004 ang03 1005 2002-05-09 ang01 2002-05-09 2004 2002 ang01 2002-05-07 nem01 1006 2002-05-09 ang03 2002-05-14 2003 2001 nem01 ang03 2002-05-14 2002-05-09 2004 2002 ang03 ang01 2002-05-09 2002-05-07 2004 2003 nem01 nem01 2002-05-09 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 45

SELECT * FROM regisztracio, tandijak WHERE regisztracio.okod=tandijak.okod; ang01 5000 ang02 10000 ang03 4000 dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 nem02 7000 nem01 6000 46

SELECT * FROM regisztracio, tandijak WHERE regisztracio.okod=tandijak.okod; dkód okód dátum ang01 5000 ang02 10000 ang03 4000 nem02 7000 1001 nem01 2002-05-07 1002 ang03 dkód 2002-05-14 okód dátum 1003 ang01 1001 2002-05-14 nem01 2002-05-07 1004 nem01 1002 2002-05-07 ang03 2002-05-14 1005 ang01 1003 2002-05-09 ang01 2002-05-14 1006 ang03 1004 2002-05-14 nem01 2002-05-07 2001 ang03 1005 2002-05-09 ang01 2002-05-09 2002 ang01 1006 2002-05-07 ang03 2002-05-14 2003 nem01 2001 2002-05-14 ang03 2002-05-09 2004 ang03 2002 2002-05-09 ang01 2002-05-07 2004 nem01 2003 2002-05-09 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 nem01 6000 47

SELECT * FROM regisztracio, tandijak WHERE regisztracio.okod=tandijak.okod; ang01 5000 ang02 10000 ang03 4000 nem02 7000 nem01 6000 dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 dkód 2002-05-14 okód dátum 1003 ang01 1001 2002-05-14 nem01 2002-05-07 1004 nem01 1002 2002-05-07 ang03 dkód okód 2002-05-14 dátum 1005 ang01 1003 2002-05-09 ang01 1001 2002-05-14 nem01 2002-05-07 1006 ang03 1004 2002-05-14 nem01 1002 2002-05-07 ang03 2002-05-14 dkód okód dátum 2001 ang03 1005 2002-05-09 ang01 1003 2002-05-09 ang01 2002-05-14 1001 nem01 2002-05-07 2002 ang01 1006 2002-05-07 ang03 1004 2002-05-14 nem01 2002-05-07 1002 ang03 2002-05-14 dkód okód dátum 2003 nem01 2001 2002-05-14 ang03 1005 2002-05-09 ang01 2002-05-09 1003 ang01 2002-05-14 1001 nem01 2002-05-07 2004 ang03 2002 2002-05-09 ang01 1006 2002-05-07 ang03 2002-05-14 1004 nem01 2002-05-07 1002 ang03 2002-05-14 2004 nem01 2003 2002-05-09 nem01 2001 2002-05-14 ang03 2002-05-09 1005 ang01 2002-05-09 1003 ang01 2002-05-14 2004 ang03 2002 2002-05-09 ang01 2002-05-07 1006 ang03 2002-05-14 1004 nem01 2002-05-07 2004 nem01 2003 2002-05-09 nem01 2002-05-14 2001 ang03 2002-05-09 1005 ang01 2002-05-09 2004 ang03 2002-05-09 ang01 2002-05-07 1006 ang03 2002-05-14 2004 nem01 2002-05-09 2003 nem01 2002-05-14 2001 ang03 2002-05-09 2004 ang03 2002-05-09 ang01 2002-05-07 2004 nem01 2002-05-09 2003 nem01 2002-05-14 2004 ang03 2002-05-09 48 2004 nem01 2002-05-09

SELECT * FROM regisztracio, tandijak WHERE regisztracio.okod=tandijak.okod; dkod okod datum okod tandij 1003 ang01 2002-05-14 ang01 5000 1005 ang01 2002-05-09 ang01 5000 2002 ang01 2002-05-07 ang01 5000 1001 nem01 2002-05-07 nem01 6000 1004 nem01 2002-05-07 nem01 6000 2003 nem01 2002-05-14 nem01 6000 2004 nem01 2002-05-09 nem01 6000 1002 ang03 2002-05-14 ang03 4000 1006 ang03 2002-05-14 ang03 4000 2001 ang03 2002-05-09 ang03 4000 2004 ang03 2002-05-09 ang03 4000 49

REGISZTRACIO dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 TANDIJAK okod tandij ang01 5000 ang02 10000 ang03 4000 nem01 6000 nem02 7000 SELECT regisztracio.okod, tandij FROM regisztracio, tandijak WHERE regisztracio.okod=tandijak.okod; okod tandij ang01 5000 ang01 5000 ang01 5000 nem01 6000 nem01 6000 nem01 6000 nem01 6000 ang03 4000 ang03 4000 ang03 4000 ang03 4000 50

REGISZTRACIO dkód okód dátum 1001 nem01 2002-05-07 1002 ang03 2002-05-14 1003 ang01 2002-05-14 1004 nem01 2002-05-07 1005 ang01 2002-05-09 1006 ang03 2002-05-14 2001 ang03 2002-05-09 2002 ang01 2002-05-07 2003 nem01 2002-05-14 2004 ang03 2002-05-09 2004 nem01 2002-05-09 SELECT regisztracio.okod, SUM(tandij) FROM regisztracio, tandijak WHERE regisztracio.okod=tandijak.okod GROUP BY okod; okod sum(tandij) ang01 15000 ang03 16000 nem01 24000 TANDIJAK okod tandij ang01 5000 ang02 10000 ang03 4000 nem01 6000 nem02 7000 51

52