Команда DROP — це DDL-команда (Data Definition Language), яка використовується в MySQL (та інших системах керування базами даних) для повного видалення об’єктів бази даних.
За допомогою цієї команди можна видаляти:
• Таблиці • Бази даних • Індекси • Представлення (Views) • Процедури, функції, тригери тощо
Приклад:
-- створимо таблицю students
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(100)
);
-- DROP TABLE — видалення таблиці
DROP TABLE students;
-- Щоб уникнути помилки можна використовувати
DROP TABLE IF EXISTS students;
-- DROP DATABASE — видалення всієї бази даних
DROP DATABASE drop_practice;
-- Ця команда видаляє всю базу даних, включно з усіма таблицями, процедурами, тригерами, функціями тощо.
-- Безпечніший варіант
DROP DATABASE IF EXISTS drop_practice;
Інші об’єкти, які можна видалити за допомогою DROP
DROP INDEX
видалення індексу
DROP VIEW
видаляє представлення (view)
DROP PROCEDURE / DROP FUNCTION
видаляє збережену процедуру або функцію
DROP TRIGGER
видаляє тригер
DROP EVENT
видаляє подію
DROP USER, DROP ROLE
для керування користувачами
Кілька моментів про DROP
Деструктивна операція
Після виконання DROP, відновити об’єкт неможливо, якщо не зроблено резервну копію.
Видаляється все пов’язане
Наприклад, при видаленні таблиці також зникають: всі записи (рядки), індекси, зовнішні ключі, пов’язані з нею, тригери тощо.
Незворотня
Команди DROP не можна скасувати за допомогою ROLLBACK, бо це не частина транзакції.
Команда ALTER в MySQL використовується для зміни вже існуючої таблиці в базі даних.
За допомогою цієї команди можна:
• Додати новий стовпець • Видалити стовпець • Змінити тип стовпця • Перейменувати стовпець • Перейменувати таблицю • Додати зовнішній ключ
Можливості ALTER TABLE
Категорія
Команда (приклад)
Опис
Додати стовпець
ALTER TABLE table_name ADD COLUMN column_name TYPE;
Додає новий стовпець
Видалити стовпець
ALTER TABLE table_name DROP COLUMN column_name;
Видаляє стовпець
Змінити тип стовпця
ALTER TABLE table_name MODIFY column_name NEW_TYPE;
Змінює тип даних або властивості стовпця
Перейменувати стовпець
ALTER TABLE table_name CHANGE old_name new_name TYPE;
Перейменовує стовпець + можна змінити тип
Перейменувати таблицю
ALTER TABLE old_name RENAME TO new_name;
Змінює назву таблиці
Додати первинний ключ
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
Додає первинний ключ (PRIMARY KEY)
Видалити первинний ключ
ALTER TABLE table_name DROP PRIMARY KEY;
Видаляє первинний ключ
Додати зовнішній ключ
ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES other_table(column_name);
Додає зовнішній ключ (FOREIGN KEY)
Додати індекс
ALTER TABLE table_name ADD INDEX index_name (column_name);
Створює індекс для покращення пошуку
Видалити індекс
ALTER TABLE table_name DROP INDEX index_name;
Видаляє індекс
Змінити движок
ALTER TABLE table_name ENGINE = InnoDB;
Змінює механізм зберігання (MyISAM, InnoDB тощо)
Змінити кодування
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Змінює кодування таблиці
Приклад:
-- створимо таблицю students
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(100)
);
-- Додамо новий стовпець age
ALTER TABLE students ADD COLUMN age INT;
-- Змінимо тип стовпця email на VARCHAR(150)
ALTER TABLE students MODIFY COLUMN email VARCHAR(150);
-- Перейменуємо стовпець name на full_name
ALTER TABLE students CHANGE COLUMN name full_name VARCHAR(100);
-- Видалимо стовпець age
ALTER TABLE students DROP COLUMN age;
-- Перейменуємо таблицю students на pupils
ALTER TABLE students RENAME TO pupils;
Команда CREATE в SQL використовується для створення нових об’єктів у базі даних, таких як таблиці, індекси, бази даних, схеми, подання (views) та інші об’єкти. Вона є частиною DDL (Data Definition Language).
Де використовується
•Створення бази даних •Створення таблиці •Створення індексів •Створення подання (VIEW) •Створення схем •Створення тригера
Приклад застосування:
-- створення бази даних
CREATE DATABASE my_database;
-- створення таблиці
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
SCHEMA and DATABASE
У MySQL, бази даних і схеми фактично є одним і тим самим. Однак вважати їх повністю тотожними в контексті теорії баз даних не слід.
База даних (Database) — це набір даних, що зберігаються в структурованому вигляді. Вона містить всі об’єкти бази даних, зокрема таблиці, індекси, подання, процедури тощо. Одна база даних містить кілька об’єктів, таких як таблиці та інші елементи. Термін “database” зазвичай використовується для позначення контейнера для всіх об’єктів, і він є більш широким за schema.
Схема (Schema) є організаційною одиницею в межах бази даних і використовується для поділу та групування об’єктів бази даних. Вона є меншою одиницею, ніж база даних. Одна база даних може містити кілька схем. Схеми дозволяють групувати таблиці та інші об’єкти в межах однієї бази даних для організаційних або безпекових цілей. Вони часто використовуються для розділення об’єктів різних додатків або різних частин бізнес-логіки в межах однієї бази даних.
Приклад створення SCHEMA та DATABASE
-- створення бази даних
CREATE DATABASE shop_db;
-- створення схеми
CREATE SCHEMA product_schema;
CREATE TABLE product_schema.products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10,2)
);
Приклад створення бази даних з додатковими параметрами
CREATE DATABASE IF NOT EXISTS my_database2
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- Цей запит створює базу даних my_database2, якщо така ще не існує.
-- Встановлюється кодування utf8mb4 і впорядкування utf8mb4_unicode_ci, що є стандартом для багатомовних даних у MySQL.
CHARACTER SET
CHARACTER SET (кодування) визначає спосіб збереження та кодування символів в базі даних. Це важливо для підтримки багатомовності та спеціальних символів, наприклад, емодзі.
utf8mb4
Це кодування, яке підтримує всі символи Unicode (включаючи емодзі).
utf8
Це старіше кодування, яке не підтримує всі символи Unicode (не включає певні символи, такі як емодзі).
latin1
Це кодування для латинських символів, типово використовується для європейських мов.
COLLATE
COLLATE (впорядкування) визначає, як MySQL порівнює та сортує рядки. Впорядкування має значення для операцій ORDER BY та LIKE.
utf8mb4_unicode_ci
Впорядкування для utf8mb4, підтримує всі Unicode символи.
utf8mb4_general_ci
Інше впорядкування для utf8mb4, яке є менш вимогливим щодо точності сортування, але швидшим.
latin1_swedish_ci
Стандартне впорядкування для latin1, яке забезпечує сортування за шведським алфавітом (але використовуються й для інших європейських мов).
Перевірка значень за замовчуваннямдля бази даних
-- Щоб перевірити кодування за замовчуванням
SHOW VARIABLES LIKE 'character_set_database';
-- Щоб перевірити впорядкування за замовчуванням
SHOW VARIABLES LIKE 'collation_database';
Параметри при створенні таблиць
ENGINE
Визначає механізм зберігання таблиці (Storage Engine). • InnoDB — найпоширеніший, підтримує транзакції, зовнішні ключі. • MyISAM — швидший для читання, але не підтримує транзакції чи зовнішні ключі. • MEMORY – Дані зберігаються в оперативній пам’яті. Дуже швидкий, але втрачає дані при перезапуску сервера. • CSV – Таблиця зберігається як CSV-файл. Використовується нечасто, в основному для експорту/імпорту. • ARCHIVE – Оптимізований для зберігання великих обсягів архівних (тільки читання) даних.
Механізм зберігання за замовчуванням — InnoDB. Для перевірки ENGINE за замовчуванням: SHOW ENGINES; SHOW VARIABLES LIKE ‘default_storage_engine’;
DEFAULT CHARSET
Визначає механізм зберігання таблиці (Storage Engine). • utf8mb4 – Рекомендоване повноцінне кодування UTF-8 (до 4 байт на символ). Підтримує всі Unicode-символи. • utf8 – Старіша версія UTF-8, обмежена 3 байтами. Не підтримує деякі символи, зокрема емодзі. • latin1 – 1 байт на символ. Підходить тільки для західноєвропейських мов.
Значення DEFAULT CHARSET (тобто кодування символів) за замовчанням — utf8mb4. Для перевірки CHARSET за замовчуванням: SHOW VARIABLES LIKE ‘character_set_server’;
COLLATE
Порядок сортування символів (Collation). ai — Accent Insensitive (без урахування діакритичних знаків) ci — Case Insensitive (без урахування регістру: A = a) Якщо явно не вказано COLLATE → береться з CHARSET за замовчанням. Якщо ви створюєте базу з CHARSET → COLLATE обирається відповідно до нього. Якщо створюємо таблицю без вказівки COLLATE → вона успадковує COLLATE з бази. • utf8mb4_0900_ai_ci – Default у MySQL 8.0 — регістр і акценти не враховуються • utf8mb4_general_ci – Швидший, але менш точний. • utf8mb4_unicode_ci – Unicode-aware, але без акцентів і регістру
Для перевірки COLLATE за замовчуванням: SHOW VARIABLES LIKE ‘collation_server’; SHOW CREATE DATABASE ім_бази;
AUTO_INCREMENT Початкове значення для автоінкрементного поля: AUTO_INCREMENT = 1000
COMMENT Коментар до таблиці: COMMENT = ‘List of active users’
Приклад:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci
AUTO_INCREMENT = 1000
COMMENT = 'List of customers';