Вывод списка уникальных значений
[sourcecode language=’sql’]
SELECT DISTINCT vend_id FROM Products;
[/sourcecode]
Извлечь несколько первых записей
[sourcecode language=’sql’]
SELECT prod_name FROM Products LIMIT 5;
[/sourcecode]
Извлечь несколько записей, начиная с определенной
[sourcecode language=’sql’]
SELECT prod_name FROM Products LIMIT 5 OFFSET 5;
SELECT prod_name FROM Products LIMIT 5, 5; –аналогично
[/sourcecode]
Сортировка по параметру (номеру столбца)
[sourcecode language=’sql’]
SELECT prod_name FROM Products ORDER BY prod_name;
SELECT prod_id, prod_price, prod_name FROM Products ORDER BY 2, 3; –по номеру столбца
[/sourcecode]
Сортировка по убыванию
[sourcecode language=’sql’]
SELECT prod_name FROM Products ORDER BY prod_name DESC;
[/sourcecode]
Ключевое слово DESC применяется только к тому столбцу, после которого оно стоит. Если необходимо отсортировать данные в порядке убывания по нескольким столбцам, укажите для каждого из них ключевое СЛОВО DESC. Для сортировки по возрастанию нужно воспользоваться ключевым словом ASC |
Фильтрация
[sourcecode language=’sql’]
SELECT prod_name, prod_price
FROM Products
WHERE prod_price =3.49;
[/sourcecode]
При использовании обоих предложений, order by и where, убедитесь, что предложение order by следует за предложением where, иначе возникнет ошибка |
Операторы в предложении WHERE
= | Равенство |
!= | Неравенство |
< | Меньше |
> | больше |
<= | Меньше или равно |
>= | Больше или равно |
!< | Не меньше |
!> | Не больше |
BETWEEN | Вхождение в диапазон |
IS NULL | Значение NULL |
Поиск по значениям в диапазоне
[sourcecode language=’sql’]
SELECT prod_name, prod_price FROM Products
WHERE prod_price BETWEEN 5 AND 10;
[/sourcecode]
Проверка на NULL
[sourcecode language=’sql’]
SELECT prod_name
FROM Products
WHERE prod_price IS NULL;
[/sourcecode]
Использование нескольких условий (AND)
[sourcecode language=’sql’]
SELECT prod_id, prod_price, prod_name FROM Products
WHERE vend_id = ‘DLL01’ AND prod_price <=4;
[/sourcecode]
Диапазон условий (IN)
[sourcecode language=’sql’]
SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN (‘DLL01’, ‘BRS01’) — WHERE vend_id = ‘DLL01’ OR vend_id = ‘BRS01’ аналогично
ORDER BY prod_name
[/sourcecode]
Отрицание условий (NOT)
[sourcecode language=’sql’]
SELECT prod_name FROM Products
WHERE NOT vend_id = ‘DLL01’
ORDER BY prod_name;
[/sourcecode]
Поиск с использованием метасимволов
Предикат LIKE
[sourcecode language=’sql’]
SELECT prod_id, prod_name FROM Products
WHERE prod_name LIKE ‘Fish%’;
[/sourcecode]
Метасимвол знак подчеркивания ( _ )
Учитывается не множество символов, а только одного или нескольких (на конкретном месте).
[sourcecode language=’sql’]
SELECT prod_id, prod_name FROM Products
WHERE prod_name LIKE ‘_ inch teddy bear’;
[/sourcecode]
Метасимвол квадратные скобки ( [] )
Пример: Поиск клиентов, имена которых начинаются на J или на M
[sourcecode language=’sql’]
SELECT cust_contact FROM Customers
WHERE cust_contact LIKE ‘[JM]%’ –отрицание J и M ‘[^JM] %’
ORDER BY oust contact
[/sourcecode]
Создание вычисляемых полей
Конкатенация
[sourcecode language=’sql’]
SELECT name || ‘ (‘ || id || ‘) ‘ FROM users — RTRIM(name) отбросит пробелы справа
[/sourcecode]
Псевдонимы (AS)
т.к. после конкатенации появляется новый вычесляемый столбец, у него отсутствует имя. Присвоить псевдоним можно с помощью ключевого слова AS
[sourcecode language=’sql’]
SELECT RTRIM(id) || ‘ (‘ || RTRIM(name) || ‘) ‘
AS newTitle
FROM users
[/sourcecode]
Определение текущей даты и времени
[sourcecode language=’sql’]
SELECT order_num FROM Orders
WHERE strftime(‘%Y’, order_date) = 2015;
[/sourcecode]
Итоговые вычисления
Итоговые функции
AVG () | Среднее значение по столбцу |
COUNT () | Число строк в таблице |
MAX () | Наибольшее значение в столбце |
MIN () | Наименьшее значение в столбце |
SUM () | Сумма значений столбца |
AVG (среднее по столбцу)
[sourcecode language=’sql’]
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM Products;
[/sourcecode]
не используйте ключевое слово DISTINCT С функцией COUNT |
Комбинирование итоговых функций
[sourcecode language=’sql’]
SELECT COUNT (*) AS num_items,
MIN(prod_price) AS price_min,
MAX(prod_price) AS price_max,
AVG(prod_price) AS proce_avg FROM Products;
[/sourcecode]
Группировка данных
Создание групп
[sourcecode language=’sql’]
SELECT vend_id, COUNT(*) AS num prods
FROM Products
GROUP BY vend_id;
[/sourcecode]
Фильтрация групп
[sourcecode language=’sql’]
SELECT cust_id, COUNT(*) AS orders
FROM Orders
GROUP BY cust_id
HAVING COUNT(*) >= 2;
[/sourcecode]
Подзапросы
[sourcecode language=’sql’]
SELECT cust_id
FROM Orders
WHERE order_num IN (
SELECT order_num
FROM Orderltems
WHERE prod_id = ‘RGAN01’);
–без подзапросов
SELECT cust_name, cust_contact
FROM Customers, Orders, Orderlterns
WHERE Customers.cust_id = Orders.cust_id
AND Orderlterns.order_num = Orders.order_num
AND prod_id = ‘RGAN01’;
[/sourcecode]
Объединение таблиц
[sourcecode language=’sql’]
SELECT vend_name, prod_name, prod_price
FROM Vendors, Products
WHERE Vendors.vend id = Products.vend id;
[/sourcecode]
Внутренние объединения
[sourcecode language=’sql’]
SELECT vend_name, prod_name, prod_price
FROM Vendors INNER JOIN Products
ON Vendors.vend_id = Products.vend_id;
[/sourcecode]
Внешнее объединение
[sourcecode language=’sql’]
SELECT Customers. cust_id, Orders. order_num
FROM Customers LEFT OUTER JOIN Orders
ON Customers.cust_id = Orders.cust_id;
[/sourcecode]
Вставить данные (INSERT INTO SELECT)
[sourcecode language=’sql’]
INSERT INTO Customers(cust_id,cust_contact)
SELECT cust_id,cust_contact
FROM CustNew;
[/sourcecode]
Копирование данных из одной таблицы в другую
[sourcecode language=’sql’]
SELECT *
INTO CustCopy FROM Customers;
[/sourcecode]
Создание копии таблицы реальной БД
[sourcecode language=’sql’]
CREATE TABLE CustCopy AS SELECT * FROM Customers;
[/sourcecode]