Команда CREATE

Команда 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';

Для додаткової візуалізації є відео:

Leave a Reply

Your email address will not be published. Required fields are marked *