Buscar

Implementação de BD aulas

Prévia do material em texto

AULA 2
Modelo relacional
 O conceito principal vem da teoria de conjuntos (álgebra relacional) atrelado a ideia de que não é relevante ao usuário saber onde os dados estão ou como eles se encontram, representado por uma coleção de tabelas (entidade/relação) é um conjunto de linhas (tuplas) uma lista de valores de atributos.
Linguagem SQL
O padrão mundial de acesso a banco de dados é a Linguagem Estruturada de Consulta (Structured Query Language) ou simplesmente SQL, na sigla em inglês.
A linguagem SQL divide-se em partes, cada uma atendendo a uma necessidade específica. Temos, então, a seguinte divisão:
Linguagem de Descrição de Dados (Data Definition Language – DDL) – tem como principais comandos Create, Alter e Drop, destinados, respectivamente, a criar, alterar e eliminar objetos de banco de dados, como usuários, tabelas, índices etc.
Linguagem de Manipulação de Dados (Data Manipulation Language - DML) – tem como principais comandos Insert, Update, Delete e Select, destinados, respectivamente, a inserir linhas nas tabelas, alterar linhas, eliminar linhas e consultar os dados da tabela.
Linguagem de Controle de Dados (Data Control Language – DCL) – tem como principais comandos Grant e Revoke, destinados a conceder e revogar privilégios de acesso respectivamente.
Exemplo: 
CREATE TABLE DEPARTAMENTO
(ID NUMERIC(7) PRIMARY KEY,
NOME VARCHAR(40) NOT NULL)
Observe no comando a constraint PRIMARY KEY, definindo a coluna ID como chave primária e a constraint NOT NULL, estabelecendo que NOME é de preenchimento obrigatório.
Mais Constraints
Campos únicos
UNIQUE
Ao estabelecermos a constraint UNIQUE para uma coluna, determinamos que ela não pode ter valor repetido. Entretanto, ela não obriga a coluna a ter valor ou não a torna de preenchimento obrigatório e, como NULO não é valor, uma coluna UNIQUE pode possuir várias linhas nulas (sem valor).
Foreign Key
Os relacionamentos entre tabelas são criados através da geração de chaves estrangeiras (foreign key – FK) nas tabelas FILHO que referenciam colunas chaves nas tabelas PAI.
Para estabelecer essa restrição, acrescentamos REFERENCES na definição da coluna, como exemplo:
Acrescentando colunas em tabelas
Podemos acrescentar colunas em tabelas já criadas com o comando Alter Table. Sua sintaxe é:
alter table <nome_tabela> add <nome_coluna> <tipo da coluna> <constraint >
Vamos assumir, entretanto que nossa tabela, com esse último comando de criação, não foi completamente estabelecida. Está faltando a coluna descrição. Para inseri-la, podemos dar o comando:
ALTER TABLE DEPARTAMENTO ADD descrição VARCHAR(30) NOT NULL;
Eliminando colunas de tabelas
É possível eliminar colunas de tabelas, inclusive aquelas referenciadas por constraints e índices, e até mesmo chaves primárias, únicas e estrangeiras. É verdade que cuidados quanto à aplicação devem ser tomados por parte dos desenvolvedores e DBA, porém, o SGBD implementa essa funcionalidade.
Ao eliminarmos uma coluna, suas restrições, caso existam, também são removidas do dicionário de dados.
alter table <nome_tabela> drop column <nome_coluna>;
por exemplo: se desejarmos eliminar a coluna descrição da tabela Departamento, daremos o seguinte comando:
ALTER TABLE DEPARTAMENTO DROP COLUMN DESCRICAO
Incluindo uma Foreign Key numa tabela existente
Também podemos incluir a constraint de Foreign Key após a criação da tabela. Para tal, basta especificar a adição da constraint no comando ALTER TABLE.
A tabela Cliente foi criada, mas a coluna Vendedor deveria ser uma chave estrangeira para a tabela Empregado na coluna ID. Podemos dar o seguinte comando de ALTER TABLE:
ALTER TABLE CLIENTE ADD FOREIGN KEY (VENDEDOR) REFERENCES EMPREGADO(ID)
Constraint de colunas e tabelas
As constraints podem ser definidas junto com a coluna ou separadamente, no final do comando create table ou com o comando alter table, as constraints not null só podem ser definidas junto com a definição da coluna.
Scripts
Um SCRIPT nada mais é que um conjunto de comandos SQL salvos em um arquivo com a extensão .sql, que é carregado no SGBD. Em seguida, é lido e tem seus comandos executados como um todo.
CREATE TABLE MODELO
( COD_MOD NUMERIC(3) PRIMARY KEY,
NOME VARCHAR(80));
CREATE TABLE PROPRIETARIO
( COD_PROP NUMERIC(8) PRIMARY KEY,
NOME VARCHAR(110) NOT NULL,
CPF VARCHAR(11) UNIQUE);
CREATE TABLE VEICULO
( PLACA CHAR(7) PRIMARY KEY,
COR VARCHAR(20),
MODELO NUMERIC(3) REFERENCES MODELO(COD_MOD),
PROPRIETARIO NUMERIC(8) REFERENCES PROPRIETARIO (COD_PROP),
ANO_FAB CHAR(4),
ANO_MOD CHAR(4),
VALOR_SEGURADO NUMERIC(9,2));
Consultando dados de uma tabela
O comando de Select é uma implementação prática da teoria dos conjuntos, mais especificamente da Álgebra Relacional. Dessa forma, um único Select pode retornar zero ou várias linhas, de acordo com as restrições colocadas no comando.
Cláusula SELECT
Lista as colunas que serão recuperadas;
Se utilizarmos o artifício do * (asterisco) na cláusula SELECT, definiremos que todas as colunas serão recuperadas.
Cláusula FROM
Define a tabela que será recuperada.
Veja a sintaxe abaixo:
SELECT nome-col1, nome_col2, nome coln
FROM nome_da_ tabela;
OU
SELECT *
FROM nome_da_tabela ;
Note que:
· Quando você utiliza *, as colunas retornam na ordem em que foram criadas na tabela;
· Quando você lista as colunas no SELECT, elas retornam na ordem em que as listou;
· As colunas no SELECT devem estar separadas por vírgula;
· Não deve existir vírgula antes da cláusula FROM.
incrementando a consulta
Para efetuar consultas mais complexas e derivar dados a partir das informações contidas nas tabelas, você pode construir expressões na cláusula SELECT.
As expressões podem ser aritméticas ou alfanuméricas, fazendo concatenações por exemplo.
Uma expressão aritmética pode conter os seguintes operadores:
*  multiplicação;
/ divisão;
+  adição;
-  subtração.
Para concatenarmos duas colunas, utilizamos o operador || OU + dependendo do SGBD.
Escrevendo expressões de concatenação
No PostGreSql, o operador de concatenação é o ||. Se desejássemos retornar o PRIM_NOME do empregado com o ULT_NOME, o comando seria:
SELECT PRIM_NOME || ULT_NOME FROM EMPREGADO
Isso decorre do fato de que, depois do PRIM_NOME ou antes do ULT_NOME, não existe espaço em branco armazenado na coluna. 
Como resolver isso?
Basta concatenar as colunas com um espaço em branco entre elas
Criando Alias
Em SQL podemos utilizar um alias (pseudônimo) para dar um nome a uma tabela ou a uma coluna. Isto pode ser uma boa solução se você tiver uma tabela ou coluna com nomes muito longos ou complexos. O nome do alias pode ser qualquer coisa, mas geralmente é curto.
Sintaxe do SQL Alias para Tabelas:
SELECT nome_coluna(s)
FROM nome_tabela
AS nome_alias
Sintaxe do SQL Alias para Colunas:
SELECT nome_coluna AS nome_alias
FROM nome_tabela
Utilizando SELECT sem FROM
A cláusula SELECT, além de permitir a realização da projeção das colunas da tabela, pode ser utilizada para exibir resultados de operações aritméticas, retorno de funções ou textos.
Vejamos um exemplo no PostGreSql:
Gerando restrições às consultas
Se você desejar filtrar as tabelas e retornar apenas as linhas que atendam a uma condição você deve acrescentar a cláusula Where ao comando de Select.
A cláusula Where estabelece uma condição que a linha deverá obedecer para que faça parte do conjunto resposta da consulta. No caso, apenas retornam as linhas cujo teste da condição dê como resposta verdadeiro
Dois cuidados que você deve tomar ao trabalhar com string:
1. A string deve vir entre apóstrofes ‘PONTO QUENTE‘;
2. Se o SGBD for case sensitive, você deve escrever o comando como os dados que estão no banco ou utilizar uma função para padronizar a forma de comparação.
Trabalhando com Datas
Ao trabalhar com datas, devemos colocá-las entre aspas simples, no formato dd/mm/aaaa, onde “dd” é o dia em dois dígitos, “mm” o mês em dois dígitos e “aaaa” é o ano em quatro digitos.
Consultando dados com várias condições
A utilização dos operadores lógicos AND e OR permite montar expressõeslógicas para filtrar as linhas. Como toda expressão lógica, o operador AND somente retorna Verdadeiro (TRUE) se ambas as condições forem verdadeiras, enquanto o operador OR somente retorna FALSO (FALSE) se as duas condições forem falsas.

Continue navegando

Outros materiais