Скачиваний:
11
Добавлен:
20.01.2023
Размер:
26.54 Кб
Скачать

Министерство образования Республики Беларусь

Учреждение образования

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Кафедра экономической информатики

ЛАБОРАТОРНАЯ РАБОТА №3

ЯЗЫК SQL. СОЗДАНИЕ ТАБЛИЦ И ОГРАНИЧЕНИЙ НА SQL. СОЗДАНИЕ ЗАПРОСОВ.

Вариант 13

Выполнил: студент гр. 972304

Рушева М. В.

Проверил:

Минск, 2022

Добавление записей в таблицы

use departaments

-- Departament

INSERT INTO Departament

VALUES('Отдел финансов', 420, '+375257691966', 'Рушева М М')

INSERT INTO Departament

VALUES('Отдел маркетинга', 1, '+375257391966', 'Пырко Вадим В')

INSERT INTO Departament

VALUES('Отдел разработки', 3, '+375212691966', 'Никто Н Н')

INSERT INTO Departament

VALUES('Отдел логистики', 2, '+37523331966', 'Вика М В')

INSERT INTO Departament

VALUES('Отдел технического контроля', 4, '+375257691966', 'Опять Никто Мн')

-- Employee

INSERT INTO Employee

VALUES('Рушева М М', 'Прочий обслуживающий персонал', 1, 'Jakuba Kolasa 53/3/83 Minsk', '2002-07-06', 2)

INSERT INTO Employee

VALUES('Г Г Г', 'Лаборант', 1, 'Jakuba Kolasa 23/3/83 Minsk', '2002-07-06', 1)

INSERT INTO Employee

VALUES('Никто Н Н', 'Конструктор', 1, 'Jakuba Kolasa 53/3/83 Minsk', '2002-07-06', 3)

INSERT INTO Employee(name, position, isMale, address, birthday)

VALUES('С У К', 'Конструктор', 1, 'Paris, Lenin Square', '2002-07-06')

INSERT INTO Employee

VALUES('А А А', 'Техник', 1, 'Jakuba Kolasa 53/3/83 Minsk', '2002-07-06', 5)

-- Organization

INSERT INTO Organization VALUES

('БелГазПром Банк', 'Банк', 'Минск', 'Беларусь', 'Сурганова 32', 'Вадим Викторович Ведрищев')

INSERT INTO Organization VALUES

('Шаурма Мираж', 'Ресторан', 'Минск', 'Беларусь', 'где то около комаровки', 'Я Не Могуэто')

INSERT INTO Organization(organizationName, typeOfActivity, city, country, address, directorName)

VALUES ('Трамп', 'Застройщик', 'Минск', 'Беларусь', 'Незалежнасьці 12', 'Господи Я Зае')

INSERT INTO Organization VALUES

('ОАО Украина', 'Церковь', 'Киев', 'Украина', 'Майдан', 'Никто Но Но')

INSERT INTO Organization VALUES

('ОАО Нильфгаард', 'Империя', 'Минск', 'Беларусь', 'Сурганова 32', 'Я Устала Капец')

-- Agreement

INSERT INTO Agreement VALUES

('BGP12221', '2022-02-24', 4422.23, 1)

INSERT INTO Agreement(agreementNumber, date, price)

VALUES('NFG-12', '1227-02-24', 800000)

INSERT INTO Agreement VALUES

('UK12', '2022-02-24', 3131212.23, 5)

INSERT INTO Agreement VALUES

('123321', '2022-02-24', 4422.23, 4)

INSERT INTO Agreement VALUES

('GG11112', '2022-02-24', 4422.23, 2)

-- DesignWork

INSERT INTO DesignWork VALUES

('2014-02-12', '2022-02-24', 1, 2)

INSERT INTO DesignWork VALUES

('2012-02-12', '2022-02-24', 2, 3)

INSERT INTO DesignWork VALUES

('2014-02-01', '2022-02-24', 4, 1)

INSERT INTO DesignWork VALUES

('2014-02-12', '2022-02-24', 1, 5)

INSERT INTO DesignWork VALUES

('2014-02-12', '2022-02-24', 2, 5)

select * from Departament

select * from Employee

select * from Organization

select * from Agreement

Запросы с отбором строк по условию

SELECT * FROM Employee

WHERE birthday < GETDATE()

SELECT * FROM Departament

WHERE floorNumber <= 4

SELECT * FROM DesignWork

WHERE startDate >= '2013-01-01'

-- AND, OR, NOT

SELECT * FROM Organization

WHERE city = 'Минск' OR city = 'Киев'

SELECT * FROM Agreement

WHERE price > 5000 AND date < '2022-01-01'

SELECT * FROM Employee

WHERE NOT position = 'Техник' AND NOT position = 'Конструктор'

-- compining logical operators

SELECT * FROM Organization

WHERE address LIKE '%32%' AND NOT typeOfActivity = 'Банк'

SELECT * FROM Employee

WHERE birthday BETWEEN '2001-01-01' AND '2004-01-01' AND NOT position IN('Конструктор')

-- Columns expressions

SELECT * FROM Agreement

WHERE price + agreementId < 800000

