- Обучение
- Что такое SQL? Что такое база данных? Системы управления реляционными базами данных (СУБД)
Что такое SQL? Что такое база данных? Системы управления реляционными базами данных (СУБД)

Базы данных не всегда просты для понимания. Однако они необходимы для программирования полного стека и создания серверных служб, хранящих данные.
В этом посте мы расскажем о SQL, базах данных и системах управления реляционными базами данных. Также будем использовать некоторые аналогии с "волшебным миром", включая самого Гарри Поттера и некоторые классы, которые он посещает в Хогвартсе.
Прежде чем мы углубимся в ключевые термины, давайте определим, что такое база данных:
База данных представляет собой структурированный набор данных, хранящихся на компьютере, особенно, который доступен в различных направлениях. По сути, это организованный набор данных на компьютере, к которому можно получить электронный доступ из компьютерной системы.
Основные условия
Ниже приведены некоторые ключевые термины, с которых мы начнем:
- RDMS: системы управления реляционными базами данных. Эта структура для баз данных является основой MySQL.
- SQL: язык структурированных запросов.
- Tables: объекты базы данных, содержащие данные. Пример названия таблицы - «Студенты», «Учителя» или «Курсы».
- Fields: значения таблицы называются полями. Примеры полей для студентов: «Имя», «Фамилия» и «Средний академический балл».
- Record/Row: отдельная запись в таблице.
После добавления учителей и курсов в базу данных у нас могут быть таблицы для студентов, учителей и курсов.
По мере продвижения по руководству мы будем использовать здесь только пример студентов в качестве справки. Если вам посчастливилось быть нанятым инженером-программистом в Хогвартсе, ваша база данных могла бы хорошо использовать некоторые из этих команд.
Заявления SQL
Синтаксис
Точка с запятой - это стандартный способ отделения одного оператора SQL от другого. Это позволяет запускать несколько операторов SQL в одном вызове. В этом руководстве мы будем ставить точку с запятой в конце каждого оператора.
Самые важные команды SQL
Create: создает новую таблицу SQL.
Если бы мы, например, создавали базу данных студентов для школы Хогвартс, мы бы использовали CREATE для создания таблицы с названием «Студенты».
- Синтаксис:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
- Пример:
CREATE TABLE Students
(first_name VARCHAR(255),
last_name VARCHAR(255),
login VARCHAR(255),
age INTEGER,
gpa REAL,
house VARCHAR(255));
Drop: удаляет таблицу. Будьте очень осторожны при использовании этой команды, так как это сотрет все данные в таблице!
Если мы хотим удалить всю базу данных Student, мы будем использовать DROP для выполнения этого действия.
- Синтаксис:
DROP TABLE table_name;
- Пример:
DROP TABLE Students;
Insert: добавляет новые строки данных в таблицу.
Мы бы использовали INSERT для добавления новых студентов по мере их поступления в Хогвартс.
- Синтаксис:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
- Пример:
INSERT
INTO Students(first_name, last_name, login, age, gpa, house)
VALUES
('Harry', 'Potter', 'theboywholived', 15, 4.0, 'Gryffindor'),
('Hermionie', 'Granger','granger2', 15, 4.5, 'Gryffindor'),
('Ron', 'Weasley','weasley7', 15, 3.7, 'Gryffindor'),
('Draco', 'Malfoy', 'malfoy999', 15, 4.0, 'Slytherin'),
('Cedric', 'Diggory','diggory123', 15, 4.0, 'Hufflepuff');
Select: используется для выборки данных из базы данных для возврата в табличном формате.
Если бы мы хотели получить все имена студентов, которые находятся в Гриффиндорском доме, мы бы использовали команду SELECT. Пример ниже запрашивает в таблице «Студенты» имя и фамилию каждого учащегося в базе данных, что для нас представляет собой всего лишь пять описанных выше строк.
- Синтаксис:
SELECT column1, column2, ...
FROM table_name;
- Пример:
SELECT first_name, last_name FROM Students;
В качестве альтернативы, если мы хотим выбрать все поля в таблице, наша команда будет использовать синтаксис «*», который означает выбор всех полей:
SELECT * FROM Students;
Статьи
Статья является логическим чанком оператора SQL и это (теоретически) необязательное поле.
В приведенном выше заявлении мы просто вернули все поля в базе данных Student. Мы не указали условие для возвращаемых значений.
Что, если бы мы хотели опросить не всех учеников, а только тех, чей дом находится в Гриффиндоре? А как насчет опроса студентов, имя которых начинается с буквы «H» или студентов из Хаффлпаффа и Слизерина? Эти более сложные случаи решаются с помощью предложений SQL.
Ниже представлен обзор наиболее распространенных предложений, но в языке SQL есть еще несколько предложений.
Примеры статей
Where: используется для определения условия при выборке данных из базы данных. Возвращаясь к примеру с Select, нам нужно будет использовать WHERE, чтобы указать дом как Гриффиндор.
- Синтаксис:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
- Пример:
SELECT * FROM Students
WHERE house='Gryffindor';
And используется для объединения нескольких предложений в операторе SQL, где все условия, разделенные оператором И., истинны. Мы бы использовали AND, чтобы получить студентов Гриффиндора со средним баллом выше 3.8.
- Синтаксис:
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
- Пример:
SELECT * FROM Students
WHERE house='Gryffindor' AND gpa>3.8;
OR: Аналогично And, но возвращает только данные, в которых истинно только ОДНО из условий, разделенных OR. Если бы мы хотели получить студентов из Хаффлпаффа и Слизерина, но не из обоих, мы использовали бы команду OR.
- Синтаксис:
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
- Пример:
SELECT * FROM Students
WHERE house='Slytherin' OR house='Hufflepuff';
Like: используется с WHERE для поиска определенного шаблона. Если бы нам были нужны только имя и фамилия волшебников / ведьм с именами, начинающимися с «H», мы могли бы использовать команду Like.
- Синтаксис:
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
- Пример:
SELECT first_name, last_name FROM Students
WHERE first_name LIKE 'H%';
Count: используется для определения количества столбцов (или столбцов) в таблице.
- Синтаксис:
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
- Пример:
SELECT COUNT(first_name) FROM Students;
Две другие команды, использующие такой же синтаксис, - это AVG и SUM. AVG вычислит среднее значение всех значений, а sum вычислит сумму всех значений.
Select Limit: используется, чтобы сократить количество ответов до определенной суммы. Самые популярные ответы выбираются в порядке их ввода в базу данных в хронологическом порядке.
- Синтаксис:
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
- Пример:
SELECT * FROM Students LIMIT 3;
Другие полезные команды
Order By: сортирует результаты в порядке возрастания или убывания.
- Синтаксис:
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
- Пример:
SELECT * FROM Students ORDER BY first_name;
Group By: группирует категории с одинаковыми значениями в строки. Если вы хотите узнать количество учеников в каждом доме (например, 3 в Гриффиндоре), вы можете использовать команду «Group By».
- Синтаксис:
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
- Пример:
SELECT COUNT(first_name), house FROM Students GROUP BY house;
Нормализованные и денормализованные базы данных
При проектировании базы данных вы можете следовать двум основным шаблонам проектирования, каждый со своими компромиссами.
Normalized: оптимизируется для минимизации избыточности, а не для времени чтения.
Допустим, у нас есть таблица курсов, в которой есть идентификатор учителя, который преподает этот курс. У нас также есть база данных учителя, в которой есть имя учителя.
Когда мы хотим получить имена учителей, преподающих конкретный курс, нам нужно будет запросить таблицы Courses и Teachers, потому что в таблице курсов нет имени учителя (эффективно, но избыточно).
Denormalized: оптимизирует время чтения , а не минимизирует избыточность.
Допустим, у нас есть таблица курсов с идентификатором учителя AND именем учителя. У нас есть база данных учителей, в которой также есть имя учителя. Когда мы хотим получить имена учителей в курсе, мы можем просто использовать таблицу курса (избыточно, но эффективно).
Целостность данных
Для пользователей жизненно важно, чтобы данные, с которыми они взаимодействуют, были безопасными, правильными и разумными. Примеры показывают, что возраст не является отрицательным числом или что у двух учеников нет одинаковой информации. Мы называем это целостностью данных.
Целостность данных имеет несколько форм и может быть разделена на четыре категории:
- Целостность объекта: в таблице нет повторяющихся строк. Например, мы не можем дважды вставить Рона Уизли в базу данных.
- Целостность домена : ограничение типа значений, которые можно вставить, чтобы обеспечить правильные значения. Например, Дом может быть только Гриффиндорским, Равенкло, Слизеринским или Хаффлпаффским.
- Ссылочная целостность : записи, которые используются другими записями, не могут быть удалены. Учителя не могут быть удалены, если они в настоящее время ведут курс.
- Целостность, определяемая пользователем: «другая» категория, которая состоит из бизнес-логики и правил для базы данных.
Общие базы данных SQL
Oracle: очень стабильный и зрелый, но может стоить дорого;
MySQL: легкий и быстрый в настройке, но не такой зрелый, как Oracle;
PostgreSQL: подходит для определенных случаев использования, но не очень быстро.
Комментарии ()
Написать комментарий