Краткий курс по SQLite

Вывод списка уникальных значений
[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]