SlideShare uma empresa Scribd logo
Banco de Dados
       SQL

Regis Pires Magalhães
regis@ifpi.edu.br
@regispires
SQL
Structured  Query Language - SQL
Especificar consultas de forma interativa.
DDL - Data Definition Language
 ◦ Linguagem de Definição de Dados
DML    - Data Manipulation Language
 ◦ Linguagem de Manipulação de Dados
 ◦ Usada para especificar consultas e
   atualizações
DDL permite especificar...
Esquema   de relações(tabelas);
Domínio   de valores associados a cada
 atributo;
Restrições de integridade;
Conjunto de índices a serem mantidos
 para cada relação;
Estrutura de armazenamento físico de
 cada relação em disco;
Autorização de acesso para cada relação.
SGBD – MySQL – Resumo
Estabelecer    uma conexão pelo console:
 ◦ mysql -u usuario -p
    -u  usuário / -p  password (senha)
Criar   um banco de dados
 ◦ create database nome_bd;
Usar    um banco de dados como padrão
 ◦ use nome_bd;
Apagar   um banco de dados
 ◦ drop database nome_bd;
SGBD – MySQL – Resumo
Obtendo    informações sobre o BD...
 ◦ Mostrar todos os bancos de dados
   show databases;
 ◦ Mostrar todas as tabelas de um BD
   show tables;
 ◦ Mostrar o comando de criação de um BD
   show create database nome_bd;
 ◦ Mostrar o comando de criação de uma tabela
   show create table nome_tabela;
MySQL Monitor – Status - s
s
mysql   Ver 14.14 Distrib 5.1.61, for debian-linux-gnu (x86_64) using readline 6.2
Connection id:                  93
Current database:
Current user:                   root@localhost
SSL:                            Not in use
Current pager:                  stdout
Using outfile:                  ''
Using delimiter:     ;
Server version:                 5.1.61-0ubuntu0.11.10.1 (Ubuntu)
Protocol version:    10
Connection:                     Localhost via UNIX socket
Server characterset:            latin1
Db      characterset:           latin1
Client characterset:            latin1
Conn.   characterset:           latin1
UNIX socket:                    /var/run/mysqld/mysqld.sock
Uptime:                         1 day 3 hours 15 min 21 sec
Threads: 4    Questions: 2251   Slow queries: 0   Opens: 297   Flush tables: 1
Open tables: 58    Queries per second avg: 0.22
Criação de banco de dados
CREATE DATABASE nome_bd
  [[DEFAULT] CHARACTER SET charset_name]
  [[DEFAULT] COLLATE collation_name]
 Character set – conjunto de símbolos e codificações.
 Collation – conjunto de regras para comparação de
  caracteres em um conjunto de caracteres.
 Exemplos:
  ◦ CREATE DATABASE locadora;
  ◦ CREATE DATABASE locadora CHARSET utf8;
  ◦ CREATE DATABASE locadora DEFAULT CHARACTER
    SET utf8 COLLATE utf8_general_ci;
MySQL – charset do console
Alterando    o charset do MySQL Monitor
 para utf8:
 ◦ set charset utf8;
Exclusão de banco de dados
DROP    DATABASE nome_bd;
  ◦ Exemplo:
    DROP DATABASE locadora;
Selecionando o banco de dados
para uso
USE   nome_bd;
 ◦ Exemplo:
    USE locadora;
Criação de tabelas
CREATE TABLE nome-tabela
 (nome-coluna tipo-de-dados [not null],
  [nome-coluna tipo-de-dados [not null] … ],
  [CONSTRAINT nome-restrição]
    UNIQUE nome-coluna
     | PRIMARY KEY(nome-coluna {, nome-coluna})
     | FOREIGN KEY (nome-coluna {, nome-coluna})
             REFERENCES nome-tabela
                      [ON DELETE CASCADE |
                             SET NULL | NO ACTION ],
                      [ON UPDATE CASCADE],
     | CHECK (predicado)
   )
Alguns tipos de dados (SQL 92)
char(n)
  ◦ string de caracteres de tamanho fixo n
varchar(n)
  ◦ string de caracteres de tamanho variável (máximo n)
Integer (int), smallint, tinyint,   bigint
decimal(p,d), numeric (p,d)
  ◦ numérico com p dígitos
  ◦ Dos p dígitos, d dígitos representam casas decimais
    após a vírgula
Real, float - numérico ponto flutuante
date – data
time – hora
 datetime, smalldatetime, timestamp – data e hora
Restrições (Constraints)
NOT   NULL
 ◦ O atributo deve ser obrigatoriamente preenchido.
DEFAULT
 ◦ Atribui um valor padrão ao atributo, caso não seja
   especificado um valor.
UNIQUE
 ◦ Garante que o atributo não terá valores repetidos na
   tabela.
CHECK
 ◦ Verifica se o valor inserido é permitido para o
   atributo.
Restrições (Constraints)
PRIMARY      KEY (PK)
 ◦ Define a chave primária da relação.
FOREIGN       KEY (FK)
 ◦ Implementa o conceito de chave estrangeira e
   garante a integridade referencial.
 ◦ Deve referenciar um campo que possua chave
   primária ou uma restrição UNIQUE.
    ON DELETE CASCADE – Se a linha da tabela que tem a PK
     for apagada, a linha da tabela que tem a FK também será.
    ON UPDATE CASCADE – Se a linha da tabela que tem a PK
     for modificada, a linha da tabela que tem a FK também será.
