Banco De Dados - Aula 05-09
Especialização
Resultado da separação de um ou mais subconjunto de entidades a partir de um nível superior. Pense em uma entidade Funcionários
, que possui os campos padrões de funcionário, como ==código, nome, endereço, telefones, …==
No entanto, tratando-se de uma grande empresa, conjecturemos o seguinte: Dentre os funcionários, existem os funcionários que possuem CRM (Médicos), CREA (Arquitetos e Engenheiros), ou quaisquer outras particularidades à “classe trabalhadora” deste funcionário.
Assim surge a necessidade de uma Especialização.
Agregação
É uma abstração dos dados onde um relacionamento é tratado como um conjunto de entidade de um nível superior. Normalmente acontecem quando tentamos ligar um relacionamento em outro.
Pense no seguinte exemplo:
Funcionários de uma empresa trabalham em vários Projetos. Durante este trabalho, e somente durante o trabalho, pode haver a necessidade de reservar equipamentos da empresa. Nós não podemos ligar um relacionamento ==Reservar== com o relacionamento do ==Trabalham==. Então, para contornar, nós utilizamos a Agregação.
SQL
Formas normais. Exercícios
[!info] Sobre o
;
Estou utilizando o MariaDB para a execução dos códigos. Nele, há a necessidade de terminar os códigos utilizando o;
ou\g
. Assim, o server me permite quebrar a linha para deixar o código mais fácil de ser lido.
Criando um banco de dados
sql code snippet start
CREATE DATABASE nome_do_banco;
sql code snippet end
Tendo criado o banco de dados, você precisará iniciar o seu uso:
sql code snippet start
USE nome_do_banco;
sql code snippet end
Criação de Tabelas
sql code snippet start
CREATE TABLE nome_da_tabela
(nome_do_campo TIPO PARAMETROS,
nome_do_outro_campo TIPO PARAMETROS, ...)
;
sql code snippet end
TIPOS de campos
- INT / INTEGER - valores inteiros;
- VARCHAR(XXX) - valores em texto onde
XXX
é o número de caracteres possíveis; - FLOAT - valores flutuantes (quebrados).
PARÂMETROS
- NOT NULL - não aceita inserções nulas
- IDENTITY(X,Y) / AUTO_INCREMENT - Adiciona valores automaticamente, onde X = início da contagem e Y o tanto que será incrementado.
Exemplo
sql code snippet start
CREATE TABLE departamento
(
codigodepto INT NOT NULL,
nome VARCHAR(30)
)
;
sql code snippet end
Alterações de tabela para adição de novos itens
sql code snippet start
ALTER TABLE nome_da_tabela ADD PARAMETROS_DA_ADIÇÃO;
sql code snippet end
No exemplo acima, não adicionamos uma chave primária. Faremos isso no exemplo abaixo e explicarei os constraints ligados à esta criação
sql code snippet start
ALTER TABLE departamento
ADD CONSTRAINT pk_depto
PRIMARY KEY (codigodepto)
;
sql code snippet end
Onde:
- Estamos alterando uma tabela chamada departamento;
- Adicionando um novo constraint (um delimitador, uma referência) e dando um nome à ele, marcando-o com a chave primária linkando ao campo codigodepto.
Inserção na tabela
Para inserir na tabela devemos utilizar a seguinte sintaxe:
sql code snippet start
INSERT INTO nome_tabela VALUES
(campo1, campo2, campo3, ..., campoN),
(campo1, campo2, campo3, ..., campoN),
(campo1, campo2, campo3, ..., campoN),
(campo1, campo2, campo3, ..., campoN)
;
sql code snippet end
Exemplo
sql code snippet start
INSERT INTO departamento VALUES
(1, 'TI'),
(2, 'ENGENHARIA'),
(3, 'ADM'),
(4, 'FROTA'),
(5, 'GESTAO')
;
sql code snippet end
Atualizando um valor
sql code snippet start
UPDATE nome_tabela
SET campo = ALTERAÇÃO
WHERE campo = VERIFICAÇÃO
;
sql code snippet end
Exemplo
sql code snippet start
UPDATE departamento
SET nome = 'ADMINISTRAÇÃO'
WHERE codigodepto = 3
;
sql code snippet end
Deletando um valor da tabela
sql code snippet start
DELETE FROM nome_tabela WHERE campo = VERIFICAÇÃO
sql code snippet end
Exemplo
sql code snippet start
DELETE FROM departamento
WHERE codigodepto = 4;
sql code snippet end
Criando a relação (Foreign Key)
sql code snippet start
CONSTRAINT fk_exemplo FOREIGN KEY (campo_nesta_tabela) REFERENCES outra_tabela (campo_outra_tabela);
sql code snippet end
Exemplo
sql code snippet start
CREATE TABLE funcionario
(
codigo_func INT NOT NULL,
CONSTRAINT pk_func PRIMARY KEY (codigo_func),
nome VARCHAR(30),
salario FLOAT,
codigo_dep INT,
CONSTRAINT fk_dept_func FOREIGN KEY (codigo_dep) REFERENCES departamento (codigodepto)
)
;
sql code snippet end
Deletando uma tabela inteira
Em caso de erros ou necessidade
sql code snippet start
DROP TABLE nome_tabela;
sql code snippet end
Realizando pesquisas básicas
sql code snippet start
SELECT * FROM nome_tabela;
sql code snippet end