Alura > Cursos de Data Science > Cursos de SQL e Banco de Dados > Conteúdos de SQL e Banco de Dados > Primeiras aulas do curso PostgreSQL: comandos DML e DDL

PostgreSQL: comandos DML e DDL

Modelagem de Dados - Introdução

Sejam muito bem-vindos à Alura. Meu nome é Vinicius Dias e embora você não esteja me vendo, vou te guiar em mais um treinamento de PostgreSQL. Durante esse treinamento vamos bater um papo sobre modelagem de dados. Enquanto conversamos sobre modelagem, vamos ver como funciona uma estrutura e um servidor de banco de dados normalmente, vamos comentar sobre o conceito de esquemas do PostgreSQL, mas obviamente, como também vou citar bastante, existem cursos específicos sobre modelagem. Não especificamente sobre PostgreSQL, mas modelagem de bancos de dados em geral. Vale a pena conferir também.

Mas obviamente vamos conversar um pouco sobre modelagem e aplicar na prática com o PostgreSQL. Além disso, vamos entender a diferença entre comandos DDL e DML, que são data definition language e data manipulation language. Ou seja, vamos ver a diferença entre eles, alguns tipos de comandos de cada um. Vai ser uma prática bem interessante.

Durante o treinamento, vamos entrar em muito mais detalhes sobre o comando de CREATE DATABASE, o comando de CREATE TABLE, vamos ver sintaxes novas, vamos ver sobre tabela temporária, relatórios, vamos ver sobre o conceito de schemes, ou seja, esquemas do banco de dados, onde podemos separar algumas coisas, que é bem interessante.

E conforme vamos avançando vamos aprendendo coisas novas. Vamos ver bastante sobre detalhes que acabamos não citando ainda sobre o insert, e com isso vamos tirar algumas dúvidas, vamos aprender a fazer um insert a partir de um select, vamos juntar os dois, mesma coisa com update, fazendo update em uma tabela a partir de outra.

Vamos conhecer o conceito de transações, begin, rollback, commit, e no final de tudo ainda vamos brincar um pouco com importação de dados, vamos importar, exportar relatórios. Vamos trabalhar também com algumas particularidades do Postgre, como sequências, criação de tipos, etc.

Vai ser um estudo bem interessante, então caso no caminho você fique com alguma dúvida, não hesite, você pode abrir uma questão no fórum. Eu tento responder pessoalmente sempre que possível, mas quando não consigo temos uma comunidade muito solicita de alunos, moderadores e instrutores, e alguém com certeza vai conseguir te ajudar.

Chega de bate-papo, vem comigo no próximo vídeo para começarmos a revisar o que já sabemos e logo aprender coisas novas.

Modelagem de Dados - Revisão

Bem-vindos de volta. Vamos fazer uma revisão bem rápida naquele mesmo esquema que fizemos no treinamento anterior revendo o que já entendemos sobre esquema de banco de dados e etc.

Para começar, sempre que vamos trabalhar com um banco de dados, precisamos ter pelo menos um servidor. O que é um servidor? É o computador onde vamos armazenar, o software que vai cuidar dos dados e os dados em si.

Sempre, independente de qualquer coisa, precisamos de um servidor. Claro que pode ser mais de um, mas para efeitos de simplificação vamos imaginar que tem sempre um servidor.

Dentro desse mesmo servidor vamos ter instalado, por exemplo, o PostgreSQL. Temos lá o servidor do Postgre instalado, que é um software, o programa que controla, que gerencia os bancos de dados. Nesse computador, com esse software instalado, conseguimos criar várias bases de dados, ou vários bancos de dados.

O que é um banco de dados? Um banco de dados é o local, uma separação no disco rígido, vamos dizer assim, no HD, onde vamos gerenciar nosso esquema do banco de dados. Vamos gerenciar tudo que vamos armazenar, onde vamos definir o que chamamos de esquema.

Temos um servidor, dentro do servidor podemos ter vários bancos de dados, em cada banco de dados que, por exemplo, não necessariamente, mas por exemplo, pode ser um banco de dados para cada aplicação, para cada software que você tem na sua empresa, dentro de cada um dos bancos de dados temos tabelas, e essas tabelas, ou entidades, caso você já tenha estudado um pouco sobre modelagem, possuem informações.

Quais são essas informações? Em uma tabela, de forma muito semelhante a uma planilha do Excel, por exemplo, temos linhas e colunas, a diferença é que quando criamos uma planilha no Excel ela vem vazia, linhas em branco e colunas em branco. Já em um banco de dados, quando criamos uma tabela, já definimos quais colunas ela vai poder ter. E cada uma das colunas tem algumas definições.

