CREATE DATABASE kek CHARACTER SET utf8 COLLATE utf8_hungarian_ci
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
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]>
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);
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');