На этой неделе мы узнаем о базах данных, в частности о PostgreSQL. Это пошаговое руководство (и напоминание для меня) об основах создания собственной базы данных!

  1. Установите PostgreSQL: проще всего использовать Hombrew. В оболочке терминала введите: brew install postgresql
    Если у вас еще нет Hombrew, найдите инструкции по установке здесь.
  2. После установки настройте PostgreSQL на автоматическую загрузку при запуске, выполнив эту команду в своем терминале:
    brew services start postgresql
    Это то же самое, что и «длинный» код:
    ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
  3. PostgreSQL (PSQL) имеет собственную команду интерфейса REPL: psql. Чтобы запустить базу данных PostgreSQL, вы запускаете команду: psql <database name>. Чтобы получить доступ к базе данных «по умолчанию», которую он создает, введите команду psql postgres. Вам придется использовать эту базу данных, если вы впервые устанавливаете PSQL на свой компьютер.
    - Это войдет в psql REPL, где каждая строка начинается с postgres=#
  4. Создайте свою собственную базу данных, набрав psql REPL: CREATE DATABASE "my_database_name";. Точка с запятой ОБЯЗАТЕЛЬНА! Теперь, когда ваша собственная личная база данных создана, вы можете получить к ней доступ из оболочки терминала с помощью команды psql my_database_name.
    - Если вы установите имя своей базы данных таким же, как имя вашего компьютера, вы можете просто получить доступ к базе данных по умолчанию с помощью одной только команды psql.
    - К любой базе данных, к которой вы обращаетесь с помощью команды psql , psql REPL начнется с имени этой базы данных (например, julesnuggy = #)
  5. Чтобы просмотреть список всех баз данных в psql, используйте команду \l
  6. Чтобы подключиться к базе данных, находясь в psql, используйте команду \c
  7. Чтобы выйти из psql, используйте команду \q

Правила данных PSQL

Вот несколько полезных основных правил и синтаксиса, которые следует учитывать при использовании PSQL / psql.

  1. Все команды в psql должны заканчиваться точкой с запятой (;), за исключением тех, которые начинаются с косой черты (\). Если вы этого не сделаете, ваша команда не запустится, а начнет новую строку. Это часто используется, чтобы лучше структурировать представление вашего кода.
  2. psql требует наличия пробелов до и после знаков равенства.
    - например firstname = «Юлиан»
  3. Типы данных, эквивалентные строкам, нуждаются в кавычках. Целые числа не должны иметь кавычек, иначе они будут интерпретироваться как строки (например, VARCHAR).
    - например, id = 1, firstname = «Юлиан»
  4. Кавычки должны быть «одинарными кавычками», а не «двойными кавычками».

Базовая таблица в PSQL

  1. В соответствующей базе данных, в которой вы хотите создать таблицу, создайте новую таблицу с помощью команды CREATE TABLE. Для этого используется следующая структура аргументов:
    CREATE TABLE table_name (column1_title COL1_DATA_TYPE, column2_title COL2_DATA TYPE, …)
    Обратите внимание на использование верхнего и нижнего регистра, а также на размещение запятых. Также не используйте кавычки.
  2. Если вам нужен столбец id, который автоматически генерирует свой собственный последовательный ссылочный номер (1, 2, 3…), создайте столбец с типом данных SERIAL PRIMARY KEY,
    например CREATE TABLE table_name (id SERIAL PRIMARY KEY, ...)
    - Это означает, что вам нужно только заполнить значения других столбцов и не беспокоиться о создании значений идентификаторов.
  3. Чтобы добавить строку данных, используйте команду INSERT:
    INSERT INTO table_name (column1_name, column2_name, …) VALUES (col1_value, col2_value, …)
    - Вы можете добавлять только одну строку данных за раз.
    - Вы можете заполнить все столбцы таблицы, не используя аргументы column_name, как при условии, что вы укажете правильное количество и тип данных в правильном порядке.
    - Вы можете заполнить только выбранные столбцы в любом порядке, указав имена столбцов в скобках аргументов.
  4. Чтобы удалить строку данных, используйте команду DELETE:
    DELETE FROM table_name WHERE col_name = 'col_value'
    Кавычки, необходимые для типов данных VARCHAR
  5. Чтобы изменить строку данных, используйте UPDATE:
    UPDATE table_name SET col_name = 'new_value' WHERE reference_col_name = 'reference_col_value'
    Что это означает: для table_name обновите строку, где reference_col_name = reference_col_value, с помощью new_value в столбце col_name. Столбец ссылки может быть тем же столбцом, что и изменяемый (логический), или другим столбцом той же строки данных, которую вы изменяете (например, id).

Вот шпаргалка по командам базы данных SQL: http://www.postgresqltutorial.com/wp-content/uploads/2018/03/PostgreSQL-Cheat-Sheet.pdf

Пример работы

Смущенный? Испуганный? Может быть, пример поможет…

Здесь я покажу вам, как вы можете создать свои собственные базы данных, а затем создать простую таблицу из 3 столбцов с 4 строками данных для списка закладок. Строки, начинающиеся с $, являются командами оболочки; строки, начинающиеся с xyz=#, являются командами psql; и строки, начинающиеся с #, являются моими комментариями только для информации.

$ brew install postgresql
# A bunch of installation stuff happens...
$ brew services start postgresql
$ psql postgres
postgres=# CREATE DATABASE julesnuggy;
postgres=# CREATE DATABASE bookmark_manager;
postgres=# \q
# Access owner database
$ psql
julesnuggy =# \q
# Access bookmark_manager database
$ psql bookmark_manager
bookmark_manager=# CREATE TABLE bookmark (id SERIAL PRIMARY KEY, url VARCHAR(60), tags VARCHAR(60));
# Adding data to the table
bookmark_manager=# INSERT INTO bookmarks (url) VALUES ('www.google.com');
bookmark_manager=# INSERT INTO bookmarks (url) VALUES ('www.yahoo.com');
bookmark_manager=# INSERT INTO bookmarks (url, tags) VALUES ('www.medium.com', 'blog');
bookmark_manager=# INSERT INTO bookmarks (url, tags) VALUES ('www.gmail.com', 'email');
bookmark_manager=# INSERT INTO bookmarks (url, tags) VALUES ('www.outlook.com', 'email');
# Deleting data from the table 
bookmark_manager=# DELETE FROM bookmarks WHERE url = 'www.yahoo.com';
# Amending data from the table
bookmark_manager=# UPDATE bookmarks SET tags = 'search' WHERE url = 'www.google.com';
# View the entire table
bookmark_manager=# SELECT * FROM bookmarks;

Доступ к вашей базе данных в классе Ruby

После того, как вы создали таблицу на PSQL, вы можете получить данные в Ruby с помощью Pg gem, который представляет собой Ruby-интерфейс для PostgreSQL.

  1. Добавьте драгоценный камень в свой Gemfile (gem pg) и потребуйте его в соответствующем файле (возможно, в файле класса), откуда вы будете извлекать данные (require pg).
  2. Запустите bundle install, чтобы установить гем в каталог вашего проекта. Если у вас нет budler, запустите gem install pg в каталоге проекта.
  3. В качестве примера того, как вы можете сохранить данные из таблицы своей базы данных, вы можете превратить его в многомерный массив формата [[x1, y1, z1], [x2, y2, z2]…] где:
    - [x1, y1, z1] - данные из первой строки таблицы с тремя столбцами (x, y, z);
    - [x2, y2, z2] - это данные из строки 2 тех же столбцов и т. д.
    Для этого используйте следующую структуру кода (я использовал структуру таблицы из приведенного выше примера закладки чтобы было понятнее):
require 'pg'
class Table
  attr_reader :table
def self.all
    @con = PG.connect :dbname => 'bookmark_manager', :user => 'julesnuggy'
    @records = @con.exec "SELECT * FROM bookmarks"
    @records.map { |link| [link['id'], link['url'], link['tags']] }
  end
end

Теперь вы можете создать новый экземпляр класса Table, используя метод #all, который вы можете вызвать для получения многомерного массива:

$ table = Table.all
# => [["1", "www.google.com", "search"], ["3", "www.medium.com", "blog"],...]

Надеюсь, вы обнаружите, что это руководство помогло вам стать лучшим программистом, чем вы были раньше!