Felhasználói eszközök

Eszközök a webhelyen


oktatas:adatbazis-kezeles:adatbazis-pelda

< Adatbázis-kezelés

Adatbázis példa

  • Szerző: Sallai András
  • Copyright © Sallai András, 2018
  • Licenc: GNU Free Documentation License 1.3

Adatbázis létrehozása

CREATE DATABASE kek
CHARACTER SET utf8
COLLATE utf8_hungarian_ci

Egyetlen tábla

Tábla létrehozása:

create table dolgozok (
    az int not null primary key auto_increment,
    nev varchar(100),
    telepules varchar(100),
    fizetes double,
    szuletes date,
    belepes date);

Adat beszúrása:

INSERT INTO `dolgozok` (`az`, `nev`, `telepules`, `fizetes`, `szuletes`, `belepes`) VALUES
(1, 'Nagy János', 'Szolnok', 958000, '1972-03-25', '1998-07-01'),
(2, 'Erős István', 'Miskolc', 724000, '1982-01-01', '2001-05-01'),
(3, 'Kör László', 'Szolnok', 502000, '1991-08-13', '2015-10-01'),
(4, 'Forma Gábor', 'Miskolc', 575000, '1992-11-22', '2008-09-01'),
(5, 'Aranyos Katalin', 'Szeged', 912000, '1979-04-12', '2011-02-01'),
(6, 'Pár Beáta', 'Debrecen', 891500, '1983-08-22', '2009-05-01'),
(7, 'Langyos Béla', 'Szolnok', 817200, '1981-12-14', '2013-03-01'),
(8, 'Bő Mária', 'Szolnok', 911000, '1978-03-25', '2007-02-01');

A fizetések összegzése:

SELECT SUM(fizetes) AS "összes fizetés" FROM dolgozok

A fizetések átlaga:

SELECT avg(fizetes) AS "átlagfizetés" FROM dolgozok

A legnagyobb fizetés:

SELECT MAX(fizetes) AS "legnagyobb fizetés" FROM dolgozok

A legkisebb fizetés:

SELECT MIN(fizetes) AS "legkisebb fizetés" FROM dolgozok

Jelenítse meg a Miskolci dolgozók születési éveit:

SELECT YEAR(szuletes)
FROM dolgozok
WHERE telepules="Miskolc"

Jelenítsük meg azon dolgozók neveit és fizetésüket, akiknek a fizetése több mint 800000, idősebbek 30 évnél:

SELECT nev, fizetes, szuletes
FROM dolgozok
WHERE fizetes > 800000
AND (YEAR(now())-YEAR(szuletes)) > 30

Hány olyan dolgozó van 30 évesnél idősebb dolgozó van, akinek a fizetése több mint 900000?

SELECT COUNT(*)
FROM dolgozok
WHERE fizetes > 900000
AND (YEAR(now())-YEAR(szuletes)) > 30

Egyszerű eset

Egy dolgozó több projektben vehet részt. De egy projektet csak egy dolgozó csinálhat.

create database sargaKft;
use sargaKft
create table dolgozok (
az int not null private key auto_increment,
nev varchar(100));
create table projektek (
az int not null private key auto_increment,
nev varchar(100),
constraint fk_projektek  
foreign key(dolgozoAz)  
references dolgozok(az);

Hány projektjük van a dolgozóknak?

MariaDB [kek]> select distinct dolgozok.nev, 
(select count(*) from projektek where dolgozok.az = projektek.dolgozoAz)
as projektek 
from dolgozok inner join projektek 
on dolgozok.az = projektek.dolgozoAz;
+------------------+-----------+
| nev              | projektek |
+------------------+-----------+
| Vonalas László   |         2 |
| Kerek Béla       |         1 |
+------------------+-----------+
3 rows in set (0.00 sec)

MariaDB [kek]> 

Ha left join-t használunk, akkor azt is láthatjuk akinek nincs projektjük:

MariaDB [kek]> select distinct dolgozok.nev, 
(select count(*) from projektek 
where dolgozok.az = projektek.dolgozoAz) as projektek 
from dolgozok left join projektek 
on dolgozok.az = projektek.dolgozoAz;
+------------------+-----------+
| nev              | projektek |
+------------------+-----------+
| Nagy János       |         0 |
| Vonalas László   |         2 |
| Kerek Béla       |         1 |
+------------------+-----------+
4 rows in set (0.00 sec)

MariaDB [kek]> 

Összetett eset

Egy dolgozó több projektben vehet részt. Egy projekt több dolgozóhoz is tartozhat.

create table dolgozok (
az int not null primary key auto_increment,
nev varchar(100),
telepules varchar(100));
create table projektek (
az int not null primary key auto_increment,
nev varchar(100));
create table dolgozokProjektek (
dolgozoAz int,
projektAz int);
alter table dolgozokProjektek  
add foreign key (dolgozoAz) references dolgozok(az), 
add foreign key (projektAz) references projektek(az);

Függelék

További táblák

INSERT INTO `dolgozok` (`az`, `nev`, `telepules`, `fizetes`, `szuletes`, `belepes`) VALUES
(1, 'Nagy János', 'Szolnok', 958000, '1972-03-25', '1998-07-01'),
(2, 'Erős István', 'Miskolc', 724000, '1982-01-01', '2001-05-01'),
(3, 'Kör László', 'Szolnok', 502000, '1991-08-13', '2015-10-01'),
(4, 'Forma Gábor', 'Miskolc', 575000, '1992-11-22', '2008-09-01'),
(5, 'Aranyos Katalin', 'Szeged', 912000, '1979-04-12', '2011-02-01'),
(6, 'Pár Beáta', 'Debrecen', 891500, '1983-08-22', '2009-05-01'),
(7, 'Langyos Béla', 'Szolnok', 817200, '1981-12-14', '2013-03-01'),
(8, 'Bő Mária', 'Szolnok', 911000, '1978-03-25', '2007-02-01'),
(9, 'Zsoltos Ernő', 'Zalaegerszeg', 432000, '1990-03-01', '2012-05-24'),
(10, 'Arany László', 'Miskolc', 582000, '1976-03-05', '2008-08-27'),
(11, 'Voltos Péter', 'Szolnok', 682500, '1983-05-02', '2012-03-01'),
(12, 'Perszel Miklós', 'Szeged', 920000, '1987-08-23', '2015-09-01'),
(13, 'Parani Béla', 'Szeged', 821000, '1982-04-10', '2010-05-01'),
(14, 'Parkal Ferenc', 'Zalaegerszeg', 760000, '1982-09-02', '2014-05-01'),
(15, 'Torka Tibor', 'Zalaegerszeg', 586000, '1984-03-12', '2011-08-01'),
(16, 'Fora Lajos', 'Szeged', 485000, '1983-01-02', '2014-05-01'),
(17, 'Bari József', 'Miskolc', 835000, '1971-03-14', '2012-01-01');

Források

oktatas/adatbazis-kezeles/adatbazis-pelda.txt · Utolsó módosítás: 2019/08/16 04:52 szerkesztette: admin