Professional Documents
Culture Documents
Um grande resumo...
Um pouco de histria
Caractersticas bsicas
Caractersticas bsicas
Exemplo de tabela
Nome Bonifcio Cubas Ana Cintra RA 125159 125148 Nota 9,5 8,0
Modelos lgicos
So modelos de dados uma representao terica de como ser a implementao do banco de dados Deve ser independente de tecnologia
Image: FreeDigitalPhotos.net
Modelos lgicos
Informaes concisas e necessrias para
o negcio
Image: FreeDigitalPhotos.net
Modelos lgicos
r do a c tifi ria) n ide rim o t P u rib have t Matrcula A (C
Nome
Aluno
Endereo
Data Nascimento
Image: FreeDigitalPhotos.net
Modelos lgicos
Aluno: #Matrcula Nome Endereo Data Nascimento
de a r i ne tar a a m esen r t Ou repr
Image: FreeDigitalPhotos.net
Relacionamentos
Diagramas de entidas
Utilizaremos a metodologia DER: Diagrama Entidade-Relacionamento DER representa a associao de cada entidade atravs de relacionamentos
Entidade 1
Relacionamento
Entidade 2
Relacionamentos
DER
Entidade 1
Um e somente um Um ou muitos
Entidade 2
Um ou muitos
Um ou nenhum
Entidade 3
Exemplos
Exemplo: Cliente
Uma empresa controla os seguintes dados de seus clientes: Cdigo Nome Endereo Telefone Cliente: #Cdigo Nome Endereo Telefone
Exemplos
Exemplo: Cliente
A empresa vende diversos produtos a seus clientes: Cada cliente pode comprar quantos produtos precisar Cada pedido de venda pode ser composto por vrios produtos
Exemplos
DER: Exemplo Cliente
Cliente
1
Faz
Pedido
1
Compe
Detalhe Pedido
Forma
Produto
Modelos Fsicos
So modelos de dados uma representao terica de como ser a implementao do banco de dados Deve levar em conta limitaes do SGBD as
Image: FreeDigitalPhotos.net
Modelos Fsicos
Modelo lgico lhe permite a viso de
negcio. O conceito a ser trabalho.
Modelos Fsicos
Modelo lgico : Entidades e atributos. O modelo fsico : Tabelas e campo. Modelo lgico : Atributo identificador. O modelo fsico : Chave primria. Modelo fsico:
Chave estrangeira Cardinalidade Tipo de campo
Modelos Fsicos
Tipos de campos
Char(N) Varchar(N) Numeric(N,P) Integer Date Time TimeStamp
Modelos Fsicos
O SQL
A linguagem SQL (Structured Query Language Linguagem de Consulta Estruturada) uma linguagem declarativa utilizada por Sistemas Gerenciadores de Bancos de Dados Relacionais como: Oracle, SQL Server, MySQL, PostgreSQL, Firebird, e outros. Devido sua ampla utilizao por diversos SGBDs, surgiram vrios dialetos para os comandos, que geraram a necessidade de criao de um padro para a linguagem. Essa tarefa foi realizada pela American National Standards Institute (ANSI) em 1986 e ISO em 1987. Em 1992, foi realizao uma reviso da linguagem que recebeu o nome de SQL-92.
O SQL
Em 1999 e 2003, ocorreram novas revises. Na reviso de 1999, foram adicionados padres para expresses regulares, consultas recursivas, triggers e algumas caractersticas de orientao a objeto. Na reviso de 2003, foram introduzidas caractersticas relacionadas a XML, sequncias padronizadas e colunas com valores de autonumerao. Uma dificuldade encontrada na utilizao da linguagem SQL por parte dos desenvolvedores ou administradores de bancos de dados a diferena entre os comandos nos diversos SGBDs, mesmo aps a definio dos padres. Porm, as diferenas no so grandes.
Alguns autores ainda definem uma subdiviso da linguagem SQL chamada DTL (Data Transaction Languagem Linguagem de Transao de Dados). Uma transao pode ser compreendida como um conjunto de comandos que executado de forma atmica, ou seja, ou todos os comandos so executados com sucesso ou nenhum dos resultados obtidos poreles ser mantido no banco de dados.
Sintaxe: CREATE TABLE contas( numero integer not null, saldo integer default 0, agencia_numero integer not null, primary key(numero,agencia_numero), foreign key(agencia_numero) references agencias(numero) ); Ou CREATE TABLE contas( numero integer not null, saldo integer default 0, agencia_numero integer not null, primary key(numero,agencia_numero), constraint fk_contaagencia foreign key(agencia_numero) references agencias(numero) );
Apagar uma PRIMARY KEY Sintaxe: ALTER TABLE <nome_da_tabela> DROP PRIMARY KEY Ou ALTER TABLE <nome_da_tabela> DROP CONSTRAINT <nome_da_constraint_da_primary_key>
Exemplo: ALTER TABLE clientes DROP PRIMARY KEY; Ou ALTER TABLE clientes DROP CONSTRAINT pk_cpf;
INSERT
Sintaxe: INSERT INTO <nome_da_tabela> (<campo1,campo2, campo3,...,campoN>) VALUES (<valor1, valor2, valor3, ..., valorN>);
Exemplo:
INSERT INTO livro (EXEMPLAR, ISBN, TITULO, AUTORES) VALUES ('1', 98012345678, Meu Livro, 'Jos da Silva');
Observaes: 1) Valores do tipo TEXTO devem ser envolvidos por aspas simples ( ); 2) Valores do tipo numricos (INTEGER, NUMERIC, DECIMAL, etc..) no so envolvidos por aspas simples e devem utilizar o ponto decimal para separao das casas decimais no lugar na vrgula. Ex.: 3.25
Outra sintaxe do comando INSERT permite ocultar os campos e escrever somente os valores que sero inseridos. Exemplo:
INSERT INTO livro VALUES ('1', 98012345678, Meu Livro, 'Jos da Silva');
Observaes: Para a execuo do comando acima necessrio que os tipos de dados dos campos da tabela cidades_backup estejam na mesma ordem dos tipos de dados dos campos da tabela cidades.
UPDATE
Sintaxe: UPDATE <nome_da_tabela> SET <campo1 = valor1>, <campo2 = valor2>, <campo3 = valor3>, ..., <campoN = valorN> [ WHERE condies]
O comando UPDATE acima altera o campo titulo de todas os livros para O Alienista.
Para restringir a alterao dos registros a um subconjunto deles, utilizada a clusula WHERE, que permite processar uma ou mais condies. Exemplo:
UPDATE livro SET titulo = O Alienista, Autor = Machado de Assis WHERE isbn = 98012345678;
DELETE
Sintaxe: DELETE FROM <nome_da_tabela> [WHERE condies]; Exemplo: DELETE FROM livro;
O comando acima exclui todos os registros da tabela livro. Para excluir apenas um subconjunto dos registros, necessrio utilizar a clusula WHERE. Exemplo:
SELECT
Sintaxe:
SELECT <campo1>, <campo2>, ..., <campoN> FROM <tabela1>, <tabela2>, ..., <tabelaN> [ JOIN <tabela> ON condies] [ WHERE condies ] [ORDER BY <campos>];
Exemplos:
SELECT
Apelidando campos
Clusula WHERE
Igual: =
UPDATE livro SET autor = Machado de Assis WHERE isbn = 98012345678;
Diferente: <>
UPDATE INSCRICAO SET endereco = Rua dos Bobos 0 WHERE idINSCRICAO <> 1;
Maior: >
SELECT * FROM INSCRICAO WHERE DATA_INSCRICAO > '2006/07/26';
Menor: <
SELECT * FROM INSCRICAO WHERE DATA_INSCRICAO < '2006/07/26';
Clusula WHERE
LIKE: Comparao de partes do texto SELECT * FROM INSCRICAO WHERE nome LIKE a%;
Seleciona todos o inscritos cujos nomes iniciam pela letra a.
Clusula WHERE
Soma: +
UPDATE funcionarios SET salario = salario + 10;
Acrescenta R$ 10,00 ao salrio dos funcionrios.
Subtrao: UPDATE funcionarios SET salario = salario 5 WHERE salario > 1000;
Subtrai R$ 5,00 do salrio dos funcionrios que ganham mais de R$ 1000,00.
Multiplicao: *
UPDATE funcionarios SET salario = salario*1.1;
Aumenta o salrio dos funcionrios em 10%.
Diviso: /
UPDATE funcionarios SET salario = salario + salario*(10/100);
Aumenta o salrio dos funcionrios em 10%.
IS: Operador especial para comparao de igualdade. Este operador usado para comparao com o valor NULL.
SELECT nome FROM funcionarios WHERE celular IS NULL.
Clusula WHERE
AND SELECT * FROM INSCRICAO WHERE nome LIKE a% AND DATA_INSCRICAO <= 1980/01/01;
Seleciona todos os inscritos cujos nomes iniciam pela letra a e cujas datas de inscrio so anteriores a 01/01/1980.
Juno de tabelas
Usando a clusula WHERE SELECT * FROM REQUISICAO , LIVRO WHERE REQUISICAO.LIVRO_idLIVRO = LIVRO.idLIVRO;
Para a juno de tabelas, sempre devem ser escritas as condies entre os campos que esto relacionados nas tabelas. Geralmente, essas condies envolvem os campos que so chaves estrangeiras de uma tabela e os que so chaves primrias da outra, porm nada impede de serem feitas condies entre campos que no so chaves.
Usando a clusula JOIN SELECT * FROM LIVRO INNER JOIN LIVRO_idLIVRO = LIVRO.idLIVRO;
requisicao
ON
REQUISICAO.
A clusula INNER JOIN define que sero selecionados somente os registros de uma tabela que possuem relao com os registros da outra tabela.
Juno de tabelas
Usando a clusula LEFT JOIN
SELECT requisicao.data_requisicao, inscricao.nome FROM inscricao LEFT JOIN requisicao ON requisicao.INSCRICAO_idINSCRICAO idINSCRICAO; = inscricao.
Para interpretar o LEFT JOIN, faz-se a pergunta: qual tabela est esquerda do JOIN? No comando acima, a tabela que est esquerda da clusula JOIN a tabela inscricao. Portanto, sero selecionados todos os registros da tabela inscricao estando ou no relacionados com a tabela requisicao pelo camp o de chave primria.
Para interpretar o RIGHT JOIN, faz-se a pergunta: qual tabela est direita do JOIN? A tabela requisicao. Portanto, sero selecionados todos os registros da tabela requisicao que esto ou no relacionados com os registros da tabela inscricao.
Clusula ORDER BY
Sintaxe:
SELECT ... ORDER BY <campo1>, <campo2>, <campoN> ... [desc|asc]
Exemplos:
Seleciona os livros cujos ttulos iniciam pela letra a e ordena a lista primeiramente pelo autor e, em seguida, pelos ttulos dos livros.
Concluindo
importante possuir uma documentao mnima sobre o banco de dados para poder se localizar e fazer a manuteno do mesmo. Conhecer pelo menos um tipo de modelo de banco de dados facilita a interatividade entre ferramentas e a comunicao com os profissionais envolvidos com o sistema. Decorar comandos no o importante. O importante saber o funcionamento!