INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA BAHIA
Banco de Dados
Prf. Msc. Igor de Oliveira Costa INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA BAHIARelações e Domínios
• Terminologia
– Em Banco de Dados relacional, uma linha da tabela é chamada de Tupla:
• O cabeçalho da coluna é chamado de atributo:
Relações e Domínios
• A tabela na terminologia é chamada de relação:
Relações e Domínios
• Podemos definir Domínio como o tipo de dados que descrevem os tipos de valores que estão contidos em uma determinada coluna de uma relação (tabela); • Um domínio é um conjunto de valores atômico; – Exemplo: • Telefone: conjunto de números válidos no Brasil com 10 dígitos;
Relações e Domínios
• Características das Relações: – A ordem das tuplas e dos atributos não tem importância; – Todo atributo possui valor atômico; – Cada atributo numa relação tem um nome que é único dentro da relação; – Todas as tuplas devem ser únicas (conjunto).
Relações e Domínios
DDL
• Data Definition Language • Linguagem de Definição de Dados • Como Linguagem será utilizado o SQL (Structured Query Language) a linguagem de consulta mais influente; • Embora nos referimos a SQL como uma linguagem de consulta, ela pode fazer muito mais do que simplesmente consultar umDDL
• Ela pode definir a estrutura dos dados, modificar dados no banco de dados e especificar restrições de segurança; • A linguagem SQL foi desenvolvida pela IBM em meados dos anos 70, inicialmente a linguagem se chamava Sequel; • Em 1986 a American National Standards Institute(ANSI) e a International Organization for
Standardization (ISO) definiram um padrão para a
• A Linguagem SQL possui várias partes: – Linguagem de Definição de Dados (DDL); – Linguagem de Modelagem de Dados (DML); – Integridade; – Definição de view; – Controle de transação; – SQL embutida e dinâmica;
DDL
DDL
• O principal comando para definição de dados é o CREATE; – Esquemas; – Tabelas (relações); – Domínio.DDL
• CREATE SCHEMA
• O comando create schema e create database são similares;
• Para criar um Schema é necessário ter permissão para tal;
DDL
• Exemplo: • Para utilizar a base criada se utiliza o comando: – USE database, onde database é o nome do schema;DDL
Índices (INDEX)
• Um banco de dados é uma estrutura criada para suportar uma grande quantidade de dados, estes dados constantemente precisam ser recuperados e para isso consulta são realizadas; • As consultas em um Banco utiliza um esquema conhecido por TABLE SCAN, ou seja, percorre toda a tabela para encontrar o registro referente ao filtro;Índices (INDEX)
• Imagine um banco com um milhão de registros, e o filtro irá buscar o último registro, essa operação irá demorar muito e possivelmente irá retornar um erro de Timeout; • Existem várias formas de contornar essa situação, e uma delas é utilização de índices;Índices (INDEX)
• Um índice é uma estrutura interna utilizada pelo SGBD para acessar os dados dentro de uma tabela, de forma direta; • Na prática, sempre se deve criar um índice para o atributo que é a chave primária e para os demais atributos que, em determinada aplicação, serão mais acessados;• Quando um índice é criado o SGBD ordena a relação por essa coluna, e a partir dai a busca nessa relação é feita de forma binária; • Em uma busca binária a relação sofre divisões sucessivas até que o filtro seja satisfeito, na prática a tabela é dividida no meio e é verificado se o índice procurado é menor ou maior que o meio, se for menor a primeira parte é acessada se não a segunda parte, depois outras divisões são
Índices (INDEX)
• Criando um índice
DDL
• DROP • O comando DROP TABLE serve para remover permanentemente uma tabela ou uma visão. • DROP TABLE <nome da tabela>; • DROP [TEMPORARY] TABLE <nome da tabela>; • DROP TABLE <nome da tabela> [IF EXISTIS]DDL
• ALTER • O comando ALTER TABLE altera a estrutura de uma tabela do banco de dados, sua sintaxe irá depender basicamente da alteração a ser realizada: • Renomeando uma tabela – ALTER TABLE <nome da tabela> RENAME <novoDDL
• Para modificar a definição de uma coluna da relação: – ALTER TABLE <nomedatabela> MODIFY <nomedocampo> <definicao>; • Para modificar o nome e a definição – ALTER TABLE <nomedatabela> CHANGE <nomedocampo> <novonome>;DDL
• Adicionar uma nova coluna na tabela – ALTER TABLE <nomedatabela> ADD <nomecoluna><definição>; • Remover uma coluna específica – ALTER TABLE <nomedatabela> DROPDDL
• Adicionar uma chave primária a tabela; – ALTER TABLE <nometabela> ADD PRIMARY KEY (<coluna>); • Deletar a chave primária de uma determinada tabela – ALTER TABLE <nometabela> DROP PRIMARY KEY ;DDL
• Criar um índice para uma tabela – ALTER TABLE <nometabela> ADD index(<coluna>); • Deletando um índice de uma tabela – ALTER TABLE <nometabela> DROP index(<coluna>);DML
• Insert
• INSERT INTO table_name (column1, column2, column3,...)
DML
• Update • Este comando é usado para mudar valores de tuplas que já foram cadastradas anteriormente e que obedecem a determinados critérios especificados em condições; – UPDATE <nometabela> SET coluna=valor WHERE <condições>; – UPDATE Aluno SET matricula=‘1234’ WHERE id = ‘10’;DML
• DELETE • O comando DELETE é usado para remover tuplas de uma relação, este comando pode remover mais uma tupla ao mesmo tempo, caso várias linhas obedeçam às condições; – DELETE FROM <nometabela> WHERE <condição>;DML
• Consultas em SQL – O comando SELECT é usado para consultar o BD e retornar dados recuperados que satisfazem a determinada condição expressa no comando. – SELECT <lista de atributos> FROM <lista de tabelas> WHERE <condições> – A lista de atributos corresponde as colunas das tabelas que se deseja mostrar, caso o objetivo seja mostrar todas as colunas utiliza-se o * no lugar• A lista de tabelas que deverá ser especificada depois do FROM corresponde a todas as tabelas envolvidas na consulta; • A cláusula WHERE especifica que valores ou linhas serão recuperadas ou exibidas, de acordo com as condições; • As condições da cláusula WHERE podem usar os seguintes operadores: =, >, <, >=, <=, <>(diferente) e LIKE (para procurar partes de textos nos atributos), essas expressões utilizam os seguintes operadores AND, OR e NOT.
DML
DML
• Exemplos de utilizam do comando LIKE
• Ordenação
• A ordenação pode ser definida com o comando ORDER BY:
DML
• Junção de tabelas com JOIN • A cláusula JOIN permite a junção de tabelas similar ao método ensinado anteriormente, no entanto, com essa cláusula existe algumas formas de como retornar os resultados, basicamente os tipos principais de Joins são: – INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOIN;DML
• INNER JOIN
– O Inner Join é o método de junção mais conhecido e, retorna os registros que são comuns às duas
tabelas;
– select * from Professor p INNER JOIN Disciplina d ON (p.Professor_id = d.professor_id)
DML
• LEFT JOIN – O Left Join, tem como resultado todos os registros que estão na tabela A (mesmo que não estejam na tabela B) e os registros da tabela B que são comuns à tabela A.– select * from Professor p LEFT JOIN Disciplina d ON (p.Professor_id = d.professor_id)
DML
• RIGHT JOIN – Usando o Right Join, teremos como resultado todos os registros que estão na tabela B (mesmo que não estejam na tabela A) e os registros da tabela A que são comuns à tabela B.– select * from Professor p RIGHT JOIN Disciplina d ON (p.Professor_id = d.professor_id)
DML
• Relacionando várias tabelas com JOIN
• select * from Aluno a INNER JOIN
AlunoDisciplina ad ON a.aluno_id = ad.aluno_id
• INNER JOIN Disciplina d ON ad.disciplina_id =
d.disciplina_id
• INNER JOIN Professor p ON d.professor_id =