56
1 Pós-Graduação em Análise e Projetos de Sistemas Disciplina: Banco de Dados Professor: Clayton Escouper das Chagas 6ª aula

Aula 6 BD POS UGF

Embed Size (px)

DESCRIPTION

aula de banco de dados

Citation preview

  • Ps-Graduao em Anlise e Projetos de Sistemas

    Disciplina: Banco de DadosProfessor: Clayton Escouper das Chagas

    6 aula

  • 6 aula:

    Tpicos de Manipulao e Administrao de Banco: SQL (Structured Query Language) - DDL e DML:

    Introduo SQL como Linguagem de Definio de Dados (DDL) SQL como Linguagem de Manipulao de Dados (DML)

  • Introduo

    lgebra: usurio preocupa-se com a ordem que as operaes devem ser executadas, preocupao com a performance e otimizao

    SQL: usurio apenas especifica qual o resultado desejado atravs de uma consulta declarativa, deixando a otimizao com o SGBD

  • Histrico: - SEQUEL - Structured English Query Language

    - Projetada e implementada no Centro de Pesquisa da IBM como interface de um banco de dados relacional experimental chamado System R

  • - ANSI (American National Standards Institute) e a ISO (International Standards Organization) juntaram esforos de pesquisa, originando a verso SQL86, ou SQL 1

    - SQL 2, aprovada em 1992 (SQL92)

    - SQL 3, aprovada em 1999

  • SQL mais do que uma linguagem de consulta: - Definio de dados: permite a definio da estrutura do banco de dados - Recuperao de dados: possibilita a recuperao dos dados do banco - Manipulao de dados: permite alteraes e excluses de dados j existentes, bem como a adio de novos dados - Controle de acesso: fornece meios para determinar o controle de acesso de usurios aos dados do banco - Compartilhamento de dados: coordena o acesso concorrente de usurios, assegurando que um no interfira no trabalho do outro - Integridade de dados: permite definir restries de integridade aos dados do banco

  • SQL como Linguagem de Definio de Dados (DDL - Data Definition Language)

    Declaraes SQL:- Definio de dados- Consulta a dados- Update de dados

    Pode-se embutir declaraes SQL em vrios tipos de linguagens como C, C++, Java, etc

  • SQL como linguagem de definio da dados - DDL

    Definio de dados - CREATE

    Update de dados - ALTER

    Remoo de dados - DROP

  • Instrues para definio do esquema da base de dados:

    CREATE TABLE: cria uma nova tabela na base de dados, especificando nome, atributos e restries

    ALTER TABLE: altera definies de uma tabela

    DROP TABLE: remove uma tabela, quando suas definies no so mais necessrias

  • CREATE TABLE - Colunas so especificadas primeiro, sob a forma: - Depois chaves, integridade referencial e restries de integridade

    CREATE TABLE ( NOT NULL, NOT NULL,... PRIMARY KEY , FOREIGN KEY REFERENCES ());

  • Exemplo:

    CREATE TABLE Fornecedor( FcodINTEGERNOT NULL, FnomeVARCHAR(20)NOT NULL, StatusINTEGER, CidadeVARCHAR(20));

    Tabela Fornecedor:

  • Tipos para definio de colunas

  • Especificao de chaves: - Primria:PRIMARY KEY(),

    - Estrangeira:FOREIGN KEY() REFERENCES ,

    - Alternativa:UNIQUE KEY(CPF),(SQL2)

  • Exemplo com chave primria:

    CREATE TABLE Departamento( DcodINTEGERNOT NULL, DnomeVARCHAR(20)NOT NULL, CidadeVARCHAR(20), PRIMARY KEY(Dcod));

    Tabela Departamento

  • Exemplo com chave primria composta:

    CREATE TABLE Empregado( EcodINTEGERNOT NULL, EnomeVARCHAR(40)NOT NULL, CPFVARCHAR(15)NOT NULL, SalarioDECIMAL(7,2), Cod_DeptINTEGERNOT NULL, PRIMARY KEY(Ecod, Enome));

    Tabela Empregado

  • Exemplo com chave estrangeira (tabela Empregados):

    CREATE TABLE Empregado( . . . CONSTRAINT TrabalhaEm FOREIGN KEY(Cod_Dept) REFERENCES Departamento(Dcod), . . . );

    Tabela Empregado

    OpcionalDefinido no SQL2

  • Assim, a tabela Empregado fica:

    CREATE TABLE Empregado( EcodINTEGERNOT NULL, EnomeVARCHAR(40)NOT NULL, CPFVARCHAR(15)NOT NULL, SalarioDECIMAL(7,2), Cod_DeptINTEGERNOT NULL, PRIMARY KEY(Ecod, Enome), CONSTRAINT TrabalhaEm FOREIGN KEY(Cod_Dept) REFERENCES Departamento(Dcod),);

  • Restries - Constraint

    O SQL2 trata as restries de forma uniforme: chave primria, chave estrangeira, chave alternativa).

    CREATE TABLE Produto( PcodINTEGERNOT NULL, PnomeVARCHAR(40)NOT NULL, ModeloINTEGERNOT NULL, Cod_DeptINTEGERNOT NULL, CONSTRAINTChPrimariaProd PRIMARY KEY(Pcod), CONSTRAINTPertenceAo FOREIGN KEY(Cod_Dept) REFERENCES Departamento(Dcod), );

    Nomes para as restries

  • Restries e Valores Default:

    Restries:- NOT NULL: restries podem ser aplicadas a colunas cujos valores no podem ser nulos

    Valores Default:- Adiciona-se a clusula DEFAULT logo aps a restrio:

    CREATE TABLE Empregado( . . .EsexoCHAR(1)NOT NULL DEFAULT F . . . );

    RestrioDefinio do valor Default

  • Integridade Referencial

    Cuidados: - Quando colunas so excludas ou alteradas - Quando o valor do atributo da chave estrangeira modificado na tabela referenciada

    Aes disparadas quando ocorrem violaes:

    - SET NULL- CASCADE

    ON DELETEON UPDATE

  • Exemplo na tabela Empregado

    CREATE TABLE Empregado( . . . FOREIGN KEY(Cod_Dept) REFERENCES Departamento(Dcod) ON DELETE SET NULL ON UPDATE CASCADE, . . .);

    Na remoo da linha que contm o valor da chave estrangeira, setar nulo coluna (se a coluna admitir NULL)

    Na alterao do valor da chave estrangeira, alterar em cascata as chaves que referenciam este valor

  • Remoo de Tabelas:

    DROP TABLE: elimina completamente a tabela, vazia ou no

    DROP TABLE

    Ex: DROP TABLE Empregado;

    Ateno: No h como recuperar uma tabela removida

  • SQL2 inclui clusulas:

    CASCADE: se existirem outros objetos que dependam da tabela excluda sero excludos tambm

    RESTRICT: exclui a tabela somente se no existirem objetos do banco de dados que dependam da tabela

    DROP TABLE Empregado CASCADE;

  • Alterao de Tabela:

    ALTER TABLE

    EXEMPLOS:

    ALTER TABLE EmpregadoADD Telefone VARCHAR(30),ADD Sexo CHAR(1) SET DEFAULT F;

    ALTER TABLE DepartamentoALTER Cidade VARCHAR(50);

  • ALTER TABLE EmpregadoDROP PRIMARY KEY;

    ALTER TABLE EmpregadoDROP FOREIGN KEY TrabalhaEm;

    Obs: A excluso de uma chave estrangeira s poder ser feita se ela recebeu um nome quando foi definida atravs de da diretiva CONSTRAINT

  • ALTER TABLE EmpregadoADD FOREIGN KEY(CodProf)CONSTRAINT TemProfissoesREFERENCES Profissoes;

    ALTER TABLE EmpregadoALTER Sexo DROP DEFAULT;

    ALTER TABLE EmpregadoALTER Sexo SET DEFAULT M;

  • SQL como Linguagem de Modelagem de Dados (DML - Data Modelage Language)

    Linguagem de Consulta

    Linguagem de Atualizao

  • Sintaxe bsica de uma instruo de consulta:

    SELECT FROM WHERE

    O resultado de uma consulta SQL uma relao ou uma tabela (resultset)

  • Esquema dos exemplos:

    Fornecedor (Fcod, Fnome, Status, Cidcod, fone)Cidade (Ccod, Cnome, uf)Peca (Pcod, Pnome, Cor, Peso, Ccod)Projeto (Prcod, Prnome, Ccod)Fornecimento(Fcod, Pcod, Prcod, Quantidade)

  • Instrues bsicas da linguagem de consulta:

    Recuperar cores utilizadas para peas

    SELECTCorFROMPeca

  • Tabela no bancoResultado da consulta

    Muita redundncia

  • Soluo para o problema: clusula DISTINCT

    SELECT DISTINCT CorFROM Peca

    A clusula DISTINCT executa a operao da lgebra relacional PROJEO, onde no h replicaes dos dados: Cor (Peca)

  • Uso da expresso WHERE:

    Operadores Lgicos: =, , =

    BETWEEN valor AND valor

    LIKE %banco de%

    LIKE 19_ _

    - = um caracter

    % = seqncia de caracteres

  • Exemplo:

    Recuperar nomes de cidades fluminenses

    SELECT CnomeFROM CidadeWHERE uf = RJ;

    Tabela com seu contedoResultado

  • SQL - Junes:

    Quando a consulta SQL envolver duas tabelas

    No SQL padro no h operao de juno natural, o usurio especifica os atributos da juno

    A clusula WHERE especifica os atributos usados para a juno das duas tabelas

  • SQL - Exemplos de Junes

    Selecionar os nomes e status de fornecedores do Rio de Janeiro

    SELECT Fnome, StatusFROM Fornecedor, CidadeWHERE Cnome=Porto Alegre AND Ccod=Cidcod;

    Quando h mais de uma tabela envolvida, na clusula WHERE, deve aparecer uma condio de equivalncia entre as chaves destas tabelas, isto indica os atributos de juno das tabelas

  • Exemplo:

    Tabelas do BancoResultado

  • SQL - Exemplos de Junes

    Nomes de fornecedores de Camiseta

    SELECT FnomeFROM Fornecedor, Peca, FornecimentoWHERE Peca.Pcod=Fornecimento.Pcod AND Fornecedor.Fcod=Fornecimento.Fcod AND Pnome=Camiseta;

    Atributos com o mesmo nome devem ser qualificados

  • SQL - Uso de aliases

    Funcionario (Fcod, Fnome, Fsupervisor)

    Selecionar nomes dos funcionrios e nomes de seus clientes

    SELECT F1.Fnome, F2.FnomeFROM Funcionario F1, Funcionario F2,WHERE F1.Fcod=F2.Fsupervisor

  • SQL - Uso do operador *

    SELECT Fcod, Fnome, Status, CidadeFROM Fornecedor

    o mesmo que

    SELECT * FROM Fornecedor

  • Consultas aninhadas: Uso da clusula IN ( ou NOT IN)

    Indica se um valor est no resultado de outra consulta:

    SELECT PrnomeFROM PrijetoWHERE IcodIN (SELECT Icod FROM Instituicao WHERE I.nome=Empresa X);

  • Corresponde a:

    SELECT PrnomeFROM Projeto P, Instituicao IWHERE P.Icod = I.Icod AND I.Inome=Empresa X;

  • Campos Vazios Pode-se testar atributos nulos

    Uso de IS NULL (ou IS NOT NULL)

    Recuperar os nomes de fornecedores cujo status foi informado

    SELECT FnomeFROM FornecedorWHERE Status IS NOT NULL

  • Comparao de Strings

    Uso do operador LIKE (ou NOT LIKE)Selecionar o Status dos fornecedores da famlia Silva

    SELECT StatusFROM FornecedorWHERE Fnome LIKE %Silva%;% = nr indeterminado de caracteres_ = nr fixo de caracteres

  • Operadores Aritmticos

    Adio+ Subtrao- Multiplicao* Diviso/

    Aplicados diretamente a valores numricos ou a atributos com domnio numrico

  • Operadores Aritmticos - Exemplo:

    Mostrar os pesos das peas acrescidas de 10%

    SELECT Pnome, 1.1 * PesoFROM Peca

  • Funes Agregadas:

    Mdia - AVG: Calcula a mdia dos valores no nulos de uma coluna. O domnio da coluna deve ser numrico

    Mximo e Mnimo - MAX e MIN: Encontra o valor mais alto e mais baixo (respectivamente) de uma coluna. O domnio da coluna deve ser numrico

    Total - SUM: Soma os valores no nulos de uma coluna. O domnio da coluna deve ser numrico

  • Funes Agregadas:

    Contagem - COUNT: Conta o nmero de linhas no nulas de uma coluna. COUNT(*) conta o nmero de linhas no nulas de uma tabela.

    Exemplo: Obter o nmero de peas no BDSELECT COUNT(*)FROM Peca

    As funes podem ser aplicadas sobre toda a tabela ou sobre grupos de linhas com a diretiva GROUP BY

  • SQL - Modelo estendido de consultas:

    SELECT FROM [WHERE ][GROUP BY ][HAVING ][ORDER BY ]

  • Agrupamento:

    GROUP BY Divide o resultado de uma consulta em grupos de tuplas cujos valores das colunas especificadas so iguais

    Obter o nmero de peas fornecidas para cada fornecedor

    SELECT Fcod, COUNT(Pcod)FROM FornecimentoGROUP BY Fcod

  • Condio:

    HAVING Especifica uma condio que cada grupo deve satisfazer

    Obter o nmero de peas fornecidas para cada fornecedor, desde que a quantidade fornecida seja maior que 600

    SELECT Fcod, COUNT(Pcod)FROM FornecimentoGROUP BY FcodHAVING Quantidade > 600;

  • Ordenao:

    ORDER BY Ordena as linhas da tabela resultante, por defaullt, ordem crescente, ou uso de DESC

    SELECT Pnome, Peso, CorFROM PecaWHERE Cor = vermelhaORDER BY Pnome DESC

  • SQL - Comandos de Atualizao:

    Instrues de atualizao do contedo

    Inserir linhas na tabela: INSERT

    Alterar dados na tabela: UPDATE

    Excluir linhas da tabela: DELETE

  • Inserir linhas na tabela:

    Comando INSERTINSERT INTO [ ( ) ]VALUES ( )

    Exemplo:INSERT INTO PecaVALUES (P9, meia, azul, 0.3, Queimados);

    INSERT INTO Peca (Pcod, Pnome, Cor, Peso, CidadeVALUES (P10, cala, preta, 1.2, Petrpolis);

  • Alterar linhas da tabela:

    Comando UPDATE

    UPDATE SET WHERE

    UPDATE PecaSET Peso = 0.6WHERE Pnome = Camiseta;

  • Excluir linhas das tabela:

    Comando DELETE

    DELETE FROM [ WHERE ]

    DELETE FROM Peca

    DELETE FROM PecaWHERE CIDADE = So Paulo;