На этой неделе мы узнаем о базах данных, в частности о 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"],...]
Надеюсь, вы обнаружите, что это руководство помогло вам стать лучшим программистом, чем вы были раньше!