Criação de tabelas - InnoDB
Para usar recursos como integridade
 referencial e transações no MySQL, é
 preciso criar tabelas do tipo InnoDB:
 ◦ CREATE TABLE pessoas (...)
   ENGINE=InnoDB;
CREATE DATABASE producao default charset utf8;
use producao;
CREATE TABLE diretor(
  id int PRIMARY KEY,
  nome varchar(50)
) ENGINE=INNODB;

CREATE TABLE filme(
  id int PRIMARY KEY,
  titulo varchar(50),
  id_diretor int,
  FOREIGN KEY (id_diretor) REFERENCES diretor(id)
) ENGINE=INNODB;
Remoção de tabelas
DROP    TABLE nome-tabela [CASCADE |
 RESTRICT]
Remove as tuplas da tabela e sua
 definição do catálogo
 ◦ CASCADE remove as restrições do tipo
   foreign key tabelas que referenciam a tabela
   removida
Exercício
 Dado     o modelo relacional a seguir, definir o esquema
    físico do banco de dados usando SQL.
   clientes(id: int, nome: varchar(50), cpf: char(11),
    data_cadastro:date, cidade: varchar(50), uf: char(2))
   categorias(id: int, nome: varchar(20))
   classes (id:int, nome: varchar(20), preco: decimal(10,2))
   distribuidores (id: int, nome: varchar(50))
   filmes (id: int, titulo: varchar(50), id_distribuidor:
    int, ano_lancamento: int(4), id_categoria: int,
    id_classe: int)
    ◦ id_distribuidor referencia distribuidores
    ◦ id_categoria referencia categorias
    ◦ id_classe referencia classes
   locacoes (id: int, id_cliente: int, id_filme: int,
    dt_locacao: date, dt_devolucao_prevista: date,
    dt_devolucao:date, valor: decimal(10,2)
    ◦ id_cliente referencia clientes
    ◦ id_filme referencia filmes
Criando a tabela clientes
CREATE TABLE clientes (
   id int AUTO_INCREMENT,
   cpf char(11),
   nome varchar(50),
   data_cadastro date,
   cidade varchar(40),
   uf char(2) DEFAULT 'PI',
   PRIMARY KEY (id),
   UNIQUE (cpf)
 ) ENGINE=InnoDB;
Inserindo dados na tabela clientes
insert  into clientes values (null, '123',
 'Regis', '2012-04-11', 'Parnaíba', 'PI');
insert into clientes
 (cpf, nome, data_cadastro, cidade) values
 ('124', 'João', '2012-04-11', 'Parnaíba');
CREATE    TABLE clientes (
 id int PRIMARY KEY
 AUTO_INCREMENT,
 cpf char(11) UNIQUE,
 nome varchar(50),
 data_cadastro date,
 cidade varchar(40),
 uf char(2) DEFAULT 'PI'
 ) ENGINE=InnoDB;
Alteração de tabelas
ALTER   TABLE nome-tabela
  [ADD nome-coluna tipo de dados]
  [DROP nome-coluna ]
  [ADD CONSTRAINT nome-restrição]
  [DROP CONSTRAINT nome-restrição]
  [DROP PRIMARY KEY]
  [ repetir ADD ou DROP em qualquer ordem]
Consultas
   SELECT [ALL | DISTINCT] {* | expr [[AS] c_alias]
                                       {, expr [[AS] c_alias] … }}
         FROM nome-tabela [[AS] qualificador]
              {, nome-tabela [[AS] qualificador] …}
      WHERE predicado

 ALL
    ◦ Retorna todas as tuplas, inclusive repetidas (default)
 DISTINCT
  ◦ Retorna apenas tuplas não repetidas
*
  ◦ Retorna todos os atributos da(s) tabela(s)
 expr
    ◦ Representa um atributo ou
    ◦ Expressão matemática envolvendo atributos das tabelas
       salario*1.40
Consultas
FROM
 ◦ Representa o produto cartesiano das tabelas
   referenciadas
WHERE
 ◦ Corresponde ao predicado de seleção da álgebra
   relacional
ORDER      BY coluna-resultado [ASC | DESC]
     {, coluna-resultado [ASC | DESC] …}
Consultas
Predicados      com operações sobre strings
 ◦ Identificação de padrão
   % - Casa com qualquer substring
   _ - Casa com qualquer caracter
 ◦ Operador
   like
 ◦ Exemplos
   nome like ‘inf%’
     Retorna strings que iniciam pelo substring inf
   nome like ‘%si_’
     Retorna strings que contenham ‘si’ como substring e
      terminem com um caracter qualquer após ‘si’
   Listar todos empregados com sobrenome ‘pires’
     Select nome from empregados where nome like ‘%pires%’
Consultas
Funções    Agregadas
 ◦ Funções embutidas (built-in) aplicadas sobre uma
   coleção de valores (colunas) do banco de dados
 ◦ sum
    Retorna o somatório dos valores de uma coleção
 ◦ avg
    Retorna a média dos valores de uma coleção
 ◦ max
    Retorna o maior valor de uma coleção de valores
 ◦ min
    Retorna o menor valor de uma coleção
 ◦ count
    Retorna o número de elementos de uma coleção
 ◦ Sintaxe
   nome-da-função (ALL | DISTINCT nome-coluna) |
   count(*)
    Não podem ser utilizados na cláusula WHERE
Consultas
Agrupando     tuplas no SQL
 ◦ Aplicar funções agregadas a diferentes grupos
   de tuplas
 ◦ Exemplo
   Listar a quantidade de empregados por
    departamento
 ◦ Cláusula
   GROUP BY
 ◦ Todas colunas que aparecem na cláusula select
   têm que aparecer na cláusula group by
   Exceto os argumentos da funções agregadas
Consultas
Selecionando     grupos
 ◦ Cláusula having
   Filtro de grupos
Consulta   com where e having
 ◦ predicado da cláusula where é avaliado
   primeiramente
   Tuplas que satisfazem o predicado são agrupadas
    pelo group by
 ◦ Predicado da cláusula having é avaliado
   Grupos que satisfazem o predicado aparecem no
    resultado
Consultas
Checando    valores nulos
 ◦ Predicado IS NULL
 ◦ Exemplo
    select * from Empregado
    where dt-nasc is null
Consultas
Consultas     com o operador de união
 ◦ UNION
   União de duas relações (consultas)
     Sem repetições
 ◦ UNION ALL
   União de duas relações
     Com repetições
 ◦ Exemplo
   Considere as seguintes relações
     Empregado(matr, nome, ender, dt_nasc, cpf, salário,
      lotação)
     Dependente(nome_dep, data-nasc, matr_resp)
   Liste o nome e data de nascimento de todos os
    funcionários e dependentes existentes na empresa
    select nome,dt_nasc from Empregado UNION
    select nome_dep,data_nasc from Dependente
Consultas
Consultas     com o operador de interseção
 ◦ INTERSECT
   Interseção entre duas relações (consultas)
     Sem repetições
 ◦ INTERSECT ALL
   Interseção entre duas relações
     Com repetições

Consultas     com o operador de diferença
 ◦ EXCEPT
   Diferença entre duas relações (consultas)
     Sem repetições
 ◦ EXCEPT ALL
   Diferença entre duas relações (consultas)
     Com repetições
Consultas
Consulta SQL aninhada (subconsulta)
 ◦ Consulta SQL especificada dentro de uma
   outra consulta SQL
 ◦ Exemplo
    Listar todos os empregados que têm salário maior
     que a média salarial da empresa
     select e.nome
      select e.nome
     from Empregado e
      from Empregado e
     where salário > ((selectavg(salário) from Empregado)
      where salário > select avg(salário) fromEmpregado
                                                Empregado)
                                                Empregado
Consultas
Consulta SQL aninhada          (cont.)
 ◦ Predicado IN
    Verifica a pertinência de elementos em um
     conjunto
    Exemplo
     select nome
     from Empregado
     where matr in (1,5,8,9)
Exercícios
Considere      o seguinte esquema de banco
 de dados
    departamentos(id, nome, endereco, cidade, uf)
    empregados(id, matricula, cpf, nome, dt_nasc, endereco,
      salario, id_dept)
    dependentes(id, nome, dt_nasc, id_empr)
    id_dept em empregados referencia id em departamentos.
    id_empr em dependentes referencia id em empregados.
 ◦ Crie as tabelas Departamento e Empregado
   utilizando a DDL do SQL.
 Alterara tabela empregados para que matricula e cpf
  não possam ser duplicados.
Exercícios
 Criar   consultas SQL para:
  ◦   Listar os funcionários com salário maior que 3000.
  ◦   Listar funcionários com salários maior que 1000 e
      menor que 2000.
  ◦   Listar nome dos funcionários com o nome de seu
      departamento.
  ◦   Listar nome dos funcionários com o nome de seu
      departamento e uma simulação de seu salário com
      um aumento de 15%.
  ◦   Listar empregados ordenados por salário na ordem
      decrescente e por nome na ordem crescente.
Exercícios
   Encontre o número de empregados lotados no departamento de
    Informática.
   Encontre o montante da folha de pagamento (soma dos salários)
    da empresa.
   Encontre o salário médio pago pela empresa.
   Listar a quantidade de empregados por departamento.
   Listar maiores e menores salários de cada departamento.
   Listar nome dos departamentos cuja média salarial seja maior que
    7000.
   Listar todos dependentes com respectivos responsáveis e nome do
    departamento de lotação dos responsáveis.
   Listar o nome e data de nascimento de todos os funcionários e
    dependentes existentes na empresa.
   Listar matrícula dos empregados que não possuem dependentes.
   Listar matrícula dos empregados que possuem dependentes.
Exercícios
 Listar nome e média salarial dos departamentos que
  possuem mais de 10 empregados lotados.
 Listar nome e quantidade de empregados dos
  departamentos cuja média salarial é maior que 5000.
 Listar o primeiro e segundo maiores salários da
  empresa.
 Listar nome dos departamentos com média salarial
  maior que a média salarial da empresa.
 Listar todos os empregados que possuem salário maior
  que a média salarial de seus departamentos.
 Listar os empregados lotados nos departamentos
  localizados no Piauí.
Referências
 Elsmari, R., Navathe, Shamkant B. “Sistemas de
  Banco de Dados”. 6ª Edição, Pearson Brasil, 2011.
 Silberschatz, A., Korth, H., Sudarshan, S. “Sistema
  de Banco de Dados”. 5ª Edição, Editora Campus,
  2006.
 Heuser, Carlos Alberto. “Projeto de Banco de
  Dados”. 6ª Edição, Editora Bookman, 2009.
 Slides Prof. José Maria (UFC).
DÚVIDAS?
regis@ifpi.edu.br
@regispires

Mais conteúdo relacionado

PDF
Sql proficiente
Leonardo Cezar
 
PDF
Agbd aula4 sql_ddl
Daniel Fernandes Costa
 
PDF
A Classe StringBuilder em Java
Devmedia
 
KEY
Python 05
Bruno Catão
 
PDF
Mongodb workshop cinlug
Daker Fernandes
 
PPT
Modulo 15 PSI
Luis Ferreira
 
ODP
Palestra cbq
Rildo Pragana
 
PDF
PHP para Adultos: Clean Code e Object Calisthenics
Guilherme Blanco
 
Sql proficiente
Leonardo Cezar
 
Agbd aula4 sql_ddl
Daniel Fernandes Costa
 
A Classe StringBuilder em Java
Devmedia
 
Python 05
Bruno Catão
 
Mongodb workshop cinlug
Daker Fernandes
 
Modulo 15 PSI
Luis Ferreira
 
Palestra cbq
Rildo Pragana
 
PHP para Adultos: Clean Code e Object Calisthenics
Guilherme Blanco
 

Mais procurados (20)

PPTX
Acesso a Banco de Dados em Java usando JDBC
Luiz Ricardo Silva
 
PDF
Da Argila Ao Forte - Como desenvolver uma loja virtual
Michael Castillo Granados
 
PPTX
Psi m14
Luis Ferreira
 
PPTX
Design patterns
DouglasSoaresAndrSch
 
PDF
Object Calisthenics: relaxe e escreva códigos simples
Otávio Calaça Xavier
 
PDF
Doctrine2 Seminário PHP
Guilherme Blanco
 
PDF
Acesso a banco de dados com JDBC
Eduardo Mendes
 
PPT
LINQ - Language Integrated Query
Dalton Valadares
 
PDF
LaravelSP - MySQL 5.7: introdução ao JSON Data Type
Gabriela Ferrara
 
KEY
Python 02
Bruno Catão
 
PDF
PostgreSQL 8.4
Fernando Ike
 
PPTX
Introdução ao MongoDB
Eng. Carlos Eduardo Ferreiro Corrêa
 
PDF
Introdução ao MongoDB em 30 slides
Derek Willian Stavis
 
PDF
Proxy, Man-In-The-Middle e testes
Stanislaw Pusep
 
PDF
Passagem de Objetos entre Java e Oracle
André Reis
 
KEY
PHPubSP Object Calisthenics aplicado ao PHP
Guilherme Blanco
 
PDF
Introdução a JPA (2010)
Helder da Rocha
 
ODP
JDBC
Ramon Lopes
 
PDF
PHP ao Extremo
Thiago Rigo
 
KEY
A primeira app iOS (a gente não esquece)
Ricardo Valeriano
 
Acesso a Banco de Dados em Java usando JDBC
Luiz Ricardo Silva
 
Da Argila Ao Forte - Como desenvolver uma loja virtual
Michael Castillo Granados
 
Psi m14
Luis Ferreira
 
Design patterns
DouglasSoaresAndrSch
 
Object Calisthenics: relaxe e escreva códigos simples
Otávio Calaça Xavier
 
Doctrine2 Seminário PHP
Guilherme Blanco
 
Acesso a banco de dados com JDBC
Eduardo Mendes
 
LINQ - Language Integrated Query
Dalton Valadares
 
LaravelSP - MySQL 5.7: introdução ao JSON Data Type
Gabriela Ferrara
 
Python 02
Bruno Catão
 
PostgreSQL 8.4
Fernando Ike
 
Introdução ao MongoDB
Eng. Carlos Eduardo Ferreiro Corrêa
 
Introdução ao MongoDB em 30 slides
Derek Willian Stavis
 
Proxy, Man-In-The-Middle e testes
Stanislaw Pusep
 
Passagem de Objetos entre Java e Oracle
André Reis
 
PHPubSP Object Calisthenics aplicado ao PHP
Guilherme Blanco
 
Introdução a JPA (2010)
Helder da Rocha
 
PHP ao Extremo
Thiago Rigo
 
A primeira app iOS (a gente não esquece)
Ricardo Valeriano
 
Anúncio

Destaque (10)

PDF
Curso de SQL e Banco de Dados
Wilson Kitth Real
 
PDF
01 02 introdução aos bancos de dados (slides)
samuelthiago
 
PDF
Banco de Dados - Conceitos Básicos
Adriano Leite da Silva
 
PDF
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Rangel Javier
 
PDF
Exercícios de relacionamento 2012
Vitor Leal Diniz
 
PDF
Apostila banco de dados
Elifranio Alves Cruz
 
PDF
Banco de dados exercícios resolvidos
Gleydson Sousa
 
PPT
Introdução a Bancos de Dados
Ricardo Flores Zago, PMP, MSc
 
PPTX
Banco de Dados Conceitos
Cleber Ramos
 
Curso de SQL e Banco de Dados
Wilson Kitth Real
 
01 02 introdução aos bancos de dados (slides)
samuelthiago
 
Banco de Dados - Conceitos Básicos
Adriano Leite da Silva
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Rangel Javier
 
Exercícios de relacionamento 2012
Vitor Leal Diniz
 
Apostila banco de dados
Elifranio Alves Cruz
 
Banco de dados exercícios resolvidos
Gleydson Sousa
 
Introdução a Bancos de Dados
Ricardo Flores Zago, PMP, MSc
 
Banco de Dados Conceitos
Cleber Ramos
 
Anúncio

Semelhante a Bd sql (1) (20)

PPTX
Aula 11 banco de dados
Jorge Ávila Miranda
 
PPTX
Aula 11 banco de dados
Jorge Ávila Miranda
 
PPTX
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
SaraR49
 
PDF
6338 111121071604-phpapp01
Gilson Figueredo
 
PDF
Introdução ao SQL
Thiago Freitas
 
PPTX
Curso de PostgreSQL: Um pouco Além dos Comandos
Marcos Thomaz
 
PPTX
Aula 10 banco de dados
Jorge Ávila Miranda
 
PDF
Apostila - Banco de Dados
José Corrêa Viana
 
PPTX
Aula 12 banco de dados
Jorge Ávila Miranda
 
DOCX
Sql - Introdução ao mysql
Arley Rodrigues
 
PDF
Um pouco sobre sql
Ricardo Kovalski Cruz
 
PDF
Apostila de sql
Gabriel Rodrigues
 
PDF
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
Carlos Santos
 
PDF
07 sql - parte 01
SharllesGuedes
 
PDF
Apostila de postgre
ms6675
 
PPTX
Basesdedados
Agostinho Sousa Pinto
 
PPT
CONCEITOS BASICOS DE BANCO DE DADOS COM SQL
EduardoValente27
 
PDF
Aulas_SQL.pdf
DaniloPereira341965
 
PDF
Dicas oracle sql
Marcos Oliveira
 
PPTX
Fundamentos de Banco de Dados Relacionais
Álvaro Farias Pinheiro
 
Aula 11 banco de dados
Jorge Ávila Miranda
 
Aula 11 banco de dados
Jorge Ávila Miranda
 
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
SaraR49
 
6338 111121071604-phpapp01
Gilson Figueredo
 
Introdução ao SQL
Thiago Freitas
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Marcos Thomaz
 
Aula 10 banco de dados
Jorge Ávila Miranda
 
Apostila - Banco de Dados
José Corrêa Viana
 
Aula 12 banco de dados
Jorge Ávila Miranda
 
Sql - Introdução ao mysql
Arley Rodrigues
 
Um pouco sobre sql
Ricardo Kovalski Cruz
 
Apostila de sql
Gabriel Rodrigues
 
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
Carlos Santos
 
07 sql - parte 01
SharllesGuedes
 
Apostila de postgre
ms6675
 
Basesdedados
Agostinho Sousa Pinto
 
CONCEITOS BASICOS DE BANCO DE DADOS COM SQL
EduardoValente27
 
Aulas_SQL.pdf
DaniloPereira341965
 
Dicas oracle sql
Marcos Oliveira
 
Fundamentos de Banco de Dados Relacionais
Álvaro Farias Pinheiro
 

Último (20)

PDF
Estudo de Caso - Processo de Compras.pdf
GustavoHenriqueLunar
 
PDF
5S Programa de Qualidade e PadronizaçãoTransparências.pdf
JOSEEDILBERTOSILVARE
 
PDF
CONTABILIDADE HOJE para aprender para concursos
RICARDOJSOUSA
 
PPTX
CONTABILIDADE EMPRESARIAL INTERMEDIARIA.pptx
wuallassegonzaga
 
PDF
Projeto rede 1/4, da Universidade NOVA de Lisboa, lançado com criatividade e ...
Link101
 
PPT
Primeiros Socorros- ver(1).pptttttttttttttt
AdeniltonMendes3
 
PDF
-ssssssssssssssssSLIDES-SOBRE-PLANO-DE-NEGOCIOS.pdf
AdeniltonMendes3
 
PPTX
Capacitacao_online_Monitoramento_Ciclo_PDCA.pptx
jailsonscerqueira
 
PDF
Análise Estratégica das Perspectivas da Petrobras na Colômbia.pdf
Vitor Pereira Xavier
 
PDF
Slides - para apresentação de Gestão de Processos (1).pdf
GledsonBarbosaAlcoba1
 
PPTX
Apresentação Comercial Turingtecnologia.pptx
AllanLandaudeCarvalh
 
PDF
Carteira recomenda s. Investimentos Crédito
gustavomarquioto
 
PPTX
Inteligência Competitiva - Método Washington Platt.pptx
FranciscoJosFdeMedei
 
PPTX
Treinamento de GOVERNANÇA CORPORATIVA.pptx
Cassiano Pacheco da Silva
 
PPTX
GERenciamento de PORTFOLIO de projetos . ppts
PedroCunha566540
 
PPTX
ppt-socioemocional.pptxxxxxxxxxxxxxxxxxxxxxxxxxxx
AdeniltonMendes3
 
PDF
gestao-da-qualidade---mba-producao-2019---unesp-feg-compressed-1.pdf
nadadeutil1
 
Estudo de Caso - Processo de Compras.pdf
GustavoHenriqueLunar
 
5S Programa de Qualidade e PadronizaçãoTransparências.pdf
JOSEEDILBERTOSILVARE
 
CONTABILIDADE HOJE para aprender para concursos
RICARDOJSOUSA
 
CONTABILIDADE EMPRESARIAL INTERMEDIARIA.pptx
wuallassegonzaga
 
Projeto rede 1/4, da Universidade NOVA de Lisboa, lançado com criatividade e ...
Link101
 
Primeiros Socorros- ver(1).pptttttttttttttt
AdeniltonMendes3
 
-ssssssssssssssssSLIDES-SOBRE-PLANO-DE-NEGOCIOS.pdf
AdeniltonMendes3
 
Capacitacao_online_Monitoramento_Ciclo_PDCA.pptx
jailsonscerqueira
 
Análise Estratégica das Perspectivas da Petrobras na Colômbia.pdf
Vitor Pereira Xavier
 
Slides - para apresentação de Gestão de Processos (1).pdf
GledsonBarbosaAlcoba1
 
Apresentação Comercial Turingtecnologia.pptx
AllanLandaudeCarvalh
 
Carteira recomenda s. Investimentos Crédito
gustavomarquioto
 
Inteligência Competitiva - Método Washington Platt.pptx
FranciscoJosFdeMedei
 
Treinamento de GOVERNANÇA CORPORATIVA.pptx
Cassiano Pacheco da Silva
 
GERenciamento de PORTFOLIO de projetos . ppts
PedroCunha566540
 
ppt-socioemocional.pptxxxxxxxxxxxxxxxxxxxxxxxxxxx
AdeniltonMendes3
 
gestao-da-qualidade---mba-producao-2019---unesp-feg-compressed-1.pdf
nadadeutil1
 

Bd sql (1)

  • 1. Banco de Dados SQL Regis Pires Magalhães regis@ifpi.edu.br @regispires
  • 2. SQL Structured Query Language - SQL Especificar consultas de forma interativa. DDL - Data Definition Language ◦ Linguagem de Definição de Dados DML - Data Manipulation Language ◦ Linguagem de Manipulação de Dados ◦ Usada para especificar consultas e atualizações
  • 3. DDL permite especificar... Esquema de relações(tabelas); Domínio de valores associados a cada atributo; Restrições de integridade; Conjunto de índices a serem mantidos para cada relação; Estrutura de armazenamento físico de cada relação em disco; Autorização de acesso para cada relação.
  • 4. SGBD – MySQL – Resumo Estabelecer uma conexão pelo console: ◦ mysql -u usuario -p  -u  usuário / -p  password (senha) Criar um banco de dados ◦ create database nome_bd; Usar um banco de dados como padrão ◦ use nome_bd; Apagar um banco de dados ◦ drop database nome_bd;
  • 5. SGBD – MySQL – Resumo Obtendo informações sobre o BD... ◦ Mostrar todos os bancos de dados  show databases; ◦ Mostrar todas as tabelas de um BD  show tables; ◦ Mostrar o comando de criação de um BD  show create database nome_bd; ◦ Mostrar o comando de criação de uma tabela  show create table nome_tabela;
  • 6. MySQL Monitor – Status - s s mysql Ver 14.14 Distrib 5.1.61, for debian-linux-gnu (x86_64) using readline 6.2 Connection id: 93 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.1.61-0ubuntu0.11.10.1 (Ubuntu) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 1 day 3 hours 15 min 21 sec Threads: 4 Questions: 2251 Slow queries: 0 Opens: 297 Flush tables: 1 Open tables: 58 Queries per second avg: 0.22
  • 7. Criação de banco de dados CREATE DATABASE nome_bd [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name]  Character set – conjunto de símbolos e codificações.  Collation – conjunto de regras para comparação de caracteres em um conjunto de caracteres.  Exemplos: ◦ CREATE DATABASE locadora; ◦ CREATE DATABASE locadora CHARSET utf8; ◦ CREATE DATABASE locadora DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  • 8. MySQL – charset do console Alterando o charset do MySQL Monitor para utf8: ◦ set charset utf8;
  • 9. Exclusão de banco de dados DROP DATABASE nome_bd; ◦ Exemplo:  DROP DATABASE locadora;
  • 10. Selecionando o banco de dados para uso USE nome_bd; ◦ Exemplo:  USE locadora;
  • 11. Criação de tabelas CREATE TABLE nome-tabela (nome-coluna tipo-de-dados [not null], [nome-coluna tipo-de-dados [not null] … ], [CONSTRAINT nome-restrição] UNIQUE nome-coluna | PRIMARY KEY(nome-coluna {, nome-coluna}) | FOREIGN KEY (nome-coluna {, nome-coluna}) REFERENCES nome-tabela [ON DELETE CASCADE | SET NULL | NO ACTION ], [ON UPDATE CASCADE], | CHECK (predicado) )
  • 12. Alguns tipos de dados (SQL 92) char(n) ◦ string de caracteres de tamanho fixo n varchar(n) ◦ string de caracteres de tamanho variável (máximo n) Integer (int), smallint, tinyint, bigint decimal(p,d), numeric (p,d) ◦ numérico com p dígitos ◦ Dos p dígitos, d dígitos representam casas decimais após a vírgula Real, float - numérico ponto flutuante date – data time – hora  datetime, smalldatetime, timestamp – data e hora
  • 13. Restrições (Constraints) NOT NULL ◦ O atributo deve ser obrigatoriamente preenchido. DEFAULT ◦ Atribui um valor padrão ao atributo, caso não seja especificado um valor. UNIQUE ◦ Garante que o atributo não terá valores repetidos na tabela. CHECK ◦ Verifica se o valor inserido é permitido para o atributo.
  • 14. Restrições (Constraints) PRIMARY KEY (PK) ◦ Define a chave primária da relação. FOREIGN KEY (FK) ◦ Implementa o conceito de chave estrangeira e garante a integridade referencial. ◦ Deve referenciar um campo que possua chave primária ou uma restrição UNIQUE.  ON DELETE CASCADE – Se a linha da tabela que tem a PK for apagada, a linha da tabela que tem a FK também será.  ON UPDATE CASCADE – Se a linha da tabela que tem a PK for modificada, a linha da tabela que tem a FK também será.
  • 15. Criação de tabelas - InnoDB Para usar recursos como integridade referencial e transações no MySQL, é preciso criar tabelas do tipo InnoDB: ◦ CREATE TABLE pessoas (...) ENGINE=InnoDB;
  • 16. CREATE DATABASE producao default charset utf8; use producao; CREATE TABLE diretor( id int PRIMARY KEY, nome varchar(50) ) ENGINE=INNODB; CREATE TABLE filme( id int PRIMARY KEY, titulo varchar(50), id_diretor int, FOREIGN KEY (id_diretor) REFERENCES diretor(id) ) ENGINE=INNODB;
  • 17. Remoção de tabelas DROP TABLE nome-tabela [CASCADE | RESTRICT] Remove as tuplas da tabela e sua definição do catálogo ◦ CASCADE remove as restrições do tipo foreign key tabelas que referenciam a tabela removida
  • 18. Exercício  Dado o modelo relacional a seguir, definir o esquema físico do banco de dados usando SQL.  clientes(id: int, nome: varchar(50), cpf: char(11), data_cadastro:date, cidade: varchar(50), uf: char(2))  categorias(id: int, nome: varchar(20))  classes (id:int, nome: varchar(20), preco: decimal(10,2))  distribuidores (id: int, nome: varchar(50))  filmes (id: int, titulo: varchar(50), id_distribuidor: int, ano_lancamento: int(4), id_categoria: int, id_classe: int) ◦ id_distribuidor referencia distribuidores ◦ id_categoria referencia categorias ◦ id_classe referencia classes  locacoes (id: int, id_cliente: int, id_filme: int, dt_locacao: date, dt_devolucao_prevista: date, dt_devolucao:date, valor: decimal(10,2) ◦ id_cliente referencia clientes ◦ id_filme referencia filmes
  • 19. Criando a tabela clientes CREATE TABLE clientes ( id int AUTO_INCREMENT, cpf char(11), nome varchar(50), data_cadastro date, cidade varchar(40), uf char(2) DEFAULT 'PI', PRIMARY KEY (id), UNIQUE (cpf) ) ENGINE=InnoDB;
  • 20. Inserindo dados na tabela clientes insert into clientes values (null, '123', 'Regis', '2012-04-11', 'Parnaíba', 'PI'); insert into clientes (cpf, nome, data_cadastro, cidade) values ('124', 'João', '2012-04-11', 'Parnaíba');
  • 21. CREATE TABLE clientes ( id int PRIMARY KEY AUTO_INCREMENT, cpf char(11) UNIQUE, nome varchar(50), data_cadastro date, cidade varchar(40), uf char(2) DEFAULT 'PI' ) ENGINE=InnoDB;
  • 22. Alteração de tabelas ALTER TABLE nome-tabela [ADD nome-coluna tipo de dados] [DROP nome-coluna ] [ADD CONSTRAINT nome-restrição] [DROP CONSTRAINT nome-restrição] [DROP PRIMARY KEY] [ repetir ADD ou DROP em qualquer ordem]
  • 23. Consultas  SELECT [ALL | DISTINCT] {* | expr [[AS] c_alias] {, expr [[AS] c_alias] … }} FROM nome-tabela [[AS] qualificador] {, nome-tabela [[AS] qualificador] …} WHERE predicado  ALL ◦ Retorna todas as tuplas, inclusive repetidas (default)  DISTINCT ◦ Retorna apenas tuplas não repetidas * ◦ Retorna todos os atributos da(s) tabela(s)  expr ◦ Representa um atributo ou ◦ Expressão matemática envolvendo atributos das tabelas  salario*1.40
  • 24. Consultas FROM ◦ Representa o produto cartesiano das tabelas referenciadas WHERE ◦ Corresponde ao predicado de seleção da álgebra relacional ORDER BY coluna-resultado [ASC | DESC] {, coluna-resultado [ASC | DESC] …}
  • 25. Consultas Predicados com operações sobre strings ◦ Identificação de padrão  % - Casa com qualquer substring  _ - Casa com qualquer caracter ◦ Operador  like ◦ Exemplos  nome like ‘inf%’  Retorna strings que iniciam pelo substring inf  nome like ‘%si_’  Retorna strings que contenham ‘si’ como substring e terminem com um caracter qualquer após ‘si’  Listar todos empregados com sobrenome ‘pires’  Select nome from empregados where nome like ‘%pires%’
  • 26. Consultas Funções Agregadas ◦ Funções embutidas (built-in) aplicadas sobre uma coleção de valores (colunas) do banco de dados ◦ sum  Retorna o somatório dos valores de uma coleção ◦ avg  Retorna a média dos valores de uma coleção ◦ max  Retorna o maior valor de uma coleção de valores ◦ min  Retorna o menor valor de uma coleção ◦ count  Retorna o número de elementos de uma coleção ◦ Sintaxe nome-da-função (ALL | DISTINCT nome-coluna) | count(*)  Não podem ser utilizados na cláusula WHERE
  • 27. Consultas Agrupando tuplas no SQL ◦ Aplicar funções agregadas a diferentes grupos de tuplas ◦ Exemplo  Listar a quantidade de empregados por departamento ◦ Cláusula  GROUP BY ◦ Todas colunas que aparecem na cláusula select têm que aparecer na cláusula group by  Exceto os argumentos da funções agregadas
  • 28. Consultas Selecionando grupos ◦ Cláusula having  Filtro de grupos Consulta com where e having ◦ predicado da cláusula where é avaliado primeiramente  Tuplas que satisfazem o predicado são agrupadas pelo group by ◦ Predicado da cláusula having é avaliado  Grupos que satisfazem o predicado aparecem no resultado
  • 29. Consultas Checando valores nulos ◦ Predicado IS NULL ◦ Exemplo select * from Empregado where dt-nasc is null
  • 30. Consultas Consultas com o operador de união ◦ UNION  União de duas relações (consultas)  Sem repetições ◦ UNION ALL  União de duas relações  Com repetições ◦ Exemplo  Considere as seguintes relações  Empregado(matr, nome, ender, dt_nasc, cpf, salário, lotação)  Dependente(nome_dep, data-nasc, matr_resp)  Liste o nome e data de nascimento de todos os funcionários e dependentes existentes na empresa select nome,dt_nasc from Empregado UNION select nome_dep,data_nasc from Dependente
  • 31. Consultas Consultas com o operador de interseção ◦ INTERSECT  Interseção entre duas relações (consultas)  Sem repetições ◦ INTERSECT ALL  Interseção entre duas relações  Com repetições Consultas com o operador de diferença ◦ EXCEPT  Diferença entre duas relações (consultas)  Sem repetições ◦ EXCEPT ALL  Diferença entre duas relações (consultas)  Com repetições
  • 32. Consultas Consulta SQL aninhada (subconsulta) ◦ Consulta SQL especificada dentro de uma outra consulta SQL ◦ Exemplo  Listar todos os empregados que têm salário maior que a média salarial da empresa select e.nome select e.nome from Empregado e from Empregado e where salário > ((selectavg(salário) from Empregado) where salário > select avg(salário) fromEmpregado Empregado) Empregado
  • 33. Consultas Consulta SQL aninhada (cont.) ◦ Predicado IN  Verifica a pertinência de elementos em um conjunto  Exemplo select nome from Empregado where matr in (1,5,8,9)
  • 34. Exercícios Considere o seguinte esquema de banco de dados departamentos(id, nome, endereco, cidade, uf) empregados(id, matricula, cpf, nome, dt_nasc, endereco, salario, id_dept) dependentes(id, nome, dt_nasc, id_empr) id_dept em empregados referencia id em departamentos. id_empr em dependentes referencia id em empregados. ◦ Crie as tabelas Departamento e Empregado utilizando a DDL do SQL. Alterara tabela empregados para que matricula e cpf não possam ser duplicados.
  • 35. Exercícios  Criar consultas SQL para: ◦ Listar os funcionários com salário maior que 3000. ◦ Listar funcionários com salários maior que 1000 e menor que 2000. ◦ Listar nome dos funcionários com o nome de seu departamento. ◦ Listar nome dos funcionários com o nome de seu departamento e uma simulação de seu salário com um aumento de 15%. ◦ Listar empregados ordenados por salário na ordem decrescente e por nome na ordem crescente.
  • 36. Exercícios  Encontre o número de empregados lotados no departamento de Informática.  Encontre o montante da folha de pagamento (soma dos salários) da empresa.  Encontre o salário médio pago pela empresa.  Listar a quantidade de empregados por departamento.  Listar maiores e menores salários de cada departamento.  Listar nome dos departamentos cuja média salarial seja maior que 7000.  Listar todos dependentes com respectivos responsáveis e nome do departamento de lotação dos responsáveis.  Listar o nome e data de nascimento de todos os funcionários e dependentes existentes na empresa.  Listar matrícula dos empregados que não possuem dependentes.  Listar matrícula dos empregados que possuem dependentes.
  • 37. Exercícios  Listar nome e média salarial dos departamentos que possuem mais de 10 empregados lotados.  Listar nome e quantidade de empregados dos departamentos cuja média salarial é maior que 5000.  Listar o primeiro e segundo maiores salários da empresa.  Listar nome dos departamentos com média salarial maior que a média salarial da empresa.  Listar todos os empregados que possuem salário maior que a média salarial de seus departamentos.  Listar os empregados lotados nos departamentos localizados no Piauí.
  • 38. Referências  Elsmari, R., Navathe, Shamkant B. “Sistemas de Banco de Dados”. 6ª Edição, Pearson Brasil, 2011.  Silberschatz, A., Korth, H., Sudarshan, S. “Sistema de Banco de Dados”. 5ª Edição, Editora Campus, 2006.  Heuser, Carlos Alberto. “Projeto de Banco de Dados”. 6ª Edição, Editora Bookman, 2009.  Slides Prof. José Maria (UFC).