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

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

- Все команды в psql должны заканчиваться точкой с запятой (
;), за исключением тех, которые начинаются с косой черты (\). Если вы этого не сделаете, ваша команда не запустится, а начнет новую строку. Это часто используется, чтобы лучше структурировать представление вашего кода. - psql требует наличия пробелов до и после знаков равенства.
- например firstname = «Юлиан» - Типы данных, эквивалентные строкам, нуждаются в кавычках. Целые числа не должны иметь кавычек, иначе они будут интерпретироваться как строки (например, VARCHAR).
- например, id = 1, firstname = «Юлиан» - Кавычки должны быть «одинарными кавычками», а не «двойными кавычками».
Базовая таблица в PSQL
- В соответствующей базе данных, в которой вы хотите создать таблицу, создайте новую таблицу с помощью команды
CREATE TABLE. Для этого используется следующая структура аргументов:CREATE TABLE table_name (column1_title COL1_DATA_TYPE, column2_title COL2_DATA TYPE, …)
Обратите внимание на использование верхнего и нижнего регистра, а также на размещение запятых. Также не используйте кавычки. - Если вам нужен столбец id, который автоматически генерирует свой собственный последовательный ссылочный номер (1, 2, 3…), создайте столбец с типом данных
SERIAL PRIMARY KEY,
напримерCREATE TABLE table_name (id SERIAL PRIMARY KEY, ...)
- Это означает, что вам нужно только заполнить значения других столбцов и не беспокоиться о создании значений идентификаторов. - Чтобы добавить строку данных, используйте команду
INSERT:INSERT INTO table_name (column1_name, column2_name, …) VALUES (col1_value, col2_value, …)- Вы можете добавлять только одну строку данных за раз.
- Вы можете заполнить все столбцы таблицы, не используя аргументы column_name, как при условии, что вы укажете правильное количество и тип данных в правильном порядке.
- Вы можете заполнить только выбранные столбцы в любом порядке, указав имена столбцов в скобках аргументов. - Чтобы удалить строку данных, используйте команду
DELETE:DELETE FROM table_name WHERE col_name = 'col_value'
Кавычки, необходимые для типов данных VARCHAR - Чтобы изменить строку данных, используйте
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.
- Добавьте драгоценный камень в свой Gemfile (
gem pg) и потребуйте его в соответствующем файле (возможно, в файле класса), откуда вы будете извлекать данные (require pg). - Запустите
bundle install, чтобы установить гем в каталог вашего проекта. Если у вас нет budler, запуститеgem install pgв каталоге проекта. - В качестве примера того, как вы можете сохранить данные из таблицы своей базы данных, вы можете превратить его в многомерный массив формата [[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"],...]
Надеюсь, вы обнаружите, что это руководство помогло вам стать лучшим программистом, чем вы были раньше!
