Главная

SQL

MySQL


SELECT FROM:

Делаем запрос данных из таблицы.
Обязательно в конце ставить точку с запятой ;


// заходим в MySQL 
mysql -u root -p

// открываем базу данных 
USE имя_базы ;

// показать все данные из таблицы 
SELECT * FROM employees ; 

// показать все данные из таблицы где имя равно 'Mario' или id больше 200 
SELECT * FROM employees WHERE lastname='Mario' OR id>200; 

// показать все данные из таблицы, отсортированые по полю id,  в порядке убывания 
SELECT * FROM employees ORDER BY rating DESC; 

// запрос, который подсчитывает общую сумму денег у людей рожденных в один день и
выводит результаты в порядке убывания.
SELECT dateofbirth, SUM(money) FROM employees GROUP BY dateofbirth ORDER BY 2 DESC; // сопоставить колонку из первой таблицы к колонке из второй таблицы SELECT Orders.ordersNumber, Customers.customerName // колонки которые нужно сопоставить и вывести FROM Orders, Customers // из каких таблиц ? WHERE Orders.customerId=Customers.customerId; // общие значения из разных таблиц

Использование подзапросов :


// показываем все заказы из таблицы Orders принадлежащие продавцу 'Mario'(из таблицы Salers) 
SELECT * FROM Orders
WHERE salerID = (SELECT salerID
FROM Salers
WHERE name = 'Mario');

// запрос для вывода имен и рейтингов всех покупателей,
сделавших заказы на сумму выше средней по всем заказам.
SELECT Customers.rating, Customers.cname FROM Orders, Customers WHERE Orders.cnum=Customers.cnum AND Orders.amt>(SELECT AVG(amt) FROM Orders ); // запрос показывающий всех покупателей с максимальным рейтингом SELECT MAX(rating) FROM Customers ; // группировка запроса SELECT odate, SUM(amt) FROM Orders GROUP BY odate ORDER BY 2 DESC;

сложный запрос:

user
user.name + user_id

user_id (связаное поле)

order
order.id + user_id + order.status

нужно выбрать всех user у которых order.status только ноль
(у Alex юзера есть сразу два статуса в order табличке , ноль и единичка)

 SELECT table_user.id, table_user.name ,table_order.status FROM table_user 
 INNER JOIN table_order ON table_order.user_id = table_user.id  
 WHERE table_order.status=0 AND table_user.id 
 NOT IN ( 
 SELECT table_user.id FROM table_user 
 INNER JOIN table_order ON table_order.user_id = table_user.id  
 WHERE table_order.status>0 ) ;



Полезные ссылки: