Как создать базу данных в postgresql
Перейти к содержимому

Как создать базу данных в postgresql

  • автор:

Как создать базу данных в postgresql

Для создания базы данных сервер PostgreSQL должен быть развёрнут и запущен (см. Раздел 17.3).

База данных создаётся SQL-командой CREATE DATABASE :

CREATE DATABASE имя;

где имя подчиняется правилам именования идентификаторов SQL . Текущий пользователь автоматически назначается владельцем. Владелец может удалить свою базу, что также приведёт к удалению всех её объектов, в том числе, имеющих других владельцев.

Создание баз данных это привилегированная операция. Как предоставить права доступа, описано в Разделе 20.2.

Поскольку для выполнения команды CREATE DATABASE необходимо подключение к серверу базы данных, возникает вопрос как создать самую первую базу данных. Первая база данных всегда создаётся командой initdb при инициализации пространства хранения данных (см. Раздел 17.2.) Эта база данных называется postgres . Далее для создания первой « обычной » базы данных можно подключиться к postgres .

Вторая база данных template1 , также создаётся во время инициализации кластера. При каждом создании новой базы данных в рамках кластера по факту производится клонирование шаблона template1 . При этом любые изменения сделанные в template1 распространяются на все созданные впоследствии базы данных. Следует избегать создания объектов в template1 , за исключением ситуации, когда их необходимо автоматически добавлять в новые базы. Более подробно в Разделе 21.3.

Для удобства, есть утилита командной строки для создания баз данных, createdb .

createdb dbname 

Утилита createdb не делает ничего волшебного, она просто подключается к базе данных postgres и выполняет ранее описанную SQL-команду CREATE DATABASE . Подробнее о её вызове можно узнать в createdb . Обратите внимание, что команда createdb без параметров создаст базу данных с именем текущего пользователя.

Примечание

Глава 19 содержит информацию о том, как ограничить права на подключение к заданной базе данных.

Иногда необходимо создать базу данных для другого пользователя и назначить его владельцем, чтобы он мог конфигурировать и управлять ею. Для этого используйте одну из следующих команд:

CREATE DATABASE имя_базы OWNER имя_роли;

из среды SQL, или:

createdb -O имя_роли имя_базы

из командной строки ОС. Лишь суперпользователь может создавать базы данных для других (для ролей, членом которых он не является).

Пред. Наверх След.
21.1. Обзор Начало 21.3. Шаблоны баз данных

SQL-Ex blog

Создание базы данных и таблиц в PostgreSQL: Изучение PostgreSQL с Grant Fritchey

Добавил Sergey Moiseenko on Среда, 10 августа. 2022

У вас есть локально работающий экземпляр PostgreSQL. Что дальше? Создание резервных копий. Но прежде мне нужно создать базу данных и пару таблиц, чтобы было что архивировать.

  1. Мне нравится Azure Data Studio. С ней легко работать. Она быстрая. Она чистая. Она имеет плагины для выполнения различных вещей.
  2. Например, она очень хорошо подключается к GitHub, поэтому вы можете легко держать разрабатываемые коды на GitHub.
  3. Мне просто более комфортно работать над кодом с выделенным инструментом, а не просто выполняя его из командной строки.
  4. Я не хочу описывать каждый отдельный имеющийся метод, поэтому я должен был выбрать один. И я его выбрал.

Создание базы данных

Команда создания базы данных очень простая:

CREATE DATABASE postgrelearning;

Да, это очень легко.

Давайте еще немного поговорим об этом. Поскольку я знаю SQL Server, я собираюсь сравнивать, как делать что-то там и здесь. В SQL Server у вас есть системная база данных model, используемая как шаблон при создании новой базы данных. В PostgreSQL происходит то же самое, но база данных называется template1. template1 работает очень похоже на model. Вы можете добавлять объекты в template1, и они будут автоматически присутствовать в новой базе данных, которую вы создаете.

Однако в PostgreSQL происходит больше. Давайте взглянем на мой список баз данных:

Есть еще база данных template0. Что это? Ну, в случае если вы совершенно запутаетесь с template1, template0 будет служить базовым уровнем. Кроме того, когда вы восстанавливаете базу данных, PostgreSQL использует template0 для запуска этого процесса.

