Neste artigo, você aprenderá como usar a instrução PostgreSQL CREATE DATABASE e DROP DATABASE para criar novos bancos de dados e excluí-los.
Resumo de Como Criar e Excluir um Banco de Dados no PostgreSQL
para criar uma novo banco de dados no postgresql, basta
#1 logar com o usuário postgres ou outro de sua escolha
su - postgres
#2 acesse o terminal psql
psql
#3 use “CREATE DATABASE meubanco;” para criar o banco de dados chamado “meubanco”
CREATE DATABASE meubanco;
#4 Para excluir um banco de dados usamos “DROP DATABASE meubanco;“
DROP DATABASE meubanco;
Introdução à Instrução CREATE DATABASE do PostgreSQL
A instrução CREATE DATABASE permite criar um novo banco de dados PostgreSQL.
Para criar um banco de dados, você deve ser um superusuário ou ter o privilégio especial CREATEDB. Veja CREATE ROLE.
Por padrão, o novo banco de dados será criado clonando o banco de dados padrão do sistema template1. Um modelo(template) diferente pode ser especificado escrevendo o nome do TEMPLATE. Em particular, escrevendo TEMPLATE template0, você pode criar um banco de dados puro (um onde não existem objetos definidos pelo usuário e onde os objetos do sistema não foram alterados) contendo apenas os objetos padrão predefinidos por sua versão do PostgreSQL. Isso é útil se você deseja evitar copiar quaisquer objetos locais de instalação que possam ter sido adicionados ao template1.
Veja a seguir um exemplo de sintaxe da instrução CREATE DATABASE:
CREATE DATABASE nome_do_banco [ WITH ] [ OWNER [=] nome_usuario] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ STRATEGY [=] strategy ] ] [ LOCALE [=] locale ] [ LC_COLLATE [=] lc_collate ] [ LC_CTYPE [=] lc_ctype ] [ ICU_LOCALE [=] icu_locale ] [ LOCALE_PROVIDER [=] locale_provider ] [ COLLATION_VERSION = collation_version ] [ TABLESPACE [=] tablespace_name ] [ ALLOW_CONNECTIONS [=] allowconn ] [ CONNECTION LIMIT [=] connlimit ] [ IS_TEMPLATE [=] istemplate ] [ OID [=] oid ]
Para criar um novo banco de dados:
- Primeiro, especifique o nome do novo banco de dados após as palavras-chave CREATE DATABASE. O nome do banco de dados deve ser exclusivo no servidor de banco de dados PostgreSQL. Se você tentar criar um banco de dados cujo nome já existe, o PostgreSQL emitirá um erro.
- Em seguida, especifique um ou mais parâmetros para o novo banco de dados.
ENTENDENDO OS PARÂMETROS
Vamos aos parâmetros usamos acima:
- nome_do_banco O nome de um banco de dados a ser criado.
- nome_usuario O nome da função do usuário que será o proprietário do novo banco de dados ou DEFAULT para usar o padrão(ou seja, o usuário que executa o comando). Para criar um banco de dados pertencente a outra função, você deve ser um membro direto ou indireto dessa função ou ser um superusuário.
template
O nome do modelo a partir do qual criar o novo banco de dados ou DEFAULT para usar o modelo padrão (template1).encoding
Codificação do conjunto de caracteres a ser usada no novo banco de dados. Especifique uma constante de string (por exemplo, ‘SQL_ASCII’), ou um número inteiro de codificação, ou DEFAULT para usar a codificação padrão (ou seja, a codificação do banco de dados modelo). Os conjuntos de caracteres suportados pelo servidor PostgreSQL são descritos na Seção 24.3.1. Veja abaixo as restrições adicionais.strategy
Estratégia a ser usada na criação do novo banco de dados. Se for utilizada a estratégia WAL_LOG, o banco de dados será copiado bloco a bloco e cada bloco será gravado separadamente no log write-ahead. Essa é a estratégia mais eficiente nos casos em que o banco de dados de modelos é pequeno e, portanto, é o padrão. A estratégia FILE_COPY mais antiga também está disponível. Essa estratégia grava um pequeno registro no log write-ahead para cada tablespace usado pelo banco de dados de destino. Cada um desses registros representa a cópia de um diretório inteiro para um novo local no nível do sistema de arquivos. Embora isso reduza substancialmente o volume de log write-ahead, especialmente se o banco de dados modelo for grande, também força o sistema a executar um ponto de verificação antes e depois da criação do novo banco de dados. Em algumas situações, isso pode ter um impacto negativo perceptível no desempenho geral do sistema.locale
Este é um atalho para configurar LC_COLLATE e LC_CTYPE de uma só vez.lc_collate
Ordem de agrupamento (LC_COLLATE) a ser usada no novo banco de dados. Isso afeta a ordem de classificação aplicada às strings, por exemplo, em consultas com ORDER BY, bem como a ordem usada em índices em colunas de texto. O padrão é usar a ordem de agrupamento do banco de dados modelo. Veja abaixo as restrições adicionais.lc_ctype
Classificação de caracteres (LC_CTYPE) para usar no novo banco de dados. Isso afeta a categorização de caracteres, por exemplo, inferior, superior e dígito. O padrão é usar a classificação de caracteres do banco de dados de modelo. Veja abaixo as restrições adicionais.icu_locale
Especifica o ID de localidade ICU se o provedor de localidade ICU for usado.locale_provider
Especifica o provedor a ser usado para o agrupamento padrão neste banco de dados. Os valores possíveis são: icu, libc. libc é o padrão. As opções disponíveis dependem do sistema operacional e das opções de compilação.collation_version
Especifica a string da versão do agrupamento a ser armazenada com o banco de dados. Normalmente, isso deve ser omitido, o que fará com que a versão seja calculada a partir da versão real do agrupamento de banco de dados fornecida pelo sistema operacional. Esta opção deve ser usada por pg_upgrade para copiar a versão de uma instalação existente. Consulte também ALTER DATABASE para saber como lidar com incompatibilidades de versão de agrupamento de banco de dados.tablespace_name
O nome do tablespace que será associado ao novo banco de dados, ou DEFAULT para usar o tablespace do banco de dados modelo. Este tablespace será o tablespace padrão usado para objetos criados neste banco de dados. Consulte CREATE TABLESPACE para obter mais informações.allowconn
Se for falso, ninguém poderá se conectar a este banco de dados. O padrão é true, permitindo conexões (exceto conforme restrito por outros mecanismos, como GRANT/REVOKE CONNECT).connlimit
Quantas conexões simultâneas podem ser feitas a este banco de dados. -1 (o padrão) significa sem limite.- istemplate Se verdadeiro, então este banco de dados pode ser clonado por qualquer usuário com privilégios CREATEDB; se false (o padrão), somente superusuários ou o proprietário do banco de dados podem cloná-lo.
- oid O identificador de objeto a ser usado para o novo banco de dados. Se este parâmetro não for especificado, o PostgreSQL escolherá um OID adequado automaticamente. Este parâmetro destina-se principalmente para uso interno por pg_upgrade e somente pg_upgrade pode especificar um valor menor que 16384.
Os parâmetros opcionais podem ser escritos em qualquer ordem, não apenas na ordem ilustrada acima.
Exemplos:
Para criar um novo banco de dados:
CREATE DATABASE lusiadas;
Para criar um banco de dados sales pertencente ao usuário salesapp com um tablespace padrão de salesspace:
CREATE DATABASE sales OWNER salesapp TABLESPACE salesspace;
Para criar uma música de banco de dados com uma localidade diferente:
Neste exemplo, a cláusula TEMPLATE template0 é necessária se a localidade especificada for diferente daquela em template1. (Caso contrário, especificar a localidade explicitamente é redundante.)
Para criar um banco de dados music2 com uma localidade diferente e uma codificação de conjunto de caracteres diferente:
CREATE DATABASE music2 LOCALE 'sv_SE.iso885915' ENCODING LATIN9 TEMPLATE template0;
A localidade especificada e as configurações de codificação devem corresponder ou um erro será relatado.
Observe que os nomes de localidade são específicos do sistema operacional, portanto, os comandos acima podem não funcionar da mesma maneira em todos os lugares.
Introdução à Instrução DROP DATABASE do PostgreSQL
DROP DATABASE descarta um banco de dados. Ele remove as entradas do catálogo do banco de dados e exclui o diretório que contém os dados. Ele só pode ser executado pelo proprietário do banco de dados. Ele não pode ser executado enquanto você estiver conectado ao banco de dados de destino. (Conecte-se ao postgres ou a qualquer outro banco de dados para emitir este comando.) Além disso, se qualquer outra pessoa estiver conectada ao banco de dados de destino, este comando falhará, a menos que você use a opção FORCE descrita abaixo.
DROP DATABASE não pode ser desfeito. Use-o com cuidado!
DROP DATABASE [ IF EXISTS ]nome
[ [ WITH ] (opcao
[, ...] ) ] ondeopcao
pode ser: FORCE
ENTENDENDO OS PARÂMETROS
- IF EXISTS Não lance um erro se o banco de dados não existir. Um aviso é emitido neste caso.
nome
O nome do banco de dados a ser removido.- FORCE Tente encerrar todas as conexões existentes com o banco de dados de destino. Ele não termina se transações preparadas, slots de replicação lógica ativos ou assinaturas estiverem presentes no banco de dados de destino. Isso falhará se o usuário atual não tiver permissões para encerrar outras conexões. As permissões necessárias são as mesmas de pg_terminate_backend, descritas na Seção 9.27.2. Isso também falhará se não formos capazes de encerrar as conexões.
Este comando não pode ser executado enquanto estiver conectado ao banco de dados de destino. Portanto, pode ser mais conveniente usar o programa dropdb, que é um wrapper em torno desse comando.