SlideShare uma empresa Scribd logo
1 de 39
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

Mais procurados

Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCLuiz Ricardo Silva
 
Da Argila Ao Forte - Como desenvolver uma loja virtual
Da Argila Ao Forte - Como desenvolver uma loja virtualDa Argila Ao Forte - Como desenvolver uma loja virtual
Da Argila Ao Forte - Como desenvolver uma loja virtualMichael Castillo Granados
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesOtávio Calaça Xavier
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBCEduardo Mendes
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated QueryDalton Valadares
 
LaravelSP - MySQL 5.7: introdução ao JSON Data Type
LaravelSP - MySQL 5.7: introdução ao JSON Data TypeLaravelSP - MySQL 5.7: introdução ao JSON Data Type
LaravelSP - MySQL 5.7: introdução ao JSON Data TypeGabriela Ferrara
 
Introdução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesIntrodução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesDerek Willian Stavis
 
Proxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesProxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesStanislaw Pusep
 
Passagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OraclePassagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OracleAndré Reis
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPGuilherme Blanco
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)Ricardo Valeriano
 

Mais procurados (20)

Acesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBCAcesso a Banco de Dados em Java usando JDBC
Acesso a Banco de Dados em Java usando JDBC
 
Da Argila Ao Forte - Como desenvolver uma loja virtual
Da Argila Ao Forte - Como desenvolver uma loja virtualDa Argila Ao Forte - Como desenvolver uma loja virtual
Da Argila Ao Forte - Como desenvolver uma loja virtual
 
Psi m14
Psi m14Psi m14
Psi m14
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simples
 
Doctrine2 Seminário PHP
Doctrine2 Seminário PHPDoctrine2 Seminário PHP
Doctrine2 Seminário PHP
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBC
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated Query
 
LaravelSP - MySQL 5.7: introdução ao JSON Data Type
LaravelSP - MySQL 5.7: introdução ao JSON Data TypeLaravelSP - MySQL 5.7: introdução ao JSON Data Type
LaravelSP - MySQL 5.7: introdução ao JSON Data Type
 
Python 02
Python 02Python 02
Python 02
 
PostgreSQL 8.4
PostgreSQL 8.4PostgreSQL 8.4
PostgreSQL 8.4
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
Introdução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesIntrodução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slides
 
Proxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesProxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testes
 
Passagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OraclePassagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e Oracle
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHP
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
JDBC
JDBCJDBC
JDBC
 
PHP ao Extremo
PHP ao ExtremoPHP ao Extremo
PHP ao Extremo
 
A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)
 

Destaque

Curso de SQL e Banco de Dados
Curso de SQL e Banco de DadosCurso de SQL e Banco de Dados
Curso de SQL e Banco de DadosWilson Kitth Real
 
01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)samuelthiago
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERRangel Javier
 
Exercícios de relacionamento 2012
Exercícios de relacionamento 2012Exercícios de relacionamento 2012
Exercícios de relacionamento 2012Vitor Leal Diniz
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidosGleydson Sousa
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados ConceitosCleber Ramos
 

Destaque (10)

Curso de SQL e Banco de Dados
Curso de SQL e Banco de DadosCurso de SQL e Banco de Dados
Curso de SQL e Banco de Dados
 
SQL Joins
SQL JoinsSQL Joins
SQL Joins
 
01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)
 
Banco de Dados - Conceitos Básicos
Banco de Dados - Conceitos BásicosBanco de Dados - Conceitos Básicos
Banco de Dados - Conceitos Básicos
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
 
Exercícios de relacionamento 2012
Exercícios de relacionamento 2012Exercícios de relacionamento 2012
Exercícios de relacionamento 2012
 
Apostila banco de dados
Apostila banco de dadosApostila banco de dados
Apostila banco de dados
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
Introdução a Bancos de Dados
Introdução a Bancos de DadosIntrodução a Bancos de Dados
Introdução a Bancos de Dados
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados Conceitos
 

Semelhante a Banco de Dados SQL Resumo

6338 111121071604-phpapp01
6338 111121071604-phpapp016338 111121071604-phpapp01
6338 111121071604-phpapp01Gilson Figueredo
 
Bdm aula 9 - operações sql - ticianne darin
Bdm   aula 9 - operações sql - ticianne darinBdm   aula 9 - operações sql - ticianne darin
Bdm aula 9 - operações sql - ticianne darinTicianne Darin
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQLDiogo Biazus
 
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxSaraR49
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Python no Power BI pelo SQL Server?
Python no Power BI pelo SQL Server?Python no Power BI pelo SQL Server?
Python no Power BI pelo SQL Server?FABIO SANTOS
 
Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1fabriciodenis
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLDaniel Brandão
 
