Вы находитесь на странице: 1из 3

Часть 6: Урок 5.

Базы данных и язык SQL


Вопрос:
Написать запрос по w3schools.com 

Вывести (сделать выборку) всех сотрудников с именем Robert.

Ваш ответ:
SELECT * FROM Employees
WHERE FirstName='Robert';

Вопрос

Вывести (выбрать) наименования продуктов с кодами 1, 3, 7, 9 и цену, уменьшенную на 50%.

Ваш ответ:
SELECT ProductID, ProductName, Price AS OldPrise, Price*0.5 AS NewPrise
FROM Products
WHERE ProductID IN (1,3,7,9)

Вопрос:
Вывести (выбрать) все заказы сотрудника с номером 5 или заказы клиента с кодом больше 88 и
кодом грузоотправителя 1.

Ваш ответ:
SELECT * FROM Orders
WHERE EmployeeID=5 OR CustomerID>88 AND ShipperID=1

Вопрос:
Вывести все продукты, у которых код продукта >= 64 или продукты, у которых поставщик =
"Tokyo Traders" (подзапрос).

Ваш ответ:
SELECT * FROM Products
WHERE ProductID>=64 OR SupplierID=( SELECT SupplierID FROM Suppliers WHERE
SupplierName= 'Tokyo Traders')

Часть 7: Урок 6. SQL - отношения, связи в БД, нормализация БД, JOINы и работа с множествам.
Первое
Вывести (выбрать) заказы, закрепленные за сотрудником, в виде: OrderID, LastName, FirstName.
(Result: Number of Records: 196. Если у вас получается No result - запрос составлен неверно).
SELECT OrderID, LastName, FirstName FROM Orders
JOIN Employees ON Orders.EmployeeID=Employees.EmployeeID

Второе
Вывести (выбрать) всю информацию о сотрудниках, у которых нет ни одного заказа
(используйте один из видов join для решения).
(Result: Number of Records: 1. Если у вас получается No result - запрос составлен неверно). 

SELECT * FROM Employees


LEFT JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID
WHERE OrderID IS NULL
ORDER BY LastName

Третё
У нас есть две таблицы: Shippers и Suppliers, их необходимо объединить, чтобы сделать общую
таблицу, состоящую из двух колонок (в первой колонке - имя таблицы, с которой взята запись,
во второй колонке -название ShipperName или SupplierName.
(Result: Number of Records: 32. Если у вас получается No result - запрос составлен неверно).

SELECT "Shippers" AS TableName, ShipperName AS CompanyName


FROM Shippers
UNION
SELECT "Suppliers" AS TableName, SupplierName AS CompanyName
FROM Suppliers

Четвертое

Какие основные правила при работе с множествами (использование операторов UNION,


EXCEPT, INTERSECT)?
В запросах нужно использовать одинаковый список полей с совпадающими типами данных

Пятый
Вывести полный выбор записей из таблицы, которая указана после JOIN с
соответствующими записями (если таковые имеются) из таблицы, которая указана после
FROM:
правый джоин

Пятое
Что такое JOIN?
Операция обединения

Тесты
1-

SELECT MAX(OrderID), LastName, FirstName, OrderDate FROM Orders JOIN Employees ON


Orders.EmployeeID=Employees.EmployeeID WHERE Employees.LastName='Buchanan' AND
Employees.FirstName='Steven'

2-е
SELECT ProductName
FROM Products
WHERE Price>(SELECT AVG(Price) FROM Products)
Или
SELECT * FROM Products WHERE Price >(SELECT AVG(price) FROM Products) ORDER BY price

3-Е
SELECT ProductName, Quantity, Price, OrderID, Round(Quantity*Price) AS FinPrice
FROM Products
JOIN OrderDetails ON Products.ProductID=OrderDetails.ProductID
GROUP BY OrderID
Order BY ProductName
Если ошибка то так
SELECT OrderDetailID, OrderID, Quantity, Price, SUM(Quantity*Price) FROM OrderDetails JOIN Products ON
OrderDetails.ProductID=Products.ProductID GROUP BY OrderID ORDER BY OrderID

4-
INSERT INTO Employees (EmployeeID, LastName, FirstName, BirthDate, Photo, Notes)
VALUES (11, 'Andrey', 'Reznik', 1980-11-08, 'EmpID11.pic', 'Good guy')
Если не правильно
INSERT INTO Employees (EmployeeID) VALUES (11)

5-

UPDATE Orders SET EmployeeID=11


WHERE CustomerID=(89,90)
Или
UPDATE Orders SET EmployeeID=11 WHERE CustomerID=89 OR CustomerID=90

6-
SELECT ProductName, ROUND(Price*1.1) AS UpdatePrise
FROM Products
WHERE Price>(SELECT AVG(Price) FROM Products)

Или

UPDATE Products SET Price = Price*1.1 WHERE Price > (SELECT AVG (Price) FROM Products)