SQL или язык структурированных запросов — это язык, который мы используем для связи с данными, хранящимися в СУБД (система управления реляционной базой данных). Использование SQL для взаимодействия с нашей базой данных позволяет нам эффективно анализировать данные осмысленными способами. Мы можем выполнять операции CRUD для создания, чтения, обновления или уничтожения записей.

SQL возвращает нам данные в виде запросов с нашими желаемыми условными требованиями. Например, если вы хотите получить всю информацию о пользователях в таблице с именем users:

SELECT *
  FROM users;

Если вы хотите вернуть только имена пользователей, когда user_id равен 21:

SELECT usernames 
  FROM users
  WHERE users_id = 21; 

В этом случае WHERE является условным оператором, и SQL проверяет каждую часть данных и возвращает только те, которые соответствуют этому конкретному условному требованию. Есть ряд других условий, таких как CASE/WHEN/THEN/ELSE/LIKE/BETWEEN ect.

Мы также можем манипулировать данными с помощью SQL DML или языка манипулирования данными. Наиболее распространенными командами являются INSERT, UPDATE и DELETE.

Лучше всего сохранять код СУХИМ, и это часто означает разделение нашей таблицы на несколько таблиц. Например, если вы хотите проанализировать базу данных с информацией о гастролях звукозаписывающих компаний, вам может понадобиться отдельная таблица для исполнителей и мест проведения:

CREATE TABLE IF NOT EXISTS artist
  id SERIAL PRIMARY KEY,
  artist_name VARCHAR(50) NOT NULL;

В этой таблице каждому исполнителю присваивается уникальный возрастающий идентификационный номер, а имя исполнителя может состоять не более чем из 50 символов и не может быть нулевым.

CREATE TABLE IF NOT EXISTS venue
 id SERIAL PRIMARY KEY,
 venue_name VARCHAR(100) NOT NULL
 artist_id REFERENCES artist(id)

Одно местоположение может принадлежать многим исполнителям, поэтому мы используем внешний ключ, чтобы связать их вместе. В этом случае мы назначаем artist_id в качестве внешнего ключа для ссылки на идентификатор исполнителя. Затем мы можем ввести данные:

INSERT INTO 'artists'
  (id, artist_name) VALUES (DEFAULT, 'Atmosphere');
INSERT INTO 'artists'
  (id, artist_name) VALUES (DEFAULT, 'P.O.S.');
INSERT INTO 'venues'
  (id, venue_name, artist_id) VALUES (DEFAULT, 'RED ROCKS', 1);
INSERT INTO 'venues'
  (id, venue_name, artist_id)  VALUES (DEFAULT, 'RED ROCKS', 2);

Это пример одного места, принадлежащего двум исполнителям, и мы можем присоединиться к столу исполнителя и вену, чтобы возвращать информацию Red Rocks только при воспроизведении Atmosphere или при воспроизведении только P.O.S с соединениями:

SELECT venue.venue_name, venue.id
  FROM venue
  JOIN artist
  ON artist.id = venue.artist_id;
    WHERE artist.artist_name = 'Atmosphere'

Это даст нам только информацию о вене, которую играет атмосфера. Поскольку таблицы содержат больше информации, такой как дата, стоимость, количество гостей и т. д., мы можем начать комбинировать даты более осмысленными способами для анализа и выявления закономерностей и взаимосвязей.