Лекція 24. Вступ до SQL
MySQL - вільна реляційна система керування базами даних. Розробка та підтримка сайта MySQL здійснює корпорація Oracle, яка отримала права на торговельну марку разом з поглинанням Sun Microsystems, яка раніше придбала шведську компанію MySQL AB.
MySQL є рішенням для малих і середніх додатків. Входить до складу серверів WAMP, AppServ, LAMP і в портативні збірки серверів Денвер, XAMPP, VertrigoServ. Зазвичай MySQL використовується як сервер, до якого звертаються локальні або віддалені клієнти, проте в дистрибутив входить бібліотека внутрішнього сервера, що дозволяє включати MySQL в автономні програми.
Гнучкість СУБД MySQL забезпечується підтримкою великої кількості типів таблиць: користувачі можуть вибрати як таблиці типу MyISAM, що підтримують повнотекстовий пошук, так і таблиці InnoDB, що підтримують транзакції на рівні окремих записів. Більш того, СУБД MySQL поставляється із спеціальним типом таблиць EXAMPLE, що демонструє принципи створення нових типів таблиць. Завдяки відкритій архітектурі і GPL-ліцензуванню, в СУБД MySQL постійно з'являються нові типи таблиць.
phpMyAdmin - СУБД - додаток з відкритим кодом, написаний на мові PHP, що представляє собою веб-інтерфейс для адміністрування СУБД MySQL. PHPMyAdmin дозволяє через браузер і не тільки здійснювати адміністрування сервера MySQL, запускати команди SQL і переглядати вміст таблиць і баз даних. Додаток користується великою популярністю у веб-розробників, так як дозволяє управляти СУБД MySQL без безпосереднього введення SQL команд, надаючи дружній інтерфейс.
На сьогоднішній день PHPMyAdmin широко застосовується на практиці. Останнє пов'язано з тим, що розробники інтенсивно розвивають свій продукт, враховуючи всі нововведення СУБД MySQL. Переважна більшість українських провайдерів використовують цю програму в якості панелі керування для того, щоб надати своїм клієнтам можливість адміністрування виділених їм баз даних.
Додаток поширюється під ліцензією GNU General Public License і тому багато інших розробники інтегрують його в свої розробки, наприклад XAMPP, Denwer, AppServ, Open Server.
Проект на даний момент часу локалізований на більш ніж 62 мовах.
Мова SQL поділяється на кілька видів елементів:
- Пункти (диз'юнкти), що є складовими частинами інструкцій та запитів.
- Вирази, які можуть генерувати скалярні значення, або таблиці з стовпчиками і рядками даних
- Предикати, які описують умови, результатом яких є значення тризначної логіки SQL (true/false/unknown) або Булеві значення істинності і які використовуються для обмеження ефекту інструкцій та запитів, або для зміни потоку виконання програми.
- Запити, які отримують дані на основі заданих критеріїв.
- Інструкції, які виконують дію над схемою даних чи самими даними, або контролюють транзакції, потік виконання програми, з'єднання, сесії, та виконують діагностику.
- Інструкції SQL також включають крапку з комою (";") для позначення кінця інструкції. Хоча вона не є обов'язковою на кожній платформі, вона описується як стандартна частина граматики SQL.
- Незначимі пропуски загалом ігноруюються в інструкціях і запитах SQL, дозволяючи форматувати код SQL з метою покращення читабельності.
SQL складається з:
- DDL (Data Definition Language) — робота зі структурою бази,
- DML (Data Manipulation Language) — робота з рядками,
- DCL (Data Control Language) — робота з правами,
- TCL (Transaction Control Language) — робота з транзакціями.
Data Definition Language:
- CREATE — створення об'єкта (наприклад, таблиці);
Наприклад, створення таблиці з назвою zamdet:
create table Zamdet
- ALTER — зміна об'єкта (наприклад, додавання/зміна полів таблиці);
Оператор ALTER TABLE використовується для додавання, зміни чи видалення стовпчиків або обмежень у наявній таблиці.
- DROP — видалення об'єкта.
Оператор DROP, на відміну від оператора DELETE, відрізняється тим, що останній не видаляє саму таблицю. Наприклад, DELETE може видалити всі чи деякі дані з таблиці, при цьому залишаючи саму таблицю в базі даних, тоді як оператор DROP видаляє всю таблицю з бази даних.
Data Manipulation Language:
- INSERT — оператор мови SQL, котрий додає рядки в таблицю або view. В реляційній СКБД можна визначити два варіанти оператора INSERT.
Однорядковий оператор INSERT дозволяє додавати в таблицю один новий рядок. Багаторядковий оператор INSERT забезпечує витягування даних з однієї частини бази даних, їх трансформацію і додавання в іншу частину. Використовується зазвичай при пакетній обробці і створенні нових даних.
- SELECT — оператор мови SQL, котрий повертає рядки з однієї чи багатьох таблиць.
Ключові слова, пов'язані із запитом SELECT:
- FROM — оператор мови SQL, котрий вживається із оператором SELECT, і вказує, з якої таблиці провадиться вибірка даних.
- WHERE вказує, які рядки слід вибрати.
- GROUP BY гуртує рядки, що мають спільну властивість таким чином, щоб функція агрегації могла бути застосована до кожної групи.
- HAVING вибирає з груп означених оператором GROUP BY.
- ORDER BY вказує порядок повернення рядків.
UPDATE — оператор мови SQL, що дозволяє оновити значення в заданих стовпцях таблиці.
DELETE — у мовах, подібних SQL, DML-операція видалення записів з таблиці. Критерій відбору записів для видалення визначається виразом Where. У разі, якщо критерій відбору не визначений, виконується видалення всіх записів.
Data Control Language:
- GRANT — надання прав користувачу;
- DENY — явна заборона для користувача;
- REVOKE — відміна заборони/дозволу користувачу.
Не зважаючи на наявність діалектів і відмінностей в синтаксисі, більшість текстів SQL-запитів, що містять, DDL і DML, можуть бути досить легко перенесені з однієї СУБД в іншу. Існують системи, розробники яких спочатку орієнтувалися на застосування щонайменше кількох СУБД (наприклад: система електронного документообігу Documentum може працювати як з Oracle, так і з Microsoft SQL Server та IBM DB2). Природно, що при застосуванні деяких специфічних для реалізації можливостей, такого рівня перенесення дуже важко досягти.