Structured Query Language (SQL) - це спеціальна мова для роботи з реляційними базами даних, яка дозволяє створювати, модифікувати та управляти даними в базах даних.
Створення бази¶
Спочатку необхідно створити базу даних виконавши команду
%sql CREATE DATABASE test;після чого ми перевіряємо доступні БД командою і бачимо у списку test, це і є наша база в якій ми будемо виконувати всі наступні запити
%sql SHOW DATABASES;Створення таблиць¶
Для створення таблиці в SQL використовується оператор CREATE TABLE. Відомості про структуру таблиці, такі як назва стовпців та їх типи даних, вказуються після цього оператора. Ось базовий синтаксис для створення таблиці:
CREATE TABLE table_name (
column1 datatype1,
column2 datatype2,
column3 datatype3,
...
);Давайте розглянемо приклад створення таблиці books з Figure 3:Фізична структура БД для збереження інформації про книги:
%%sql
CREATE TABLE `books` (
`id` int NOT NULL AUTO_INCREMENT,
`category_id` int DEFAULT NULL,
`title` text,
`year` smallint DEFAULT NULL,
PRIMARY KEY (`id`)
);у цьому запиті:
id int NOT NULL AUTO_INCREMENT:id- це унікальний ідентифікатор для кожної книги в таблиці.int- це тип даних, який представляє цілі числа.NOT NULLвказує, що значення в цьому стовпці не може бути порожнім (нульовим).AUTO_INCREMENTвказує на автоматичне збільшення значень цього стовпця для кожного нового запису. Це забезпечить унікальність значеньidдля кожної книги, і база даних автоматично буде присвоювати їм послідовні номери.
DEFAULT NULL- вказує, що за замовчуванням значення цього стовпця будеNULL, якщо воно не вказане явно при вставці нового запису.PRIMARY KEY (id)визначає первинний ключ таблиці, який складається зі стовпцяid. Первинний ключ ідентифікує унікально кожен запис в таблиці.
Cтворимо аналогічно інші таблиці: authors, books_authors та categories.
%%sql
CREATE TABLE `authors` (
`id` int NOT NULL AUTO_INCREMENT,
`name` text,
PRIMARY KEY (`id`)
);
CREATE TABLE `books_authors` (
`book_id` int NOT NULL,
`author_id` int NOT NULL
);
CREATE TABLE `categories` (
`id` int NOT NULL AUTO_INCREMENT,
`name` text,
PRIMARY KEY (`id`)
);А тепер виконаємо команду для перегляду списку таблиць у нашій БД test
%sql SHOW TABLESТипи даних¶
SQL використовує різноманітні типи даних для зберігання та обробки інформації в базах даних. Типи даних можна класифікувати на кілька основних категорій:
Цілі числа (INTEGER, INT):
- Використовуються для зберігання цілих чисел без десяткової частини.
- Приклад:
INT,INTEGER.
Десяткові числа (DECIMAL, NUMERIC, FLOAT, REAL):
- Дозволяють зберігати числа з десятковою частиною.
- Приклад:
DECIMAL(p, s),NUMERIC(p, s),FLOAT(p),REAL.
Рядки (CHAR, VARCHAR, TEXT):
- Використовуються для зберігання текстової інформації.
CHAR- фіксована довжина,VARCHAR- змінна довжина,TEXT- для довших текстів.
Дата та Час (DATE, TIME, DATETIME, TIMESTAMP):
- Дозволяють зберігати і взаємодіяти з датами та часом.
- Приклад:
DATE,TIME,DATETIME,TIMESTAMP.
Булеві значення (BOOLEAN):
- Використовуються для представлення логічних значень
TRUEабоFALSE.
- Використовуються для представлення логічних значень
Бінарні дані (BLOB, BINARY, VARBINARY):
- Використовуються для зберігання бінарних об’єктів, таких як зображення або відео.
- Приклад:
BLOB,BINARY,VARBINARY.
Ці типи даних надають можливість точно визначити, який тип інформації буде зберігатися в кожному стовпці бази даних, що сприяє ефективній обробці та оптимізації запитів.
Створення відношень¶
%%sql
ALTER TABLE `books_authors` ADD CONSTRAINT books_book_id
FOREIGN KEY (`book_id`) REFERENCES `books` (`id`);
ALTER TABLE `books_authors` ADD CONSTRAINT authors_author_id
FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`);
ALTER TABLE `books` ADD CONSTRAINT categories_category_id
FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`);Цей SQL-запит використовується для додавання зовнішнього ключа (FOREIGN KEY) до таблиці books_authors. Давайте розглянемо кожну частину запиту:
ALTER TABLE books_authors ADD CONSTRAINT books_book_id:ALTER TABLE books_authors- вказує, що ми здійснюємо зміни у структурі таблиціbooks_authors.ADD CONSTRAINT books_book_id- визначає, що ми додаємо обмеження (constraint) з ім’ямbooks_book_id.
FOREIGN KEY (book_id):FOREIGN KEY- вказує, що ми додаємо зовнішній ключ до таблиці.(book_id)- це стовпець, до якого ми додаємо зовнішній ключ.
REFERENCES books (id):REFERENCES books- вказує, що ми посилаємося на таблицюbooks.(id)- це стовпець у таблиціbooks, на який ми посилаємося за допомогою зовнішнього ключа.
Отже, цей SQL-запит встановлює зовнішній ключ для стовпця book_id в таблиці books_authors, який посилається на стовпець id в таблиці books. Це створить зв’язок між цими двома таблицями, дозволяючи здійснювати зв’язані запити, наприклад, вибірку інформації про авторів для конкретної книги.