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
. Це створить зв’язок між цими двома таблицями, дозволяючи здійснювати зв’язані запити, наприклад, вибірку інформації про авторів для конкретної книги.