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

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

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

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

По умолчанию база является неактивной, поэтому ее значок имеет серый цвет. Но чтобы к ней подключиться, достаточно нажать на нее и раскрыть ее узел.
Удаление базы данных
Для удаления базы данных применяется команда 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.
SQL-Ex blog

Создание базы данных и таблиц в PostgreSQL: Изучение PostgreSQL с Grant Fritchey
Добавил Sergey Moiseenko on Среда, 10 августа. 2022
У вас есть локально работающий экземпляр PostgreSQL. Что дальше? Создание резервных копий. Но прежде мне нужно создать базу данных и пару таблиц, чтобы было что архивировать.
- Мне нравится Azure Data Studio. С ней легко работать. Она быстрая. Она чистая. Она имеет плагины для выполнения различных вещей.
- Например, она очень хорошо подключается к GitHub, поэтому вы можете легко держать разрабатываемые коды на GitHub.
- Мне просто более комфортно работать над кодом с выделенным инструментом, а не просто выполняя его из командной строки.
- Я не хочу описывать каждый отдельный имеющийся метод, поэтому я должен был выбрать один. И я его выбрал.
Создание базы данных
Команда создания базы данных очень простая:
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. Не идентичны, конечно, но очень похожи. Мы увидим более значительные различия по мере продвижения вглубь. Возможность определить более одной шаблонной базы данных — изящный трюк. Остальное было ожидаемо.
В следующий раз мы действительно собираемся заняться резервным копированием и восстановлением.
Обратные ссылки
Нет обратных ссылок
Комментарии
Показывать комментарии Как список | Древовидной структурой
Автор не разрешил комментировать эту запись
Как создать базу данных в postgresql
CREATE DATABASE — создать базу данных
Синтаксис
CREATE DATABASEимя[ [ WITH ] [ OWNER [=]имя_пользователя] [ TEMPLATE [=]шаблон] [ ENCODING [=]кодировка] [ LC_COLLATE [=]категория_сортировки] [ LC_CTYPE [=]категория_типов_символов] [ TABLESPACE [=]табл_пространство] [ ALLOW_CONNECTIONS [=]разр_подключения] [ CONNECTION LIMIT [=]предел_подключений] [ IS_TEMPLATE [=]это_шаблон] ]
Описание
Команда CREATE DATABASE создаёт базу данных PostgreSQL .
Чтобы создать базу данных, необходимо быть суперпользователем или иметь специальное право CREATEDB . См. CREATE USER .
По умолчанию новая база данных создаётся копированием стандартной системной базы данных template1 . Задать другой шаблон можно, добавив указание TEMPLATE имя . В частности, написав TEMPLATE template0 , можно создать девственно чистую базу данных, содержащую только стандартные объекты, предопределённые установленной версией PostgreSQL . Это бывает полезно, когда копировать в новую базу любые дополнительные объекты, добавленные локально в template1 , нежелательно.
Параметры
Имя создаваемой базы данных. имя_пользователя
Имя пользователя (роли), назначаемого владельцем новой базы данных, либо DEFAULT , чтобы владельцем стал пользователь по умолчанию (а именно, пользователь, выполняющий команду). Чтобы создать базу данных и сделать её владельцем другую роль, необходимо быть непосредственным или опосредованным членом этой роли, либо суперпользователем. шаблон
Имя шаблона, из которого будет создаваться новая база данных, либо DEFAULT , чтобы выбрать шаблон по умолчанию ( template1 ). кодировка
Кодировка символов в новой базе данных. Укажите строковую константу (например, ‘SQL_ASCII’ ) или целочисленный номер кодировки, либо DEFAULT , чтобы выбрать кодировку по умолчанию (а именно, кодировку шаблона). Наборы символов, которые поддерживает PostgreSQL , перечислены в Подразделе 23.3.1. Дополнительные ограничения описаны ниже. категория_сортировки
Порядок сортировки ( LC_COLLATE ), который будет использоваться в новой базе данных. Этот параметр определяет порядок сортировки строк, например, в запросах с ORDER BY, а также порядок индексов по текстовым столбцам. По умолчанию используется порядок сортировки, установленный в шаблоне. Дополнительные ограничения описаны ниже. категория_типов_символов
Классификация символов ( LC_CTYPE ), которая будет применяться в новой базе данных. Этот параметр определяет принадлежность символов категориям, например: строчные, заглавные, цифры и т. п. По умолчанию используется классификация символов, установленная в шаблоне. Дополнительные ограничения описаны ниже. табл_пространство
Имя табличного пространства, связываемого с новой базой данных, или DEFAULT для использования табличного пространства шаблона. Это табличное пространство будет использоваться по умолчанию для объектов, создаваемых в этой базе. За подробностями обратитесь к CREATE TABLESPACE . разр_подключения
Если false, никто не сможет подключаться к этой базе данных. По умолчанию имеет значение true, то есть подключения принимаются (если не ограничиваются другими механизмами, например, GRANT / REVOKE CONNECT ). предел_подключений
Максимальное количество одновременных подключений к этой базе данных. Значение -1 (по умолчанию) снимает ограничение. это_шаблон
Если true, базу данных сможет клонировать любой пользователь с правами CREATEDB ; в противном случае (по умолчанию), клонировать эту базу смогут только суперпользователи и её владелец.
Дополнительные параметры могут записываться в любом порядке, не обязательно так, как показано выше.
Замечания
CREATE DATABASE нельзя выполнять внутри блока транзакции.
Ошибки, содержащие сообщение « не удалось инициализировать каталог базы данных » , чаще всего связаны с нехваткой прав в каталоге данных, заполнением диска или другими проблемами в файловой системе.
Для удаления базы данных применяется DROP DATABASE .
Программа createdb представляет собой оболочку этой команды, созданную ради удобства.
Конфигурационные параметры уровня базы данных (устанавливаемые командой ALTER DATABASE ) и разрешения уровня базы (устанавливаемые командой GRANT ) из шаблона не копируются.
Хотя с помощью этой команды можно скопировать любую базу данных, а не только template1 , указав её имя в качестве имени шаблона, она не предназначена (пока) для использования в качестве универсального средства вроде « COPY DATABASE » . Принципиальным ограничением является невозможность копирования базы данных шаблона, если установлены другие подключения к ней. CREATE DATABASE выдаёт ошибку, если при запуске команды есть другие подключения к этой базе; в противном случае новые подключения к базе блокируются до завершения команды CREATE DATABASE . За дополнительными сведениями обратитесь к Разделу 22.3.
Кодировка символов, указанная для новой базы данных, должна быть совместима с выбранными параметрами локали ( LC_COLLATE и LC_CTYPE ). Если выбрана локаль C (или равнозначная ей POSIX ), допускаются все кодировки, но для других локалей правильно будет работать только одна кодировка. (В Windows, однако, кодировку UTF-8 можно использовать с любой локалью.) CREATE DATABASE позволяет суперпользователям указать кодировку SQL_ASCII вне зависимости от локали, но этот вариант считается устаревшим и может привести к ошибочному поведению строковых функций, если в базе хранятся данные в кодировке, несовместимой с заданной локалью.
Параметры локали и кодировка должны соответствовать тем, что установлены в шаблоне, если только это не template0 . Это ограничение объясняется тем, что другие базы данных могут содержать данные в кодировке, отличной от заданной, или индексы, порядок сортировки которых определяются параметрами LC_COLLATE и LC_CTYPE . При копировании таких данных получится база, которая будет испорченной согласно новым параметрам локали. Однако template0 определённо не содержит какие-либо данные или индексы, зависящие от кодировки или локали.
Ограничение CONNECTION LIMIT действует только приблизительно; если одновременно запускаются два сеанса, тогда как в базе остаётся только одно « свободное место » , может так случиться, что будут отклонены оба подключения. Кроме того, это ограничение не распространяется на суперпользователей и фоновые рабочие процессы.
Примеры
Создание базы данных:
CREATE DATABASE lusiadas;
Создание базы данных sales , принадлежащей пользователю salesapp , с табличным пространством по умолчанию salesspace :
CREATE DATABASE sales OWNER salesapp TABLESPACE salesspace;
Создание базы данных music с кодировкой ISO-8859-1:
CREATE DATABASE music ENCODING 'LATIN1' TEMPLATE template0;
В этом примере предложение TEMPLATE template0 будет необходимым, только если кодировка template1 отличается от ISO-8859-1. Заметьте, что при смене кодировки может потребоваться также выбрать другие параметры LC_COLLATE и LC_CTYPE .
Совместимость
Оператор CREATE DATABASE отсутствует в стандарте SQL. Базы данных равнозначны каталогам, а их создание в стандарте определяется реализацией.
См. также
| Пред. | Наверх | След. |
| CREATE CONVERSION | Начало | CREATE DOMAIN |