ПРАКТИЧЕСКАЯ РАБОТА SQL ЗАПРОСЫ /LAPS, LOOM

Дтаграмма связаности:


В My SQL:

CREATE TABLE laps(
lapsID int not null PRIMARY KEY Identity(1,1),
nimi varchar(40) not null Unique,
pikkus smallint,
synniaasta int null,
synnilinn varchar(15)
);

-- tabeli kuvamine
select * from laps

-- tabeli andmete sisestamine
insert into laps(nimi,synnilinn,pikkus,synniaasta)
values ('Oleksei', 'Tartu',150,2008),
('Kyrylo', 'Tallin',150,2013),
('Egor', 'Tartu',150,2002),
('Nikita', 'Parnu',150,2005),
('Yuliia', 'Johvi',150,2007),
('Mihail', 'Tallin',150,2006),
('Alex', 'Tartu',150,2018),
('Alexandr', 'Parnu',150,2017),
('Vlad', 'Johvi',150,2015),
('Bohdan', 'Tallin',150,2014);

В XAMPP:

Вместо Identity(1,1) нужно использовать AUTO_INCREMENT


В My SQL:

CREATE TABLE loom(
loomID int not null PRIMARY KEY identity(1,1),
nimi varchar(40) not null,
kaal smallint,
lapsID int,
FOREIGN KEY (lapsID) REFERENCES laps(lapsID)
-- вставляем название таблицы и на что ссылается
);

insert into loom (nimi, kaal, lapsId)
Values ('Hiir Katty', 0.6, 3),
('Hiir Chelsey', 0.6, 3),
('Hamster Semon', 0.5, 3),
('Dog Gerda', 8, 5),
('Kass Moska', 04, 6)
Select * from laps
Select * from loom

В XAMPP:

Вместо Identity(1,1) нужно использовать AUTO_INCREMENT


В My SQL:

-- 0
-- naita koike
SELECT * from laps;

-- Naita ainult nimed
Select nimi from laps;

-- Naita ainult nimed mas algavad J tahega
Select nimi from laps
where nimi like 'J%';

-- naita kaks veergu nimi ja pikkus
Select nimi, pikkus from laps;
-- naita nimed algavad J tahega ja pikkus rohkem kui 130 
Select nimi, pikkus from laps 
where nimi like 'J%' and pikkus > 130;

-- pikkus on vahemikus (110, 130)
Select nimi, pikkus from laps
where pikkus between 110 and 130;
-- Select nimi, pikkus from lapswhere pikkus >= 110 and pikkus <=130;

В XAMPP:

Ничем не отличается


В XAMPP и My SQL нет различий

-- 2. Sorterimine DESC - по убыванию ASC - по возрастанию
SELECT nimi, pikkus
FROM laps
ORDER by nimi DESC

В XAMPP и My SQL нет различий

-- 3. Sorterimine by nimi and after by pikkus
SELECT nimi, pikkus
FROM laps
ORDER by nimi, pikkus

В XAMPP и My SQL нет различий

-- 5. Находть среднее значение по столюцу pikkus
-- Только для детей рождённых с 2000 года
-- И столбтк назовёт kesrmine_pikkus
SELECT AVG(pikkus) AS keskmine_pikkus
FROM laps
WHERE synniaasta > 2000

В XAMPP и My SQL нет различий

-- 6. Запрос обновления данных, Select до и после запроса для того, чтоб увидить изменение
Select * from laps
UPDATE laps
SET pikkus=pikkus*1.1
Select * from laps;

-- 6.1 Обновление с условием
UPDATE laps
set synnilinn = 'Tallinn'
Where nimi like 'J%'
Select * from laps;

В XAMPP и My SQL нет различий

Select * from laps, loom
where laps.lapsID = loom.lapsID;

В XAMPP и My SQL нет различий

Select loom.nimi, laps.nimi, laps.synniaasta
from laps, loom
where laps.lapsID = loom.lapsID;

В XAMPP и My SQL нет различий

-- INNER JOIN - Внутрение соединение
Select loom.nimi, laps.nimi, laps.synniasta
from laps inner join loom
on laps.lapsID = loom.lapsID;

В XAMPP и My SQL нет различий

-- Использование псевдонимов
Select lo.nimi, l.nimi, l.synniaasta
from laps l inner join loom lo
on l.lapsID = lo.lapsID;

1)Вывести имена и рост всех детей, чей рост меньше среднего и кто родился в 2017 году:

SELECT nimi, pikkus
FROM laps
WHERE pikkus < (SELECT AVG(pikkus) FROM laps) AND synniaasta = 2017;

2) Обновить таблицу loom и установить для всех животных с весом более 7 кг новое значение веса, равное текущему весу плюс 1 кг:

update loom
Set kaal = kaal + 1
where kaal > 7;

SELECT * from loom

3) Вывести имена и рост всех детей, родившихся в Тарту или Пярну

SELECT nimi, pikkus
FROM laps
WHERE synnilinn IN ('Tartu', 'Parnu');