SQL запити, які має знати кожен
Мова SQL відомий майже кожній людині, навіть тим, хто не використовує її безпосередньо у своїй роботі. Інструмент був розроблений у 1974 році для зберігання та обробки інформації. Сьогодні ця мова застосовується практично всіма системами управління базами даних (БД) як процесор для швидкої та ефективної обробки команд.
SQL запити активно застосовують веб-розробники, тестувальники для покращення сайтів та програмного забезпечення за допомогою побудови грамотної роботи з базами даних. Фахівці, які відповідають за тестування ПЗ, можуть допомагати підприємцям приймати ефективніші рішення, ґрунтуючись на масивах інформації. Маркетологи також використовують цю мову, оскільки з її допомогою можна ще глибше аналізувати поведінку цільової аудиторії.
Які основні запити SQL має знати кожна людина, яка працює із СУБД? У цій статті поговоримо про різновиди та ключові команди, які необхідно в обов'язковому порядку знати маркетологам, тестувальникам, розробникам та іншим фахівцям.
Різновиди SQL-запитів
Мова складається з певного набору команд, декларативних ключових запитів, які є інструкціями для БД. За допомогою таких запитів можливо:
- створювати, видаляти таблички з БД;
- вносити нові та додаткові відомості;
- коригувати існуючі записи;
- шукати інформацію та знаходити відомості, з урахуванням певних запитів.
Абсолютно всі ключові запити можна поділити на 4 основні групи. Пропонуємо зупинитися на кожній варіації докладніше.
Data Definition Language
Абревіатура DDL розшифровується безпосередньо як мова визначення даних. Сюди можна віднести такі ключові слова, як CREATE (створити), RENAME (перейменувати), DROP та ін.Усі вони мають на увазі визначення та управління структурою БД. Запити застосовуються до створення БД, безпосереднього їх описи і структурування, визначення точної схеми розміщення відомостей у них.
Data Manipulation Language або DML
Йдеться про маніпулювання інформацією. Ця мова позначається як DML. До цієї категорії ключових слів відносять такі команди:
- DELETE (видалити);
- SELECT (вибрати);
- UPDATE (оновити);
- INSERT (вставити) та інші подібні.
Такі запити застосовують для зміни, отримання, оновлення, видалення відомостей із БД.
Data Control Language або DCL
Це мова керування даними. Сюди входять ключові слова, які відповідають за дозвіл, права та різні обмеження доступу до БД налаштування. Найбільш затребуваними, наприклад, вважаються DENY та GRANT.
Transaction Control Language або TCL
Під цією абревіатурою розуміють мову управління операціями. Запити в SQL у разі представлені командами управління транзакціями, їх життєвими циклами. Наведемо приклад – COMMIT та ROLLBACK TRANSACTION, а також BEGIN TRANSACTION.
Основні SQL команди
Абсолютно всі операції, які можна здійснити з БД і відомостями в них, входять у таке поняття як CRUPD. Ця абревіатура розшифровується та перекладається як створити, прочитати, оновити, видалити. Дані команди вважаються основними, які можуть здійснювати користувачі, роблячи запити безпосередньо до СУБД:
- CREATE - створення інформації у БД;
- READ – читання, отримання відомостей із бази;
- UPDATE – оновлення, виконання будь-яких маніпуляцій із відомостями;
- DELETE – видалення інформації.
Щоб здійснювати різноманітні операції з даними SQL, потрібно використовувати спеціальні ключі (оператори). Такі команди надають можливість максимально швидко та ефективно працювати з СУБД, заощаджуючи час, отримуючи необхідні дані з великого масиву інформації.
Базові SQL запити, приклади:
- CREATE DATABASE – створення БД;
- CREATE TABLE - нова таблиця в базі із зазначеними іменами стовпців;
- ALTER TABLE – додавання шпальт у вже створеній табличці;
- INSERT - команда, що відповідає за вставку відомостей в таблицю, створення нових рядків;
- SELECT - вибірка інформації з бази;
- WHERE – допомагає створювати конкретніші команди;
- BETWEEN, OR, AND – допомагають максимально уточнити запит (додавання більшої кількості критеріїв WHERE);
- ORDER BY – сортування видачі інформації по шпальтах, з урахуванням зазначеної команди SELECT;
- GROUP BY – комбінування рядків з аналогічними чи схожими відомостями;
- LIMIT – вказує максимальну кількість рядків, які відображатимуться в результатах;
- UPDATE – оновлення запису у табличках БД;
- DROP COLUMN - видалення стовпця з таблиці;
- DROP TABLE – видалення всієї таблички повністю.
Це основні SQL запити для початківців, які можуть знадобитися всім користувачам, що працюють з великими базами даних за допомогою мови структурованих команд.
Додаткові функції, підзапити
Розробникам, тестувальникам програмного забезпечення, маркетологам також можуть бути потрібні додаткові команди для виконання більш конкретних дій з БД. Наприклад, агрегатні функції, що дозволяють проводити обчислення всередині сформованої вибірки:
- COUNT – команда допомагає повернути кількість рядків отриманої вибірки, якщо в стовпцях є не значення NULL (нуль).
- SUM – виконує обчислення, повернення суми чисел у вказаному стовпці.
- AVG – відповідає за обчислення, повернення усередненого показника вибраного стовпця.
- MAX – дозволяє повернути найбільше значення.
- MIN – повертає мінімальне значення.
Такі функції використовуються у поєднанні з назвою стовпця, де потрібно виконати відповідні дії.
Також є вкладені запити SQL.Вони є команди всередині інших запитів, які фільтрують значення вибірки точніше. Наприклад, DISTINCT дозволяє прибрати з виданої інформації всі результати, що дублюються.
Висновок
Мова структурованих команд може використовуватись різними фахівцями, які працюють з великими масивами інформації в СУБД. Застосування SQL-запитів надає можливість максимально швидко та ефективно отримувати відомості, аналізувати їх та приймати необхідне для розвитку бізнесу рішення. У нашій статті ми поговорили про базові ключові слова, які можуть знадобитися розробникам та тестувальникам ПЗ, маркетологам.
Професія Frontend-розробник є лідером за кількістю запитів від роботодавців. Без цього фахівця не може обійтися жодна сучасна компанія, яка має сайт. Хочете стати Frontend-розробником та створювати сайти, інтернет-магазини, маркетплейси та інше? Записуйтесь на наш курс!
QA Automation Engineer – це спеціаліст, який забезпечує якість продукту та контролює всі етапи розробки з моменту появи ідеї до релізу. Він має компетенції і тестувальника та розробника. Він бере участь у всіх процесах розробки: від підготовки стандартів і вимог до розробки продукту. А також володіє ручним тестуванням та пише скрипти для автоматизації цього процесу, повідомляє про проблеми та контролює їх виправлення.
Project Manager — фахівець, без якого не може обійтись жоден IT-проект. Якщо ви хочете увійти до сфери IT-технологій, але вивчати мови програмування це не для вас, тоді професія Project Manager — те, що вам потрібно! Запишіться на курс Project Management та почніть свій шлях до IT!
Огляд основних SQL запитів
Кожен сайт в Інтернеті, будь-який проект, який обробляє значний обсяг інформації, змушений зберігати цю інформацію у тих чи інших базах даних (БД).Переважна більшість проектів інформацію зберігають у БД реляційного типу, роблячи записи різних подобах таблиць. Як внесення нових записів, так і звернення до наявних здійснюється завдяки використанню запитів, що складаються конструкціями SQL (structured query language) – непроцедурної декларативної мови структурованих запитів. У нашому випадку це має на увазі, що, використовуючи конструкції SQL, ми будемо звертатися до БД, повідомляючи, що потрібно зробити з даними, але не вказуючи спосіб, як саме це потрібно зробити.
Фактично, SQL є набором стандартів для написання запитів до БД. Остання чинна редакція стандартів мови SQL - ISO/IEC 9075:2016.
Грунтуючись на вказаних стандартах мови SQL, ряд організацій випустили свої розширені версії стандартів зазначеної мови. Подібні версії іноді називають діалектами SQL.
Варіанти специфікацій SQL розробляються компаніями та спільнотами і служать, відповідно, для роботи з різними СУБД (Системами Управління Базами Даних) – системами програм, заточених під роботу з продуктами зі своєї інфраструктури.
Найбільш застосовувані на сьогодні СУБД, які використовують свої стандарти (розширення) SQL:
MySQL - СУБД, що належить компанії Oracle.
PostgreSQL – вільна СУБД, що підтримується та розвивається спільнотою.
Microsoft SQL Server - СУБД, що належить компанії Microsoft. Застосовує діалект Transact-SQL (T-SQL).
Завдяки тому, що діалекти SQL, що створюються, специфікуються і використовуються різними організаціями, мають як спільні риси, так і ряд відмінностей у можливостях розширень.
Загальними рисами діалектів є основні конструкції, які застосовуються практично без відмінностей у багатьох реляційних БД. Основні відмінності діалектів полягають у відмінностях використаних типів даних, кількості, реалізації та детальних можливостей команд. Різні діалекти застосовують як різні набори зарезервованих слів, і різні набори команд.
Тут ми розглядатимемо запити, застосовуючи конструкції зі специфікацій діалекту T-SQL.
Торкнемося класифікації SQL запитів.
Вирізняють такі види SQL запитів:
DDL (Data Definition Language) - мова визначення даних. Завданням DDL запитів є створення БД та опис її структури. Запитами такого виду встановлюються правила того, як різні дані будуть розміщуватися в БД.
DML (Data Manipulation Language) – мова маніпулювання даними. До запитів цього входять різні команди, використовуючи які безпосередньо виробляються деякі маніпуляції з даними. DML-запити потрібні для додавання змін до вже внесених даних, для отримання даних з БД, для їх збереження, для оновлення різних записів і для їх видалення з БД. До елементів DML-звернень входить основна частина SQL операторів.
DCL (Data Control Language) – мова управління даними. Включає запити та команди, що стосуються дозволів, прав та інших налаштувань СУБД.
TCL (Transaction Control Language) – мова управління транзакціями. Конструкції такого типу застосовують для керування змінами, які виробляються з використанням DML запитів. Конструкції TCL дозволяють нам проводити об'єднання DML запитів до наборів транзакцій.
Основні типи SQL запитів щодо їх видів:
Нижче ми розглянемо практичні приклади застосування SQL запитів взаємодії з БД використовуючи запити двох категорій – DDL і DML.
Тема пов'язана із спеціальностями:
Створення та налаштування бази даних
Нам потрібна буде для прикладів БД MS SQL Server 2017 та MS SQL Server Management Studio 2017.
Розглянемо послідовність дій того, як створити запит SQL. Скориставшись Management Studio, спочатку створимо новий редактор скриптів. Щоб це зробити, на стандартній панелі інструментів виберіть «Створити запит». Або скористаємося клавіатурною комбінацією Ctrl+N.
Натискаючи кнопку «Створити запит» у Management Studio, ми відкриваємо тестовий редактор, використовуючи який можна виконувати написання SQL запитів, зберігати їх і запускати.
Використовуємо для початку прості запити SQL, завдяки яким можна створити та налаштувати нову БД, щоб отримати можливість надалі з нею працювати.
Створимо нову БД з ім'ям b_library» для бібліотеки книг. Щоб це робити, наберемо в редакторі такий SQL запит:
Далі виділимо введений текст та натиснемо F5 або кнопку «Виконати». У нас буде БД «b_library».
Усі подальші маніпуляції ми можемо провести із цією створеною нами БД. Для цього спочатку підключимося до цієї бази:
У БД «b_library» створимо таблицю авторів «tAuthors» з такими стовпцями: AuthorId, AuthorFirstName, AuthorLastName, AuthorAge:
CREATE TABLE tAuthors (
AuthorId INT IDENTITY (1, 1) NOT NULL,
AuthorFirstName NVARCHAR (20) NOT NULL,
AuthorLastName NVARCHAR (20) NOT NULL,
AuthorAge INT NOT NULL
);
Заповнимо нашу таблицю такими авторами: Олександр Пушкін, Сергій Єсенін, Джек Лондон, Шота Руставелі та Рабіндранат Тагор. Для цього використовуємо такий SQL запит:
INSERT tAuthors VALUES
('Олександр', 'Пушкін', '37'),
("Сергій", "Єсенін", "30"),
('Джек', 'Лондон', '40'),
('Шота', 'Руставелі', '44'),
('Рабіндранат', 'Тагор', '80');
Ми можемо подивитися в «tAuthors» записи, шляхом відправлення до СУБД простого SQL запиту:
У нашій БД «b_library» ми створили першу таблицю «tAuthors», заповнили «tAuthors» авторами книг і тепер можемо розглянути різні приклади SQL запитів, якими зможемо взаємодіяти з БД.
Приклади найпростіших запитів SQL до баз даних.
Розглянемо основні запити SQL.
SELECT
1) Виведемо всі наявні у нас БД:
2) Виведемо всі таблиці у створеній нами раніше БД «b_library»:
3) Виводимо ще раз наявні в нас записи за авторами книг із створеної вищеtAuthors»:
4) Виведемо інформацію про те, скільки у нас є записів рядків у «tAuthors»:
5) Виведемо з «tAuthors» два записи, починаючи з четвертого. Використовуючи ключове слово OFFSET, пропустимо перші три записи, а завдяки використанню ключового слова FETCH – позначимо вибірку наступних 2 рядків (ONLY):
6) Виведемо з «tAuthors» всі записи із сортуванням в алфавітному порядку за першою літерою імені автора:
7) Виведемо з «tAuthors» дані, попередньо по AuthorId відсортувавши їх за спаданням:
8) Виберемо записи з «tAuthors», значення AuthorFirstName у яких відповідає імені «Олександр»:
9) Виберемо з «tAuthors» записи, де ім'я автора AuthorFirstName починається з «се»:
10) Виберемо з «tAuthors» записи, у яких ім'я автора (AuthorFirstName) закінчується на «ат»:
Відео курси за схожою тематикою:
Повний посібник із запитів SQL
SQL (Structured Query Language) - це мова запитів, за допомогою якої можна керувати даними в реляційних базах даних (БД). SQL-запити складаються з операторів – спеціальних символів чи ключових слів, які формують команди. Розберемося, із чого складаються запити SQL та як їх писати.
Базові оператори
Перед вивченням структури SQL-запиту та команд познайомимося з операторами порівняння, арифметичними і логічними операторами, які знадобляться для роботи із запитами.
Оператори порівняння
Арифметичні оператори
Логічні оператори AND, OR та NOT
AND повертає TRUEякщо обидві умови істинні, інакше — FALSE. У деяких реалізаціях SQL (наприклад, PostgreSQL) можна використовувати ||. OR повертає TRUEякщо хоча б одна з умов істинна, інакше — FALSE. У PostgreSQL допускається позначення ~. NOT - Інвертує значення умови (робить справжнє значення хибним і навпаки).
Структура SQL-запиту
Запит має бути правильно сформульований, щоб система управління базами даних (СУБД) змогла його опрацювати. Для цього використовують структуру SQL-запиту, яка складається з обов'язкових операторів. SELECT і FROM, а також опціональних: WHERE, GROUP BY, HAVING і ORDER BY. Ці оператори належать до категорії команд Data Query Language (DQL). Приклад структури запиту. Джерело Для запитів SQL не критично, написані вони в один рядок або у стовпчик. Головне, щоб запит був коректним. Однак для підвищення читання довгі запити доцільно форматувати у стовпчик.
Категорії команд у SQL
Data Query Language (DQL) — мова запитів
Оператори цієї категорії використовуються для вилучення даних з БД, їх сортування та угруповання. Якщо баз даних кілька, а роботи потрібна конкретна БД, використовується оператор USE:
Запит встановить БД database_name як активну. Усі наступні запити SQL будуть виконані нею.
SELECT та FROM
Є основними та обов'язковими компонентами SQL-запиту для отримання даних. Вони працюють у парі, де SELECT визначає, які стовпці з даними потрібно витягти, а FROM показує, з якої таблиці взяти ці дані.
SELECT column1, column2, . FROM table_name;
SELECT * FROM employees;
SELECT first_name, last_name, email FROM employees;
SQL-агрегатні функції (COUNT, SUM, AVG, MAX, MIN)
Використовуються для виконання обчислень над наборами значень та повернення єдиного результуючого значення.
COUNT обчислює кількість рядків у результуючому наборі даних.
SELECT COUNT(*) FROM table_name;
SUM обчислює суму значень у зазначеному стовпці.
SELECT SUM(salary) FROM employees;
AVG обчислює середнє значення із зазначеного стовпця.
SELECT AVG(age) FROM employees;
MAX повертає максимальне значення із зазначеного стовпця.
SELECT MAX(price) FROM products;
MIN повертає мінімальне значення із зазначеного стовпця.
SELECT MIN(stock) FROM inventory;
Оператор AS
Задає більш читальний псевдонім стовпцю чи таблиці.
SELECT SUM(salary) AS total_salary FROM employees;
SUM (salary) - Агрегатна функція, яка обчислює загальну суму значень в стовпці salary;
AS total_salary задає псевдонім total_salary результату функції SUM.
WHERE
Цей оператор визначає, над якими даними будуть здійснюватися операції. Умови вибору цільових даних мають бути прописані в предикатах - виразах, які оцінюють значення як TRUE, FALSE або UNKNOWN.
SELECT column1, column2, . FROM table_nameWHERE condition;
condition - умова (предикат), якій повинні відповідати дані.
- Наприклад, так можна реалізувати запит на вибірку співробітників із зарплатою понад 50 000:
SELECT first_name, last_name, salary FROM employees WHERE salary > 50000;
Логічні оператори BETWEEN, LIKE, IN, IS NULL
BETWEEN
Потрібен для вибору значень у межах заданого діапазону.
SELECT first_name, last_name, salary FROM employees WHERE salary BETWEEN 50000 AND 80000;
Використовується для зіставлення рядків із шаблоном під час використання спеціальних символів (наприклад, % для будь-якої кількості символів та _ для одного символу).
SELECT first_name, last_name FROM customers WHERE first_name LIKE 'A%';
Використовується для порівняння з набором значень, перелічених у списку.
SELECT product_name, category FROM products WHERE category IN ('Electronics', 'Clothing');
IS NULL
Потрібний вибору рядків, у яких відсутня значення стовпця (є NULL).
SELECT first_name, last_name FROM customers WHERE phone_number IS NULL;
GROUP BY
Оператор для угруповання рядків за значеннями певних стовпців. Це дозволяє застосовувати агрегатні функції до кожної групи окремо.
SELECT column1, column2, . aggregate_function(column) FROM table_name GROUP BY column1, column2, . ;
column1, column2, ... - Стовпці, за якими потрібно згрупувати дані;
aggregate_function(column) - агрегатна функція, що застосовується до стовпчиків для кожної групи.
SELECT category, COUNT(*) AS product_count FROM products GROUP BY category;
SELECT MONTH(sale_date) AS month, SUM(sale_amount) AS total_sales FROM sales GROUP BY MONTH(sale_date);
Станьте аналітиком даних та отримайте затребувану спеціальність
HAVING
Застосовують для фільтрації результатів запиту, згрупованих з використанням оператора GROUP BY.
SELECT column1, column2, . aggregate_function(column) FROM table_nameGROUP BY column1, column2, . HAVING condition;
condition – умова, якій повинні відповідати результати після застосування агрегатних функцій.
SELECT category, AVG(quantity) AS avg_quantity FROM products GROUP BY category HAVING AVG(quantity) > 50;
SELECT customer_id, AVG(order_amount) AS avg_order_amount FROM orders GROUP BY customer_id HAVING AVG(order_amount) > 1000;
ORDER BY
Він дозволяє впорядкувати виведення даних у порядку — відсортувати по одному чи кількох стовпцям.
SELECT column1, column2, . FROM table_name ORDER BY column1 [ASC], column2 [ASC], . ;
ASC (або DESC) – необов'язкове ключове слово, яке визначає порядок сортування. За замовчуванням використовується ASC (порядок зростання), але можна вказати DESC (порядок спадання).
SELECT order_id, order_date, customer_id FROM orders ORDER BY order_date DESC;
Обмежувальні конструкції LIMIT та OFFSET
Ці оператори необхідні обмеження кількості рядків, повертаних запитом.
Визначає кількість рядків, які потрібно повернути. Якщо вона дорівнює нулю, запит повертає порожній набір результатів.
SELECT column1, column2, . FROM table_nameLIMIT number_of_rows;
number_of_rows – кількість рядків, які потрібно повернути. Якщо значення дорівнює нулю, запит поверне порожній набір результатів.
OFFSET
Вказує, скільки рядків потрібно пропустити перед поверненням результату. Якщо не визначати OFFSET, запит повертає дані, починаючи з першого рядка, зазначеного в SELECT.
SELECT column1, column2, . FROM table_name OFFSET number_of_rows_to_skip;
number_of_rows_to_skip – кількість рядків, які потрібно пропустити перед поверненням результату.
Оператори LIMIT і OFFSET найкраще використовувати разом з ORDER BY. Це впорядкує результат, що повертається.
Data Definition Language (DDL) - мова визначення даних
Ці команди використовуються визначення та управління структурою БД та його об'єктів, як-от таблиці, індекси тощо.
CREATE
Використовується для створення БД та її об'єктів.
CREATE DATABASE - створення БД.
CREATE DATABASE my_database;
CREATE TABLE - Створення таблиці.
CREATE TABLE employees ( employee_id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), hire_date DATE );
name VARCHAR(50) створює стовпець з ім'ям name, який міститиме строкові значення (VARCHAR) довжиною не більше 50 символів;
date DATE створює стовпець з ім'ям date, який міститиме дати.
CREATE INDEX - створення індексу.
Присвоєння індексу одному чи кільком стовпцям прискорює пошук даних.
CREATE INDEX idx_last_name ON employees(last_name);
Оператор ON вказує на те, що індекс буде створено на стовпчику last_name таблиці last_name.
CREATE VIEW - створення уявлення.
Подання (view) - це віртуальна таблиця, що базується на результаті запиту.
CREATE VIEW employee_view AS SELECT first_name, last_name FROM employees;
CREATE SCHEMA - створення схеми.
Схема — це контейнер для зберігання об'єктів БД, таких як таблиці, подання та індекси, які можуть бути організовані та керуватися разом.
CREATE SCHEMA my_schema;
Після створення схеми до неї можна додавати об'єкти, наприклад таблицю:
CREATE TABLE my_schema.my_table
CREATE TRIGGER - створення тригера.
Тригер це набір інструкцій SQL, який автоматично виконується при настанні певної події БД, такого як вставка, оновлення або видалення запису з таблиці SQL.
CREATE TRIGGER trigger_name BEFORE INSERT ON table_name FOR EACH ROW - тіло тригера (код, який буде виконано після спрацювання тригера)
BEFORE (або AFTER) - Вказівка часу спрацьовування тригера (до або після виконання операції);
INSERT (або UPDATE, DELETE) - Визначення операції, до або після якої спрацює тригер;
ON table_name - Вказівка таблиці, до якої прив'язаний тригер;
FOR EACH ROW (або STATEMENT) — умова, чи тригер виконуватиметься для кожного рядка (FOR EACH ROW) або кожного оператора (FOR EACH STATEMENT). Ця частина синтаксису може бути відсутня в деяких СУБД.
CREATE PROCEDURE
Процедура є набір інструкцій SQL, які виконують певну задачу або набір завдань у БД. Вона може приймати параметри, обробляти дані та повертати результати.
CREATE PROCEDURE get_employee_count() BEGIN SELECT COUNT(*) FROM employees; END;
Оператор BEGIN позначає початок транзакції (сукупності операцій), а END - її завершення.
CALL get_employee_count();
CALL викликає набір інструкцій із процедури або функції.
DROP
Використовується для видалення об'єктів.
Аналогічно DROP можна використовувати й іншими об'єктами, зокрема і з БД.
ALTER
Використовується зміни структури існуючих об'єктів БД.
ALTER TABLE my_table ADD COLUMN age INT;
Додаємо стовпець (COLUMN) з ім'ям age та форматом даних INT.
TRUNCATE
Потрібен видалення всіх записів з таблиці, у своїй зберігши структуру таблиці.
TRUNCATE TABLE my_table;
RENAME
Оператор для перейменування об'єктів БД.
RENAME TABLE old_table TO new_table;
Оператор TO вказує на нове значення (нове ім'я або місцезнаходження).
COMMENT
Використовується для додавання коментарів до об'єктів БД.
COMMENT ON TABLE employees IS 'Таблиця для зберігання інформації про співробітників'
Оператор IS вказує на об'єкт команди. В даному випадку — на текст, який буде коментарем до таблиці.
Data Manipulation Language (DML) - мова маніпулювання даними
Використовується до роботи з даними усередині таблиць. До DML відносяться оператори INSERT, UPDATE і DELETE. Сюди можна також віднести SELECT і FROM, але вони є частиною DQL.
INSERT
Додає нові рядки даних до таблиці.
INSERT INTO table_name (column1, column2, . ) VALUES (value1, value2, . );
де:
INTO вказує місце, куди слід помістити дані;
VALUES вказує значення, які будуть вставлені у відповідні колонки таблиці.
UPDATE
Оновлює існуючі рядки даних у таблиці.
UPDATE table_name SET column1 = value1, column2 = value2, . WHERE condition;
SET — оператор для визначення значення змінної (у разі стовпцям).
DELETE
Видаляє рядки даних із таблиці.
DELETE FROM table_nameWHERE condition;
Data Control Language (DCL) — мова керування даними
Використовується для управління правами доступу до даних та контролю над БД.
GRANT
Надає користувачеві або ролі певних привілеїв на об'єкт БД.
Роль можна створити за допомогою команди CREATE ROLE role_name. Замість призначати привілеї окремим користувачам, їх можна призначати ролям.
GRANT SELECT, INSERT ON employees TO user1;
Користувач user1 отримує привілеї SELECT та INSERT на таблицю employees.
REVOKE
Скасує певні привілеї у користувача чи ролі об'єкт БД.
REVOKE SELECT, INSERT ON employees FROM user1;
У користувача user1 відгукуються привілеї SELECT та INSERT на таблицю employees.
Transaction Control Language (TCL) - мова керування транзакціями
Він дозволяє контролювати, зберігати або скасовувати зміни, зроблені в рамках транзакції - сукупності операцій.
COMMIT
Фіксує всі зміни, зроблені у межах поточної транзакції. Після виконання команди COMMIT всі зміни стають видимими для інших користувачів.
ROLLBACK
Скасовує всі зміни, зроблені в рамках поточної транзакції, та повертає БД у стан, у якому вона була до початку транзакції.
SAVEPOINT
Створює точку збереження всередині транзакції, до якої можна відкотитись без відкату всієї транзакції.
RELEASE SAVEPOINT
Видаляє раніше створену точку збереження. Після видалення точки збереження до неї не можна відкотитися.
SET TRANSACTION
Встановлює параметри транзакції.
Тут встановлюється рівень ізоляції (ISOLATION LEVEL) найвищого рівня SERIALIZABLE. Рівні ізоляції впливають на можливість інших транзакцій вносити зміни до тих самих даних.
Зовнішні та внутрішні запити
Зовнішні (основні) і внутрішні запити (підзапити) дозволяють виконувати один запит усередині іншого. Підзапит виконується першим, а результат використовується основним запитом.
SELECT name FROM employees WHERE department_id = (SELECT id FROM departments WHERE name = 'Sales');
Внутрішній запит (підзапит)
SELECT id FROM departments WHERE name = 'Sales';
Цей запит виконується першим. Він знаходить id відділу, де name і Sales. Допустимо, результатом буде >
Зовнішній запит
SELECT name FROM employees WHERE department_id = 3;
Зовнішній запит використовує результат підзапиту (id = 3) для фільтрації даних у таблиці працівників.
Він вибирає імена співробітників, які мають department_id = 3.
Робота із зовнішніми та внутрішніми запитами з використанням оператора EXISTS
Оператор EXISTS використовується для фільтрації рядків основного запиту на основі результатів підзапиту. Потрібний, щоб перевірити наявність хоча б одного рядка внаслідок підзапиту.
SELECT name FROM customers WHERE EXISTS ( SELECT * FROM orders WHERE orders.customer_id = customers.id );
Зовнішній запит вибирає імена клієнтів із таблиці customers.
Підзапит перевіряє, чи існує хоча б одне замовлення кожного клієнта в таблиці orders, використовуючи умову orders.customer_id = customers.id.
Якщо для поточного клієнта знайдено хоча б одне замовлення, підзапит видає рядок, оператор EXISTS повертає TRUE та включає ім'я клієнта у підсумковий результат.
Приклади використання команд SQL
Створення та видалення БД
CREATE DATABASE my_database; SHOW DATABASES; USE my_database; DROP DATABASE my_database;
Створення та управління таблицями
Створюємо таблицю працівників:
CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT, department VARCHAR(50) );
Додаємо стовпець email:
ALTER TABLE employees ADD COLUMN email VARCHAR(100);
Змінюємо тип стовпця (MODIFY COLUMN) на INT:
ALTER TABLE employees MODIFY COLUMN age INT UNSIGNED;
UNSIGNED — оператор для вказівки на те, що числовий тип даних не може містити негативних значень.
Обмеження цілісності
Операції обмеження цілісності застосовуються для забезпечення точності та надійності даних у таблиці.
Створюємо структуру таблиці для зберігання інформації про замовлення БД.
CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, product_id INT, quantity INT, FOREIGN KEY (product_id) REFERENCES products(id), CHECK (quantity > 0) );
Створює стовпець id типу INT, який буде автоматично збільшуватися для кожного нового запису. Він також визначається як первинний ключ. (PRIMARY KEY), що гарантує унікальність кожного запису таблиці.
Створює стовпець product_id типу INT, який міститиме ідентифікатор продукту, пов'язаного з цим замовленням.
Створює стовпець quantity типу INT, який міститиме кількість продуктів у замовленні.
FOREIGN KEY (product_id) REFERENCES products(id)
Встановлює обмеження зовнішнього ключа (FOREIGN KEY) на стовпець product_id, який посилається на стовпець id у таблиці products.
Встановлює умову перевірки (CHECK), яка гарантує, що значення в стовпці quantity завжди буде більше нуля.
Аналітики впливають на зростання бізнесу, вони з'ясовують, який товар і в який час більше купують.Тому компанії шукають та переманюють таких фахівців.