pgBouncer: um aglomerador de conexões para PostgreSQL
pgBouncer: um aglomerador de conexões para PostgreSQLpgBouncer: um aglomerador de conexões para PostgreSQL
pgBouncer: um aglomerador de conexões para PostgreSQLelliando dias
 
Oracle 11g - Fundamentos
Oracle 11g - FundamentosOracle 11g - Fundamentos
Oracle 11g - FundamentosGustavo Sávio
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dadosJean Martina
 
EXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINEXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINTchelinux
 

Semelhante a Banco de Dados SQL Resumo (20)

6338 111121071604-phpapp01
6338 111121071604-phpapp016338 111121071604-phpapp01
6338 111121071604-phpapp01
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Basesdedados
BasesdedadosBasesdedados
Basesdedados
 
Bdm aula 9 - operações sql - ticianne darin
Bdm   aula 9 - operações sql - ticianne darinBdm   aula 9 - operações sql - ticianne darin
Bdm aula 9 - operações sql - ticianne darin
 
Python 04
Python 04Python 04
Python 04
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQL
 
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
07 sql - parte 01
07   sql - parte 0107   sql - parte 01
07 sql - parte 01
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Python no Power BI pelo SQL Server?
Python no Power BI pelo SQL Server?Python no Power BI pelo SQL Server?
Python no Power BI pelo SQL Server?
 
Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
Aulas_SQL.pdf
Aulas_SQL.pdfAulas_SQL.pdf
Aulas_SQL.pdf
 
pgBouncer: um aglomerador de conexões para PostgreSQL
pgBouncer: um aglomerador de conexões para PostgreSQLpgBouncer: um aglomerador de conexões para PostgreSQL
pgBouncer: um aglomerador de conexões para PostgreSQL
 
Oracle 11g - Fundamentos
Oracle 11g - FundamentosOracle 11g - Fundamentos
Oracle 11g - Fundamentos
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dados
 
EXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINEXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEIN
 
Bd08
Bd08Bd08
Bd08
 

Último

Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?
Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?
Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?E-Commerce Brasil
 
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024E-Commerce Brasil
 
Conferência SC 24 | Estratégias de precificação: loja própria e marketplace
Conferência SC 24 | Estratégias de precificação: loja própria e marketplaceConferência SC 24 | Estratégias de precificação: loja própria e marketplace
Conferência SC 24 | Estratégias de precificação: loja própria e marketplaceE-Commerce Brasil
 
Analise Ergonomica FisioPrev aula de ergonomia
Analise Ergonomica FisioPrev aula de ergonomiaAnalise Ergonomica FisioPrev aula de ergonomia
Analise Ergonomica FisioPrev aula de ergonomiaGabrielPasquinelli1
 
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...E-Commerce Brasil
 
Questionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
QuestionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnQuestionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
QuestionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnGustavo144776
 
Conferência SC 24 | Estratégias de precificação para múltiplos canais de venda
Conferência SC 24 | Estratégias de precificação para múltiplos canais de vendaConferência SC 24 | Estratégias de precificação para múltiplos canais de venda
Conferência SC 24 | Estratégias de precificação para múltiplos canais de vendaE-Commerce Brasil
 
Introdução à Multimídia e seus aspectos.pdf
Introdução à Multimídia e seus aspectos.pdfIntrodução à Multimídia e seus aspectos.pdf
Introdução à Multimídia e seus aspectos.pdfVivianeVivicka
 
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?E-Commerce Brasil
 
Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...
Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...
Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...E-Commerce Brasil
 
Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...
Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...
Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...E-Commerce Brasil
 
66ssssssssssssssssssssssssssssss4434.pptx
66ssssssssssssssssssssssssssssss4434.pptx66ssssssssssssssssssssssssssssss4434.pptx
66ssssssssssssssssssssssssssssss4434.pptxLEANDROSPANHOL1
 
Ética NO AMBIENTE DE TRABALHO, fundamentosdas relações.pdf
Ética NO AMBIENTE DE TRABALHO,  fundamentosdas relações.pdfÉtica NO AMBIENTE DE TRABALHO,  fundamentosdas relações.pdf
Ética NO AMBIENTE DE TRABALHO, fundamentosdas relações.pdfInsttLcioEvangelista
 
