BANCO DE DADOS II SQL Básico COTEMIG Gerson Borges gerson@cotemig.com.br
Definição de Banco de Dados [Elmasri & Navathe, 2000] Um banco de dados é uma coleção de dados relacionados Representando algum aspecto do mundo real Logicamente coerente Projetado para uma aplicação específica
SGBD Um sistema de gerência de banco de dados (SGBD) é um conjunto de programas que permite a criar e manter um banco de dados Um banco de dados juntamente com o SGBD que o gerência constitui um sistema de banco de dados
Característics de um SGBD Auto-descrição dos dados Isolamento entre programas e dados: abstração de dados Suporte a múltiplas visões dos dados Compartilhamento de dados e processamento de transações concorrentes
Vantagens de utilizar um SGBD Controle de redundância dos dados Controle de acesso (segurança) Armazenamento persistente dos dados Existência de múltiplas interfaces para os usuários Representação de relacionamentos complexos entre os dados Manutenção de restrições de integridade Recuperação de falhas
Modelagem Modelo conceitual: Conjunto de conceitos usados para descrever a estrutura de um banco de dados Abstração de dados Estrutura = tipos de dados + relacionamentos + restrições Modelo lógico: Descrição da estrutura de um banco de dados de acordo com um determinado modelo de dados Modelo físico: Conjunto de dados armazenados em um banco de dados em um determinado instante de tempo
Modelo ER Entidades: Objetos do mundo real que são de interesse para alguma aplicação Atributos: Propriedades utilizadas para descrever uma entidade
Modelo de dados relacional O modelo relacional representa um banco de dados como um conjunto de relações Informalmente, uma relação é uma tabela de valores, onde cada linha representa uma coleção de dados relacionados Cada linha de uma tabela representa um fato que tipicamente corresponde a uma entidade ou relacionamento do mundo real
Operações As operações sobre um BD relacional podem ser classificadas em: Operações de recuperação (select) Operações de atualização Operações de atualização: Inserção (insert) Remoção (delete) Modificação (update)
Definição de dados em SQL Comando CREATE SCHEMA CREATE SCHEMA COMPANY AUTHORIZATION JS; Comando CREATE TABLE CREATE TABLE <nome da tabela> (<definições de colunas> <definição da chave primária> <definições de chaves alternativas> <definições de chaves estrangeiras>);
CREATE TABLE Exemplo de um comando CREATE TABLE CREATE TABLE EMPLOYEE (FNAME VARCHAR(15) NOT NULL, MINIT CHAR, LNAME VARCHAR(15) NOT NULL, SSN CHAR(9) NOT NULL, SUPERSSN CHAR(9), DNO INT NOT NULL, PRIMARY KEY (SSN), FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE (SSN) ON DELETE SET NULL, FOREIGN KEY (DNO) REFERENCES DEPARTMENT (DNUMBER));
SELECT Sintaxe: SELECT <lista de atributos> FROM <lista de tabelas> WHERE <condição>; Exemplo: SELECT BDATE, ADDRESS FROM EMPLOYEE WHERE FNAME= John AND MINIT= B AND LNAME= Smith ;
Atributos ambíguos (alias) SELECT DNAME, DLOCATION FROM DEPARTMENT, DEPT_LOCATIONS WHERE DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER; SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM EMPLOYEE AS E, EMPLOYEE AS S WHERE E.SUPERSSN=S.SSN;
Atributos ambíguos (alias) SELECT DNAME, DLOCATION FROM DEPARTMENT, DEPT_LOCATIONS WHERE DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER; SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM EMPLOYEE AS E, EMPLOYEE AS S WHERE E.SUPERSSN=S.SSN;
INSERT INSERT INTO EMPLOYEE VALUES ( Richard, K, Marini, 653258653, 1962-12-30, 98 Oak Forest, Katy, TX,37000, 987654321,4); INSERT INTO EMPLOYEE(FNAME, LNAME, SSN, DNO) VALUES ( Richard, Marini, 653258653,4); INSERT INTO EMPLOYEE(FNAME, LNAME, SSN, DNO) SELECT * FROM INPUT;
DELETE DELETE FROM EMPLOYEE WHERE LNAME= Brown ; DELETE FROM EMPLOYEE WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME= Research ); DELETE FROM EMPLOYEE;
UPDATE UPDATE PROJECT SET PLOCATION= Bellaire, DNUM=5 WHERE PNUMBER=10; UPDATE EMPLOYEE SET SALARY=SALARY*1.1 WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME= Research );
Agora é hora de praticar! Obrigado