Structured Query Language (Struktúrált lekérdez ı nyelv) Relációs adatbázisok kezelésére kifejlesztett szabvány né Nacsa Rozália nacsa@inf.elte.hu Fejlesztı : MySQLAB weboldal: www.mysql.com MySQL installálása. 3 MySQL installálása. MySQL installálása 3. Legyen a célkönyvtár neve mysql. A mysql-.0.-win.zip kicsomagolása után indítsa el a setup.exe programot. 5 6 ELTE Informatikai Kar
MySQL installálása. MySQL adatbáziskezelı szerver indítása WinMySQLadmin program indítása Csomagolja ki a mysql++-.7.--win3-vc++.zip fájlt. Legyen a célkönyvtár neve én mysql. 7 8 WinMySQLadmin Relációs adatbázis vnév 00 00 00 00...... Reláció ORAK ang0 :00:00 A zöld szemafor jelzi, ha fut a MySQL szerver. 9 nem0 :00:00 :00:00 0 vnév 00 00 003 00 Kinga 005 Hajnalka 006 00 Péter ORAK ISKOLA 00 00 003 00 005 006 00 vnév 00 00 003 00 Kinga 005 Hajnalka 006 00 Péter ORAK ISKOLA 00 00 003 00 005 006 00 ang0 :00:00 ang0 :00:00 :00:00 :00:00 nem0 :00:00 nem0 :00:00 ELTE Informatikai Kar
Kulcs vnév 00 00 003 00 Kinga 005 Hajnalka 006 00 Péter ORAK ISKOLA 00 00 003 Kulcs 00 005 006 00 Microsoft Windows XP [verziószám: 5..600] (C) Copyright 985-00 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.3.5-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> MySQL: parancssor ablak ang0 :00:00 nem0 :00:00 :00:00 3 Ha parancssor ablakból indítjuk a mysql.exe programot, akkor közvetlenül adhatunk ki parancsokat a MySQL adatbáziskezelı nek. 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) 5 Szintaxis: Példa: Adatbázis létrehozása: CREATE DATABASE mysql> create database iskola; Query OK, row affected (0.00 sec) mysql> CREATE DATABASE táblanév ; 6 Szintaxis: Példa: Adatbázis használatbavétele: USE USE táblanév ; mysql> use iskola; Database changed mysql> 7 CHAR(méret): INT(méret): DATE: TIME: Egyszer ő VARCHAR(méret): bb adattípusok fix (maximum méret) hosszúságú karakterlánc. Max: 55 hosszú. változó (maximum méret) hosszúságú karakterlánc. egész szám ( éé-hh-nn alakban); idő ( oo:pp:mm alakban) VARCHAR Péter DATE -09-3 TIME 08:30:00 8 ELTE Informatikai Kar 3
CREATE TABLE - Diakok; CREATE TABLE - Regisztracio; vnév CREATE TABLE diakok (dkod int() MARY KEY NOT, vnev VARCHAR(0), knev VARCHAR(0)); CREATE TABLE regisztracio ( dkod INT() NOT, CHAR() NOT, datum DATE, MARY KEY(dkod,) ); mysql> CREATE TABLE diakok -> (dkod int() MARY KEY NOT, -> vnev VARCHAR(0), -> knev VARCHAR(0)); Query OK, 0 rows affected (0.05 sec) 9 mysql> CREATE TABLE regisztracio -> ( dkod INT() NOT, -> CHAR() not null, -> datum DATE, -> MARY KEY(dkod,) ); Query OK, 0 rows affected (0.0 sec) 0 CREATE TABLE - Orak; DESCRIBE diakok; Field Type Null Key Default Extra dkod int() 0 vnev varchar(0) knev varchar(0) CREATE TABLE orak ( char(5) MARY KEY NOT, targy CHAR(0) NOT, INT(), VARCHAR(9), TIME, vege TIME); CREATE TABLE diakok mysql> CREATE TABLE orak ( char(5) MARY KEY NOT, targy CHAR(0) NOT, INT(), VARCHAR(9), TIME, vege TIME); Query OK, 0 rows affected (0.0 sec) (dkod int() MARY KEY NOT, vnev VARCHAR(0), knev VARCHAR(0)); DESCRIBE regisztracio; DESCRIBE orak; Field dkod datum Type int() char() date Null Key Default 0 Extra Field targy Type varchar(5) varchar(0) int() varchar(9) Null Key Default 0 Extra time vege time CREATE TABLE regisztracio ( dkod INT() NOT, CHAR() NOT, datum DATE, MARY KEY(dkod,) ); 3 CREATE TABLE orak ( char(5) MARY KEY NOT, targy CHAR(0) NOT, INT(), VARCHAR(9), TIME, vege TIME); ELTE Informatikai Kar
Táblázat struktúra módosítása: ALTER ALTER [IGNORE] TABLE táblanév alter_spec [,oszlopnév...] Field dkod vnev knev Type int() varchar(0) varchar(0) Null Key Default 0 Extra alter_spec: ADD [COLUMN] oszlop_def [FIRST AFTER oszlopnév ] or ADD [COLUMN] (oszlop_def, oszlop_def,...) or CHANGE [COLUMN] régi_oszlopnév oszlop_def 3 or MODIFY [COLUMN] oszlop_def or DROP [COLUMN] oszlopnév or DROP MARY KEY 6 or RENAME [TO] új_tablanév 7 or ORDER BY oszlop 8 oszlop def: oszlopnév típus [megszorítás] Field dkod vnev knev ALTER TABLE diakok CHANGE vnev vnev VARCHAR(5) NOT ; Type int() varchar(5) varchar(0) Null Key Default 0 mysql> alter table diakok change vnev vnev varchar(5) not null; Query OK, 0 rows affected (0.0 sec) Records: 0 Duplicates: 0 Warnings: 0 Extra 5 6 Új adatsor beszúrása: INSERT Új adatsor beszúrása: INSERT 00 vnév 00 vnév 00 INSERT INTO diakok VALUES (00,, ); INSERT INTO diakok VALUES (00,, ); INSERT INTO diakok VALUES (00,, ); mysql> INSERT INTO diakok -> VALUES (00,'',''); Query OK, row affected (0.0 sec) mysql> INSERT INTO diakok -> VALUES (00,'',''); Query OK, row affected (0.0 sec) 7 8 INSERT - Orak; INSERT - Regisztracio; 00 INSERT INTO orak VALUES (,,, Hétfı,, ); INSERT INTO regisztracio VALUES (00,, ); mysql> insert into orak VALUES('','',,'','',''); Query OK, row affected (0.00 sec) mysql> INSERT INTO regisztracio VALUES (00,'',''); Query OK, row affected (0.00 sec) 9 30 ELTE Informatikai Kar 5
Update - példa Delete - példa ang0 :00:00 ang0 :00:00 :00:00 nem0 :00:00 :00:00 nem0 :00:00 UPDATE orak SET =, vege=, = Szerda WHERE = AND = ; DELETE FROM orak WHERE targy= AND =; ang0 nem0 :00:00 3 ang0 :00:00 :00:00 3 ang0 nem0 Ha nem adunk where kiegészítést, akkor a táblázat összes sorát törli. NEM KÉRDEZ!!! Delete - példa :00:00 :00:00 :00:00 DELETE FROM orak; Táblázat (struktúra) törlése: DROP TABLE DROP TABLE táblanév;! NEM KÉRDEZ!!! 33 3 3 5 6 7 8 9 0 vnév 00 00 003 00 005 006 00 Kinga Hajnalka Péter SELECT * FROM diakok; 3 vnév 00 00 003 00 005 006 00 Kinga Hajnalka Péter SELECT dkod,knev FROM diakok WHERE vnev=""; 35 36 ELTE Informatikai Kar 6
3 00 00 003 00 005 SELECT dkod,datum FROM regisztracio WHERE LIKE '%0'; 00 00 003 Összetett lekérdezések - példa SELECT FROM regisztracio; 006 00 5 6 7 00 005 006 00 37 38 Összetett lekérdezések - példa 00 00 003 00 005 006 00 SELECT DISTINCT FROM regisztracio; vnév 00 00 003 00 005 006 00 Összetett lekérdezések - példa Kinga Hajnalka Péter SELECT COUNT(*) FROM diakok; 39 0 Összetett lekérdezések - példa Statisztikai függvények TANDIJAK tandij ang0 0000 nem0 SELECT AVG (tandij) FROM tandijak; 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 ELTE Informatikai Kar 7
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 y x négyzetgyöke Matematikai m ő veletek Matematikai függvények x előjelétől függően értéke -, 0, vagy (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 Egészre kerekített érték d db tizedesre kerekített érték 3 GROUP BY - Példa 00 00 003 00 005 006 00 SELECT, COUNT (dkod) FROM regisztracio GROUP BY ; 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 végzi el a megadott mő veletet. Having - Példa 00 00 003 00 005 006 00 SELECT, COUNT (dkod) FROM regisztracio GROUP BY HAVING COUNT (dkod) > 3; Group by - Having SELECT, COUNT (dkod) FROM regisztracio GROUP BY ; SELECT, COUNT (dkod) FROM regisztracio GROUP BY HAVING COUNT (dkod) > 3; 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. 5 6 00 00 003 00 005 006 00 count(dkod) 3 count(dkod) Order by - Példa vnév 00 00 003 00 Kinga 6 005 Hajnalka 3 006 7 00 Péter 5 SELECT vnev, knev, dkod FROM diakok WHERE knev<>"" ORDER BY vnev, knev; In - Példa vnév 00 00 003 00 Kinga 005 Hajnalka 006 00 Péter SELECT vnev, knev FROM diakok WHERE knev IN ("","Kinga"); 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. 7 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. 8 ELTE Informatikai Kar 8
Between - példa vnév 00 00 003 00 005 006 00 Kinga Hajnalka Péter SELECT dkod, vnev, knev FROM diakok WHERE dkod BETWEEN 003 AND ORDER BY dkod; A BETWEEN feltételes operátorral eldönthetjük, hogy a megjelölt oszlop adatai benne vannak-e a megadott intervallumban. 9 ang0 nem0 Több táblázat összekapcsolása: JOIN TANDIJAK tandij SELECT regisztracio.,tandij FROM tandijak, regisztracio; 0000 00 00 003 00 005 006 00 50 SELECT * FROM regisztracio, tandijak; SELECT * FROM regisztracio, tandijak; 00 00 003 00 005 006 00 ang0 0000 00 00 003 00 005 006 00 00 00 003 00 005 006 00 5 5 SELECT * FROM regisztracio, tandijak; 00 00 00 003 00 00 003 00 005 00 00 ang0 0000 006 005 003 00 006 00 00 005 006 00 nem0 00 00 003 00 00 00 005 003 006 00 00 005 006 00 53 SELECT * FROM regisztracio, tandijak WHERE regisztracio.=tandijak.; ang0 nem0 0000 00 00 003 00 005 006 00 5 ELTE Informatikai Kar 9
ELTE Informatikai Kar 0 55 00 006 005 00 003 00 00 SELECT * FROM regisztracio, tandijak WHERE regisztracio.=tandijak.; 0000 ang0 nem0 00 006 005 00 003 00 00 56 00 006 005 00 003 00 00 SELECT * FROM regisztracio, tandijak WHERE regisztracio.=tandijak.; 0000 ang0 nem0 00 006 005 00 003 00 00 00 006 005 00 003 00 00 00 006 005 00 003 00 00 00 006 005 00 003 00 00 57 SELECT * FROM regisztracio, tandijak WHERE regisztracio.=tandijak.; 00 006 00 00 00 005 003 tandij datum dkod 58 SELECT regisztracio., tandij FROM regisztracio, tandijak WHERE regisztracio.=tandijak.; tandij 00 006 005 00 003 00 00 nem0 0000 ang0 tandij TANDIJAK 59 00 006 005 00 003 00 00 nem0 0000 ang0 tandij TANDIJAK SELECT regisztracio., SUM(tandij) FROM regisztracio, tandijak WHERE regisztracio.=tandijak. GROUP BY ; sum(tandij) 60