EP GRUPO - Mídia Kit 2024 - conexão de marcas e personagens
EP GRUPO - Mídia Kit 2024 - conexão de marcas e personagensEP GRUPO - Mídia Kit 2024 - conexão de marcas e personagens
EP GRUPO - Mídia Kit 2024 - conexão de marcas e personagensLuizPauloFerreira11
 
Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)
Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)
Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)E-Commerce Brasil
 
Conferência SC 24 | Gestão logística para redução de custos e fidelização
Conferência SC 24 | Gestão logística para redução de custos e fidelizaçãoConferência SC 24 | Gestão logística para redução de custos e fidelização
Conferência SC 24 | Gestão logística para redução de custos e fidelizaçãoE-Commerce Brasil
 
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...E-Commerce Brasil
 
Conferência SC 2024 | De vilão a herói: como o frete vai salvar as suas vendas
Conferência SC 2024 |  De vilão a herói: como o frete vai salvar as suas vendasConferência SC 2024 |  De vilão a herói: como o frete vai salvar as suas vendas
Conferência SC 2024 | De vilão a herói: como o frete vai salvar as suas vendasE-Commerce Brasil
 
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...E-Commerce Brasil
 
Conferência SC 24 | O custo real de uma operação
Conferência SC 24 | O custo real de uma operaçãoConferência SC 24 | O custo real de uma operação
Conferência SC 24 | O custo real de uma operaçãoE-Commerce Brasil
 

Último (20)

Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?
Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?
Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?
 
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
 
Conferência SC 24 | Estratégias de precificação: loja própria e marketplace
Conferência SC 24 | Estratégias de precificação: loja própria e marketplaceConferência SC 24 | Estratégias de precificação: loja própria e marketplace
Conferência SC 24 | Estratégias de precificação: loja própria e marketplace
 
Analise Ergonomica FisioPrev aula de ergonomia
Analise Ergonomica FisioPrev aula de ergonomiaAnalise Ergonomica FisioPrev aula de ergonomia
Analise Ergonomica FisioPrev aula de ergonomia
 
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
 
Questionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
QuestionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnQuestionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Questionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
 
Conferência SC 24 | Estratégias de precificação para múltiplos canais de venda
Conferência SC 24 | Estratégias de precificação para múltiplos canais de vendaConferência SC 24 | Estratégias de precificação para múltiplos canais de venda
Conferência SC 24 | Estratégias de precificação para múltiplos canais de venda
 
Introdução à Multimídia e seus aspectos.pdf
Introdução à Multimídia e seus aspectos.pdfIntrodução à Multimídia e seus aspectos.pdf
Introdução à Multimídia e seus aspectos.pdf
 
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
 
Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...
Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...
Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...
 
Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...
Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...
Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...
 
66ssssssssssssssssssssssssssssss4434.pptx
66ssssssssssssssssssssssssssssss4434.pptx66ssssssssssssssssssssssssssssss4434.pptx
66ssssssssssssssssssssssssssssss4434.pptx
 
Ética NO AMBIENTE DE TRABALHO, fundamentosdas relações.pdf
Ética NO AMBIENTE DE TRABALHO,  fundamentosdas relações.pdfÉtica NO AMBIENTE DE TRABALHO,  fundamentosdas relações.pdf
Ética NO AMBIENTE DE TRABALHO, fundamentosdas relações.pdf
 
EP GRUPO - Mídia Kit 2024 - conexão de marcas e personagens
EP GRUPO - Mídia Kit 2024 - conexão de marcas e personagensEP GRUPO - Mídia Kit 2024 - conexão de marcas e personagens
EP GRUPO - Mídia Kit 2024 - conexão de marcas e personagens
 
Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)
Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)
Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)
 
Conferência SC 24 | Gestão logística para redução de custos e fidelização
Conferência SC 24 | Gestão logística para redução de custos e fidelizaçãoConferência SC 24 | Gestão logística para redução de custos e fidelização
Conferência SC 24 | Gestão logística para redução de custos e fidelização
 
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
 
Conferência SC 2024 | De vilão a herói: como o frete vai salvar as suas vendas
Conferência SC 2024 |  De vilão a herói: como o frete vai salvar as suas vendasConferência SC 2024 |  De vilão a herói: como o frete vai salvar as suas vendas
Conferência SC 2024 | De vilão a herói: como o frete vai salvar as suas vendas
 
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
 
Conferência SC 24 | O custo real de uma operação
Conferência SC 24 | O custo real de uma operaçãoConferência SC 24 | O custo real de uma operação
Conferência SC 24 | O custo real de uma operação
 

Banco de Dados SQL Resumo

  • 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).