SQLite
(Data Manipulation Language, Data Definition Language, Transaction Control Language , Data Conrol Language)
Для навчання на убунту встановив собі sqlite3 та sqlite3 browser:
Для гарного відображення:
(Це в рамках навчання, для андроіду це робити не треба, а також в SQLite не має концепції логін/пароль)
1) Створити базу даних:
2) Створюємо таблицю:
CREATE TABLE anyTableName (
FirstFieldName INTEGER PRIMARY KEY AUTOINCREMENT,
SecondFieldName TEXT,
ThirdFieldName INTEGER);
PrimaryKey означає що дане поле є головним. Autoincrement означає що дане поле кожної нової строки таблиці буде мати наступне значення.
3) Створиться файл бази даних (скоріш за все на робочому столі), якщо є бажання , можна спробувати його відкрити графічно через sqliebrowser та переглянути ці поля.
4) Додати данні в таблицю:
INSERT INTO AnyTableName (SecondFieldName, ThirdFieldName) VALUES ('blabla', 123);
INSERT INTO artists DEFAULT VALUES;
5) Переглянути записи таблиці: -- Всі записи:
--Вивести всі id
--Вивести всі id та name
--Вивести всі id+name+age
--distinct - унікальні. Вивоить всі унікальні записи в полі Quantity таблиці invoice_items
--Обрати стовбчики invoicelineid, invoiceid, trackid,quantity змінивши invoiceid+100 та trackid*3 з таблиці invoice_items)
-- Вивести 5 шт із здвигом у 4
--Конкатенація строк
SELECT firstname || lastname FROM customers;
SELECT 'My name is '||firstname||' and surname is '|| lastname FROM customers;
ALIAS: Для гарного виводу назви колонки
SELECT 'My name is '||firstname||' and surname is '|| lastname as "Знайомство з іменами" FROM customers;
SELECT 'Мар''яна' as "Знайомство з іменами";
(колонка буде називатись Знайомство з іменами) (одинарні кавички двічі означають апостроф)
6) Фільтрування WHERE:
(вивести поля name з таблиці myFirstTable в яких поле id більше-дорівнює 3)
(Значення між) **BETWEEN '2010-01-01' AND '2010-01-31' - для дат. Також можна NOT BETWEEN
(Обирає рядки в яких EmployeeId рівний 2,4,5,8)
(Обрати всі рядки з таблиці invoices де колонка BillingState рівна null)
--Вивести всі рядки з таблиці employees в яких колонка LastNa me складається з 2 літер і починається на Р) --Вивести всі рядки з таблиці employees в яких колонка Lastname починається на Р)
(Умви можна комбінувати за допомогою OR та AND)
--Екранувати % та _ можна наступним чином:
(Замість LIKE можна використовувати GLOB 'Unixlike_patters'
7) СОРТУВАННЯ!
SELECT firstName, LastName, fax FROM customers ORDER BY fax(або вираз,функція, або число-номер стовбчика, наприклад 2) DESC(або ASC) NULLS FIRST(або LAST);
(сортувати можна по колонці, виразу або числу, за спаданням чи зростанням, та виводити NULL спочатку або в кінці)
(Композитне сортування: сортує по id, для тих в кого id однакові, сортувати їх по lastName, для тих в кого id та lastNmae однакові - сортувати по salary)
8) Видалення рядку таблиці:
(видалення рядку в якому id=6)
8) Оновлення данних у таблиці:
(В таблиці myFirstTable поставити поле name у значеня new Name для запису в якому id=5)
9) Зміна імені таблиці:
10) Видалення таблиці:
Робота з датами: https://www.sqlite.org/lang_datefunc.html Всі доступні функції гарно задокументовані
Типи даних: https://www.sqlite.org/datatype3.html
Всі функції SQLite: https://www.sqlite.org/lang_corefunc.html
Функції агрегації: https://www.sqlite.org/lang_aggfunc.html (ВАЖЛИВО: в селектах з функціями агрегації неможна разом використовувати звичайні(single row функції)
AVG, SUM, COUNT, MIN, MAX (серднє арифметичне, сумма всіх int значень у стовпцях, підрахунок рядків, мінімальне і максимальне значення у стовпчику
Про REPLACE можна прочитати тут: https://www.sqlitetutorial.net/sqlite-replace-statement/
The idea of the REPLACE statement is that when a UNIQUE or PRIMARY KEY constraint violation occurs, it does the following:
In the second step, if any constraint violation e.g., NOT NULL constraint occurs, the REPLACE statement will abort the action and roll back the transaction.
Example:
(по синтаксису схоже на INSERT)
Додати до бази даних ще одну:
***ALTER TABLE
Використовується для 3 речей:
- Перейменувати таблицю
- Додати стовбчик
- Перейменувати стовбчитк
Приклад:
ALTER TABLE devices RENAME TO equipment;
ALTER TABLE table_name ADD COLUMN column_definition;
ALTER TABLE table_name RENAME COLUMN current_name TO new_name;
***ДИНАІЧНО РАХУЄМІ стовпчики:
Якщо якийсь стовбчик має вираховуватись в залежності від того які значення в інших стовпчиках, то
column_name data_type [GENERATED ALWAYS] AS expression [VIRTUAL | STORED]
Приклад:

За замовчуванням якщо в кінці не вказати STORED то буде VIRTUAL.
VIRTUAL вираховується кожен раз за зверненням до стовбчика, а STORED вираховується і зберігається