Como por exemplo o tipo de dado de cada um da coluna. Por exemplo, se tenho que minha Coluna 2 é do tipo inteiro, então todos os registros ou linhas que eu inserir precisam ser do tipo inteiro nessa coluna. Se na Coluna 3 eu disser que vou ter um varchar de 120 caracteres, não consigo colocar uma string, um texto de 500 caracteres aqui.

Sempre existem essas restrições de tipos. E além de definir os tipos temos outras restrições. Como por exemplo, consigo informar que a coluna número 4, por exemplo, é única, ou seja, não consigo inserir de forma repetida algum registro. Não consigo, por exemplo, imagine que a Coluna 4 fosse o campo e-mail e não posso ter e-mails repetidos, então vou informar que a coluna número 4 tem a restrição de ser única, então sempre que alguém inserir um registro nessa tabela ele vai verificar se já existe alguém com o mesmo e-mail, por exemplo, nessa tabela.

Existem várias restrições, vamos inclusive relembrar algumas que já vimos, vamos trabalhar algumas novas durante o treinamento. Mas basicamente temos as colunas com seus tipos e algumas restrições.

Uma restrição, me arrisco a dizer que a mais importante, é a de chave primária, por isso em alguns diagramas ela até fica separada. Uma chave primária é o campo, a informação que identifica de forma única um registro. Ou seja, imagina que tenho uma tabela de pessoas, e quero garantir que consigo identificar uma pessoa, diferenciar uma pessoa de outra.

Nós sabemos que duas pessoas podem acabar tendo o mesmo nome, nada impede que duas pessoas tenham o mesmo nome, só que duas pessoas não podem ter o mesmo CPF, por exemplo. Então CPF poderia ser uma chave primária.

Mas é muito comum, utilizando bancos de dados relacionais termos um campo específico de identificação, que não necessariamente faça parte do domínio, como é o CPF. Então utilizamos campos chamados, por exemplo, id, código, identificador, alguma coisa do tipo.

Utilizamos outra feature, outra funcionalidade interessante dos bancos de dados de auto incremento. Ou seja, o próprio banco de dados vai adicionando um número nesse id sempre que for inserindo. E inclusive vamos ver uma forma diferente de trabalhar isso neste treinamento.

Além de chave primária, temos também o que é chamado de chave estrangeira, que é o campo que permite que façamos relacionamentos entre as tabelas. Basicamente, essa é a estrutura de um servidor de bancos de dados com um bancos de dados com tabelas que têm colunas, que têm registros, as colunas têm seus tipos e restrições, etc.

Essa é uma revisão bem sucinta e bem rápida do que já vimos sobre modelos, sobre esquema de banco de dados. Só que agora está na hora de começarmos a aprender coisas novas. No próximo vídeo vamos aprender mais um tipo de separação aqui.

Modelagem de Dados - Schemas

Bem-vindos de volta. Como falei, vamos ver um outro tipo de separação quando estamos utilizando o Postgre. Como eu disse, temos os servidores. Dentro de servidores podemos ter bancos de dados, e dentro de bancos de dados podemos ter tabelas. Só que além disso existe outra forma de separar tabelas.

Pense comigo, imagine que desenvolvendo o sistema da Alura temos alunos, cursos, categorias dos cursos, etc, e isso tudo faz parte do módulo, da parte acadêmica da Alura. Queremos separar todas essas tabelas dentro de algum lugar com nome acadêmico, com esse rótulo, vamos dizer assim.

Queremos separar o esquema acadêmico do esquema financeiro, onde vão ter dados de pagamento, matrícula financeira, o que for, seja lá o que tenha no esquema financeiro.

Conseguimos ter essa separação e inclusive é possível termos o mesmo nome de tabela em esquemas diferentes. Imagine nesse exemplo, que exista uma matrícula financeira. Dentro do esquema financeiro posso ter uma tabela chamada matrícula, e dentro do esquema acadêmico também posso ter uma tabela chamada matrícula. E ambos estão no mesmo banco de dados. Não vamos ter conflito, nenhum tipo de problema.

Vamos ver como trabalhamos com esquemas utilizando Postgre. E na verdade já estamos trabalhando com esquemas. Vou voltar para o pgAdmin, e se você se lembrar no último curso criamos algumas tabelas, brincamos um pouco. Vou deixar o arquivo de criação desse esquema do banco de dados aqui para que vocês possam baixar.