А что насчет базы данных postgres? Она встроена в PostgreSQL по умолчанию, чтобы всегда можно было подключиться к базе данных.

Команда CREATE DATABASE имеет много опций, которые вы можете найти в документации. Одна из наиболее интересных для меня связана с указанием шаблонной базы данных. Вы можете выполнить, например, такую команду CREATE DATABASE:

CREATE DATABASE templatetest WITH template = postgrelearning;

И да. Вы можете указать другую базу данных в качестве шаблона. Однако:

Вы можете использовать базу данных в качестве шаблона, только если к этой базе данных нет никаких подключений.

Имеется несколько других опций от определения владельца базы данных, локали, коллации и т.д.. Я не буду здесь их рассматривать.

Если вам нужно избавиться от базы данных, это делается тоже простой командой:

DROP DATABASE templatetest;

Эта команда удалит всю базу данных. Однако вы не можете иметь подключение к базе данных, когда ее удаляете. Как и в случае CREATE, DROP имеет некоторые опции. Например, вы можете написать такую команду:

DROP DATABASE IF EXISTS templatetest;

Это устранит ошибку, если вы пытаетесь удалить несуществующую базу данных. Вы также можете удалить используемую базу данных:

DROP DATABASE IF EXISTS templatetest WITH (FORCE);

Это опасно, конечно. Всегда проявляйте крайнюю осторожность при использовании этой команды. Я всегда избегаю ее использования, поскольку достаточно один раз промахнуться, и вы удалите производственную базу.

Еще одно. Используя ADS, мы можете быстро легко переключаться между базами данных в окне запроса. Однако, кажется, нет способа сделать это исключительно на SQL. Вы управляете соединением с помощью используемого инструмента.

Создание таблицы

Когда у нас есть база данных, чтобы было с чем работать, начнем с использования синтаксиса CREATE TABLE для получения таблицы. Если вы уже знакомы с реляционными СУБД, то это весьма большая статья (посмотрите по ссылке на документацию). Я собираюсь пока придерживаться простого варианта, и не залезать глубоко в кроличью нору. В дальнейшем можно будет в это углубиться.

Вот первый пример:

CREATE TABLE TableTest1 
(ID int NOT NULL,
SomeValue varchar(50) NOT NULL,
AnotherValue varchar(30) NULL);

Базовый синтаксис узнаваем, если вы пришли с SQL Server. В ADS результаты выглядят так:

Код не включает схему, поэтому используется схема по умолчанию — public. Я предпочитаю определять схему, привязывать к ней таблицы, а не использовать схему по умолчанию. Собрание всего в определенной схеме или схемах значительно упрощает процесс блокировки.

Конечно, чтобы создать таблицы для реального тестирования, нужно сделать пример немного более сложным. Давайте начнем со схемы:

CREATE SCHEMA hsr;

Теперь создадим пару таблиц с первичными и внешними ключами:

CREATE TABLE hsr.radiobrand 
(radiobrandid int PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
radiobranddesc varchar(50) NOT NULL);
CREATE TABLE hsr.radio
(radioid int PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
radioname varchar(50) NOT NULL,
radiobrandid int REFERENCES hsr.RadioBrand NOT NULL);

Как и в SQL Server, синтаксис для поддержки создания ключей использует ALTER, а также CREATE. Имеется также синтаксис для создания табличных ограничений, который, если вы создаете составной ключ или используя его как составной ключ, должны использовать вместо приведенного. Вы могли бы так создать таблицу hsr.radio этим способом:

CREATE TABLE hsr.radio 
(radioid int NOT NULL GENERATED BY DEFAULT AS IDENTITY,
radioname varchar(50) NOT NULL,
radiobrandid int NOT NULL,
CONSTRAINT radiopk PRIMARY KEY (radioid),
FOREIGN KEY (radiobrandid) REFERENCES hsr.RadioBrand(radiobrandid));

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

Вы можете провести небольшой тест:

insert into hsr.radiobrand 
(radiobranddesc)
VALUES
('Icom');
SELECT radiobrandid,
radiobranddesc
FROM hsr.radiobrand;

