Introdução à Banco de Dados Nathalia Sautchuk Patrício Histórico Início da computação: dados guardados em arquivos de texto Problemas nesse modelo: redundância não-controlada de dados aplicações devem se preocupar com a forma de armazenamento dos dados Início dos anos 60: primeiros bancos de dados O que é um banco de dados? Bancos de dados são conjuntos de dados integrados que tem por objetivo atender a uma comunidade de usuários Redundância controlada Dados armazenados de forma mais consistente Gerenciamento facilitado O que é um SGBD? SGBD: Sistema Gerenciador de Banco de Dados SGBD é um software que incorpora as funções de definição, recuperação e alteração de dados em um banco de dados Exemplos de SGBD MySQL Oracle MS SQL Server PostgreSQL SQLite Banco de Dados X SGBD Banco de Dados: um modelo, uma abstração SGBD: classe de softwares Modelo de Dados Modelo de Dados: descrição formal da estrututura de um banco de dados Exemplos: Modelos Navegacionais Modelo Orientado a Objetos Modelo Relacional (mais usado) Modelo de Entidades e Relacionamentos (conceitual) Projeto de Banco de Dados Modelagem Conceitual Modelo Lógico Modelo Físico Projeto de Banco de Dados Relacional Modelo Conceitual Modelo Lógico Modelo Entidade-Relacionamento Modelo Relacional Modelo Físico Tabelas Modelo Conceitual Modelo Entidade-Relacionamento Entidade: conjunto de objetos da realidade modelada sobre os quais deseja-se manter informações no banco de dados Relacionamento: conjunto de associações entre ocorrências de entidades Modelo Conceitual Modelo Lógico Modelo Relacional Primary Key: conjunto mínimo de um ou mais atributos e relacionamentos cujos valores servem para distinguir uma ocorrência da entidade das demais ocorrência da entidade das demais ocorrências da mesma entidade Foreign Key: conjunto de um ou mais atributos e relacionamentos cujos valores aprecem necessariamente em outra entidade como Primary Key Modelo Lógico Estudante (EstudanteID, UsuarioID, Nome, Sobrenome, DataNascimento, Sexo, Serie, Endereco, ...) UsuarioID referencia Usuario Usuario (UsuarioID, Email, Senha, Nome, Sobrenome, DataNascimento, Sexo, Tipo, Sabendo) Modelo Físico SQL SQL: Structured Query Language (Linguagem de Consulta Estruturada) SQL é uma linguagem de pesquisa declarativa para banco de dados relacional É padronizado pela ANSI e ISO Possui variações e extensões produzidos pelos diferentes fabricantes de SGBDs Palavras-Chave em SQL DML - Linguagem de Manipulação de Dados DDL - Linguagem de Definição de Dados DCL - Linguagem de Controle de Dados DTL - Linguagem de Transação de Dados DQL - Linguagem de Consulta de Dados Cláusulas Operadores Lógicos Operadores Relacionais Funções de Agregação DML - Linguagem de Manipulação de Dados SELECT: usado para selecionar um conjunto de registros de uma tabela existente SELECT Nome,Sobrenome FROM Estudante WHERE Sexo=1; INSERT: usado para adicionar um novo registro a uma tabela existente INSERT INTO `Eventos` VALUES (6, 'XII Ciência Jovem de Pernambuco', '2008-10-29 00:00:00', '2008-10-31 00:00:00', 'Olinda - PE', 'Sec. de Ciência, Tec. e Meio Ambiente do Governo do Estado', 'http://www.espacociencia.pe.gov.br', 4, 1); DML - Linguagem de Manipulação de Dados UPDATE: usado para alterar um registro existente na tabela UPDATE Estudante SET Nome='Nathalia' WHERE UsuarioID=15 DELETE: usado para apagar um registro existente na tabela DELETE FROM Estudante WHERE UsuarioID=15; DDL - Linguagem de Definição de Dados CREATE: cria um objeto (uma Tabela, por exemplo) dentro da base de dados CREATE TABLE User (`UserID` int(11) NOT NULL default '0', `Name` varchar(255) NOT NULL default '', `LastName` varchar(255) NOT NULL default '', `Sex` char(1) default NULL, `CPF` varchar(12) NOT NULL default '', PRIMARY KEY (`UserID`)); DROP: apaga um objeto do banco de dados DROP TABLE User; ALTER: alguns SGBDs usam esse comando, que permite ao usuário alterar um objeto, como,adicionando uma coluna a uma tabela existente. DCL - Linguagem de Controle de Dados GRANT: autoriza ao usuário executar ou setar operações REVOKE: remove ou restringe a capacidade de um usuário de executar operações ALTER PASSWORD CREATE SYNONYM DTL - Linguagem de Transação de Dados BEGIN WORK (ou START TRANSACTION): usado para marcar o começo de uma transação de banco de dados COMMIT: envia todos os dados das mudanças permanentemente. ROLLBACK: faz com que as mudanças nos dados existentes desde que o último COMMIT ou ROLLBACK sejam descartadas DQL - Linguagem de Consulta de Dados Embora tenha apenas um comando, a DQL é a parte da SQL mais utilizada O comando SELECT é composto de várias cláusulas e opções, possibilitando elaborar consultas das mais simples às mais elaboradas Possui: Cláusulas Operadores Lógicos Operadores Relacionais Funções de Agregação Cláusulas Condições para definir os dados que se deseja selecionar ou modificar em uma consulta FROM: especifica a tabela que se vai selecionar os registros WHERE: especifica as condições que devem reunir os registros que serão selecionados GROUP BY: separa os registros selecionados em grupos específicos HAVING: expressa a condição que deve satisfazer cada grupo ORDER BY: ordena os registros selecionados com uma ordem especifica DISTINCT: seleciona dados sem repetição Operadores Lógicos AND (E lógico): avalia as condições e devolve um valor verdadeiro caso ambos sejam corretos OR (OU lógico): avalia as condições e devolve um valor verdadeiro se algum for correto NOT (Negação lógica): aevolve o valor contrário da expressão Operadores Relacionais < Menor que > Maior que <> Diferente de <= Menor ou Igual que >= Maior ou Igual que = Igual a BETWEEN: especifica um intervalo de valores LIKE: utilizado na comparação de um modelo e para especificar registros de um banco de dados." Ex: Like" + extensão % vai significar buscar todos resultados com o mesmo início da extensão Funções de Agregação São usadas dentro de uma cláusula SELECT para devolver um único valor que se aplica a um grupo de registros AVG: calcula a media dos valores de um campo determinado COUNT: devolve o número de registros da seleção SUM: devolve a soma de todos os valores de um campo determinado MAX: devolve o valor mais alto de um campo especificado MIN: devolve o valor mais baixo de um campo especificado Junção de Tabelas NATURAL JOIN SELECT Nome,Sobrenome,InstituicaoNome FROM Estudante NATURAL JOIN Instituicao SELECT Nome,Sobrenome,InstituicaoNome FROM Estudante INNER JOIN Instituicao ON Instituicao.InstituicaoCNPJ = Estudante.InstituicaoCNPJ INNER JOIN SELECT Nome,Sobrenome,InstituicaoNome FROM Estudante INNER JOIN Instituicao ON Instituicao.InstituicaoCNPJ = Estudante.EscolaCNPJ Junção de Tabelas OUTER JOIN LEFT JOIN RIGHT JOIN Bibliografia HEUSER, Carlos Alberto. Projeto de Banco de Dados. 5ª Edição. Editora Sagra Luzzatto. http://pt.wikipedia.org/wiki/Banco_de_dados Tutorial de SQL: http://www.criarweb.com/sql/