Реляционные БД и СУБД: основы и запуск MySQL - Вопросы
Всего: 6 вопросов
1. Чем база данных отличается от СУБД и при чём здесь SQL?
Чем база данных отличается от СУБД и при чём здесь SQL?
База данных (БД) — сами данные: упорядоченный набор взаимосвязанных данных, хранящийся в файлах (например, пользователи и темы форума). СУБД — программа, которая создаёт базу, хранит данные, выполняет запросы и следит за целостностью (MySQL, PostgreSQL, Oracle Database). SQL — язык запросов, на котором приложение общается с СУБД, например SELECT * FROM users;.
Java-приложение обращается не к файлам базы, а к СУБД: отправляет SQL-запрос, СУБД читает или изменяет файлы и возвращает результат. Поэтому MySQL и SQL — не одно и то же: MySQL — одна из СУБД, понимающих SQL.
2. Какие основные функции выполняет СУБД?
Какие основные функции выполняет СУБД?
Основные функции СУБД:
- хранение и поиск данных;
- выполнение SQL-запросов;
- контроль целостности — данные не противоречат правилам таблиц;
- одновременная работа многих пользователей;
- разграничение прав доступа;
- резервное копирование и восстановление.
Приложение не работает с файлами базы напрямую — всё это за него делает СУБД.
3. Какие бывают типы СУБД? Приведите примеры.
Какие бывают типы СУБД? Приведите примеры.
- Реляционные (РСУБД) — таблицы со строками и столбцами и связи между ними: MySQL, MariaDB, PostgreSQL, Oracle, SQL Server, SQLite.
- Документные — документы, чаще всего JSON: MongoDB.
- Ключ-значение — пары «ключ → значение», обычно в памяти: Redis.
- Графовые — узлы и связи между ними: Neo4j.
- Иерархические и сетевые — исторические модели, предшествовавшие реляционной: IMS, IDMS.
Все нереляционные системы объединяют названием NoSQL. В Java-разработке чаще всего встречаются реляционные СУБД; в курсе используется MySQL.
4. Какими свойствами обладает таблица реляционной базы данных?
Какими свойствами обладает таблица реляционной базы данных?
Реляционная модель хранит данные в двумерных таблицах: строка — одна запись, столбец — один атрибут. Свойства таблицы:
- каждый столбец имеет уникальное имя;
- все значения в столбце одного типа;
- одинаковых строк нет;
- порядок строк произвольный;
- на пересечении строки и столбца — одно атомарное значение, а не список.
Поэтому ячейку «Велосипеды; О рыбалке» разбивают: темы выносят в отдельную таблицу, по строке на тему. Запрет одинаковых строк в настоящей SQL-таблице обеспечивает первичный ключ.
5. Как запустить MySQL 8.4 в Docker и подключиться к нему?
Как запустить MySQL 8.4 в Docker и подключиться к нему?
Одной командой:
docker run --name mysql-course -e MYSQL_ROOT_PASSWORD=secret -p 3306:3306 -v mysql_data:/var/lib/mysql -d mysql:8.4
-e MYSQL_ROOT_PASSWORD— парольroot; без него контейнер сразу завершится с ошибкой;-p 3306:3306— проброс порта (порт_компьютера:порт_контейнера);-v mysql_data:/var/lib/mysql— данные хранятся в volume и переживут удаление контейнера.
Сервер готов, когда в docker logs mysql-course есть строка ready for connections с port: 3306. Подключение клиентом внутри контейнера: docker exec -it mysql-course mysql -uroot -p. С компьютера указывайте хост явно: mysql -h 127.0.0.1 -P 3306 -uroot -p.
6. Из каких шагов состоит первый запрос в MySQL: от создания базы до чтения данных?
Из каких шагов состоит первый запрос в MySQL: от создания базы до чтения данных?
Пять шагов: создать базу, выбрать её, создать таблицу, добавить строки и прочитать их:
CREATE DATABASE forum;
USE forum;
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO users (username) VALUES ('Kirill'), ('Vasya');
SELECT * FROM users;
Каждая команда заканчивается точкой с запятой. Если забыть USE forum;, MySQL выдаст ERROR 1046 (3D000): No database selected; если база уже есть — ERROR 1007, тогда пишите CREATE DATABASE IF NOT EXISTS forum;.