Заключение

Теперь у нас есть база данных и пара таблиц с данными. Пока PostgreSQL мало чем отличается от SQL Server. Не идентичны, конечно, но очень похожи. Мы увидим более значительные различия по мере продвижения вглубь. Возможность определить более одной шаблонной базы данных — изящный трюк. Остальное было ожидаемо.

В следующий раз мы действительно собираемся заняться резервным копированием и восстановлением.

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Автор не разрешил комментировать эту запись

Определение структуры данных

Для создания базы данных используется команда CREATE DATABASE , после которой указывается название базы данных.

Для выполнения запросов будем использовать графический клиент pgAdmin, хотя также можно использовать консольный клиент psql.

Чтобы создать новую базу, данных откроем pgAdmin . В левой части программы выберем какую-нибудь базу данных, например, стандартную бд postgres, и нажмем на нее правой кнопкой мыши.

Создание базы данных в PostgreSQL и pgAdmin

В появившемся меню выберем пункт Query Tool. , и в центральной части программы откроется поле для ввода кода SQL. В это поле введем следующий код:

CREATE DATABASE usersdb;

CREATE DATABASE в PostgreSQL

Для выполнения кода нажмем на значок молнии, и после этого будет создана база данных usersdb.

Чтобы увидеть нашу базу данных, нажмем в левой части на узел Databases правой кнопкой мыши и в контекстном меню выберем Refresh. :

Произойдет обновление, и мы увидем созданную базу данных.

Промотр баз данных в pgAdmin

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

Удаление базы данных

Для удаления базы данных применяется команда DROP DATABASE , после которой указывается название базы данных.

Удаляемая база данных должна быть неактивной, то есть подключение к ней должно быть закрыта.

Например, удаление базы данных usersdb:

DROP DATABASE usersdb;

Как создать базу данных postgreSQL?

Есть приложение (блог), как создать базу данных postgreSQL. Код полностью рабочий, исходники на гитхабе. Всё вроде как понятно, кроме одного — Как создать эту самую db ? Само приложение запускается на локальном сервере с помощью virtualenv Хоть в readme есть и «text hint», но я не понимаю, куда вставлять этот самый text hint ? Сами исходники : https://github.com/dlamichhane/Flask-blog/tree/master/flaskblog

Отслеживать
задан 12 июн 2015 в 16:12
117 1 1 золотой знак 2 2 серебряных знака 7 7 бронзовых знаков
Какую операционную систему используете?
15 июн 2015 в 7:33

@FeroxTL Ubuntu 14.04. С базами данных мало имел общего, лишь с MySQL в php, там всё до боли просто, но про PostgreSQL ничего не знаю, а про её использование так вообще не слышал даже

16 июн 2015 в 10:29

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

В Postgresql есть приложение psql. Но тут стоит учесть, что вход в базу осуществляется (по умолчанию) с тем же пользователем, что и тот, под которым вы зарегистрированы в системе. Postgresql создаёт при установке пользователя postgres (системного). Именно под его учётной записью необходимо выполнять все действия. Итак, сначала становимся пользователем postgres

sudo su postgres 

и запускаем под ним psql . Далее выведется приглашение командной строки postgres. Стоит упомянуть, что в Postgresql пользователь postgres — это что-то вроде суперпользователя, т.е. он имеет доступ ко всем базам и по умолчанию все базы создаются от него. Также есть небольшой набор команд для администрирования, например, \l — вывести список доступных баз данных. Чтобы создать базу данных необходимо написать стандартную команду SQL —

CREATE DATABASE test_db; 

, например. Чтобы создать пользователя воспользуйтесь командой

CREATE USER test_user WITH password 'qwerty'; 

Но на данную базу данных у пользователя не будет прав. Чтобы создать базу с владельцем добавьте опциональный параметр OWNER

CREATE DATABASE test_database OWNER test_user; 

Можно также дать права на базу пользователю командой

GRANT ALL privileges ON DATABASE test_db TO test_user; 

Для удаления базы данных можно воспользоваться командой

DROP DATABASE test_db; 

В принципе этого достаточно, чтобы начать знакомство с Postgresql.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *