BANCO DE DADOS II SQL Básico COTEMIG Gerson Borges [email protected] 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’); Obrigado • Agora é hora de praticar!