Basicamente temos alunos, categorias, cursos, e a relação entre um aluno e curso. Com isso estamos criando simplesmente tabelas, sem esquema nenhum. Na verdade, não. No Postgre sempre trabalhamos em algum esquema, e se não especificarmos qual esquema estamos utilizando vamos cair em um esquema chamado public.

Esse é como se fosse o esquema padrão em que trabalhamos, mas obviamente podemos criar novos esquemas. Para isso posso simplesmente rodar um CREATE SCHEMA acadêmico, vou criar o esquema acadêmico onde todas essas tabelas vão estar.

Vou rodar essa query para ver se não escrevi errado e show de bola, temos um novo esquema. Vou inclusive atualizar. Temos dois esquemas, o público e o acadêmico.

Repare que o público já tem algumas tabelas, só que o acadêmico está vazio. Se eu tentar acessar alguma tabela não temos nada. O que vou fazer? Vou fazer um DROP TABLE de todas as tabelas que temos, que são aluno, categoria, curso e aluno_curso. Vou remover todas as tabelas do meu banco de dados.

Agora o que vou fazer? Vou recriar todas essas tabelas no meu esquema acadêmico. E como posso fazer isso? Basta colocar antes da tabela o nome do esquema. Então, academico.aluno. E dessa forma conseguimos trabalhar com esquemas em qualquer query que façamos, tanto para fazer um CREATE TABLE como estamos fazendo aqui, quanto para fazer um DROP TABLE, ou para fazer um SELECT, para fazer um INSERT, um UPDATE.

Sempre que formos nos referir a essas tabelas, vamos nos referir a elas como academico.nome da tabela. Vou criar isso tudo para ver se mais uma vez não dei bobeira. Relation categoria não existe, então vou criar uma por uma. Criei aluno, criei categoria.

Olha que interessante, estou tentando fazer referência a uma tabela categoria do esquema público, e não é o caso. Quero fazer uma menção à tabela categoria, quero referenciar a tabela categoria do esquema acadêmico. Agora sim tudo deve dar certo.

Acho que agora tudo vai funcionar. Vamos ver. Show de bola. Temos nossas tabelas no esquema acadêmico. Agora, vou compartilhar com vocês uma experiência que eu tive trabalhando com esquemas separados. Trabalhei em uma empresa onde tínhamos aproximadamente uns cem esquemas no nosso banco de dados e cada esquema tinha cerca de cem tabelas, era um banco de dados muito grande.

O que acontece? Para não ter que ficar digitando nomes grandes de esquemas, o que a equipe de DBA fez? O que a equipe de modelagem de banco de dados fez? Eles vieram na criação dos esquemas e abreviaram. Por exemplo, o esquema financeiro era fin, o esquema de matrículas era mat, o esquema do sistema que guardava informações do sistema era sis.

Existiu esse esquema de abreviação para evitar nomes longos de esquema. Isso é regra? É uma boa prática? É recomendação? Não existe nenhum tipo de regra quanto a isso. Você com sua equipe, com os analistas de requisitos, com a equipe de modelagem de banco de dados, caso exista, ou com quem for que vá modelar seu banco de dados vai definir quais os nomes vocês vão utilizar nos esquemas, se vocês vão utilizar esquemas ou não, porque um banco de dados muito simples, pontual, que só possui alguns CRUDS não tem necessidade de ter um esquema.

Agora, em um modelo um pouco maior, onde você pode ter tabelas ambíguas, você tem domínios diferentes, faz sentido utilizar esquema. Durante esse treinamento vou tentar me ater ao esquema acadêmico, vou tentar não criar nenhum outro para podermos fixar bastante essa sintaxe, mas não ficar focando em criar novos esquemas e esse tipo de coisa. Mas tenha em mente que em esquemas diferentes podemos ter tabelas com o mesmo nome, inclusive.

Caso você já conheça sobre programação, principalmente programação orientada a objetos, você pode ter ouvido falar em módulos, pacotes, namespace, alguma coisa do tipo, em alguma linguagem que você conheça. E é exatamente esse o conceito de esquemas. É uma separação lógica, como se fosse um namespace, um pacote, um módulo.

Com isso temos uma separação um pouco mais interessante. Agora que já vimos até uma parte prática, vamos dar um passo atrás e conversar um pouco sobre análise de requisito, de modelagem, mas vai ser um papo bem rápido, prometo.

Sobre o curso PostgreSQL: comandos DML e DDL

O curso PostgreSQL: comandos DML e DDL possui 101 minutos de vídeos, em um total de 42 atividades. Gostou? Conheça nossos outros cursos de SQL e Banco de Dados em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda SQL e Banco de Dados acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas