Что такое 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: подходит для определенных случаев использования, но не очень быстро.

Комментарии ()

    Написать комментарий