Реляционные БД и СУБД: основы и запуск MySQL - Вопросы

Всего: 6 вопросов

1. 

Чем база данных отличается от СУБД и при чём здесь 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 и подключиться к нему?

Одной командой:

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: от создания базы до чтения данных?

Пять шагов: создать базу, выбрать её, создать таблицу, добавить строки и прочитать их:

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;.

Страница 1 из 1