SELECT * FROM Agreement

WHERE price/100000 < agreementId

-- Sets

SELECT * FROM Agreement

WHERE price/100000 IN (2,4,8)

SELECT * FROM Employee

WHERE position IN ('Конструктор', 'Техник')

-- Ranges

SELECT * FROM Agreement

WHERE price/100000 BETWEEN 2 AND 8

SELECT * FROM Employee

WHERE position BETWEEN 'Лаборант' AND 'Техник'

-- Pattern

SELECT * FROM Employee

WHERE address LIKE '%53%'

SELECT * FROM Employee

WHERE name LIKE 'С%'

-- not null

SELECT * FROM Employee

WHERE departamentId IS NULL

SELECT * FROM Employee

WHERE departamentId IS NOT NULL

Многотабличные запросы

SELECT * FROM Employee, Departament

SELECT * FROM Organization CROSS JOIN Employee

------

SELECT * FROM Employee, Departament

WHERE Employee.departamentId = Departament.departamentId

SELECT * FROM Agreement

INNER JOIN Organization ON Organization.organizationId = Agreement.organizationId

-------

SELECT * FROM Agreement

INNER JOIN Organization ON Organization.organizationId = Agreement.organizationId

WHERE typeOfActivity = 'Банк'

SELECT * FROM DesignWork

INNER JOIN Departament ON Departament.departamentId = DesignWork.departamentId

WHERE departamentName LIKE '% % %'

SELECT * FROM DesignWork

INNER JOIN Departament ON Departament.departamentId = DesignWork.departamentId

INNER JOIN Agreement ON Agreement.agreementId = DesignWork.agreementId

SELECT * FROM Employee

FULL JOIN Departament ON Departament.departamentId = Employee.departamentId

SELECT * FROM Agreement

FULL JOIN Organization ON Organization.organizationId = Agreement.organizationId

SELECT * FROM Employee

LEFT JOIN Departament ON Departament.departamentId = Employee.departamentId

SELECT * FROM Agreement

LEFT JOIN Organization ON Organization.organizationId = Agreement.organizationId

SELECT * FROM Departament

RIGHT JOIN Employee ON Departament.departamentId = Employee.departamentId

SELECT * FROM Agreement

RIGHT JOIN Organization ON Organization.organizationId = Agreement.organizationId

SELECT em1.*

FROM Employee em1, Employee em2

WHERE em2.name LIKE '%Селявко%' AND em2.address = em1.address AND NOT em1.name LIKE '%Селявко%'

SELECT agr1.*

FROM Agreement agr1, Agreement agr2

WHERE agr2.agreementNumber = 'BGP12221' AND agr2.date = agr1.date AND NOT agr1.agreementNumber = 'BGP12221'

Запросы на группировку и сортировку, изменение, удаление и использование внутренних функций

-- COUNT

SELECT COUNT(*) as total_count_of_agreements FROM Agreement

SELECT COUNT(departamentId) as total_count_of_departaments FROM Employee

-- SUM

select sum(price) as total_price from Agreement

select sum(employeeId) as sum_of_id from Employee

-- UPPER/LOWER

select upper(name) as upper_name from Employee

select lower(name) as lower_name from Employee

-- DateTime Functions

select datediff(day, startDate, endDate) as count_of_days from DesignWork

select day(birthday) as day, month(birthday) as month, year(birthday) as year from Employee

-- Grouping by one column

select address, Count(*) from Employee

group by address

select price, sum(price) from Agreement

group by price

-- Grouping by several columns

select date, price, count(*) from Agreement

group by date, price

select startDate, endDate, count(*) from DesignWork

group by startDate, endDate

-- GroupBy + Having

select date, price, count(*) from Agreement

group by date, price

having count(*) > 1

select price, sum(price) from Agreement

group by price

having sum(price) <> 800000

-- Having without GroupBy

select sum(price) from Agreement

having sum(price) <> 800000

select count(*) from Agreement

having count(*) > 4

-- OrderBy

select * from Employee

order by name

select * from Employee

order by name desc

-- insert date

select * from Employee

select * from Departament

INSERT INTO Employee

VALUES('Селявко Иван Никитич', 'Прочий обслуживающий персонал', 1, 'Jakuba Kolasa 53/3/83 Minsk', '2002-07-06', 2)

INSERT INTO Departament

VALUES('Отдел разработки', 3, '+37512345678', 'Дольский Евгений')

select * from Employee

select * from Departament

-- update data

select * from DesignWork

update DesignWork

set startDate = DATEADD(DAY, 1, startDate)

select * from DesignWork

select * from Employee

update Employee

set name = lower(name)

select * from Employee

-- update data with where

select * from Agreement

update Agreement

set price = price + 1

where price <> 800000

select * from Agreement

select * from Employee

update Employee

set name = 'Селявко Иван Александрович'

where name LIKE '%елявко%'

select * from Employee

-- delete data

select * from Employee

delete Employee

where name like '%орович%'

select * from Employee

select * from Departament

delete Departament

where phone = '+37512345678'

select * from Departament

Соседние файлы в предмете Системы и Методы Управления Базами Данных