Buscar

tecnologias-linguagens-aplicadas-a-banco-de-dados-13

Prévia do material em texto

Grupo SER Educacional | Tecnologias e Linguagens de Banco de Dados 1 
 
 
 
 
TECNOLOGIAS E LINGUAGENS DE 
BANCO DE DADOS 
Tecnologias e Linguagens de 
 Banco de Dados
 
JOÃO DANILO NOGUEIRA 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
COMANDO SELECT E O 
RELACIONAMENTO 
ENTRE TABELAS 
 
 
 
 
 
AULA 13 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Diretor Executivo 
DAVID LIRA STEPHEN BARROS 
 
Direção Editorial 
ANDRÉA CÉSAR PEDROSA 
 
Projeto Gráfico 
MANUELA CÉSAR DE ARRUDA 
 
Autor 
JOÃO DANILO NOGUEIRA 
 
 
Desenvolvedor 
CAIO BENTO GOMES DOS SANTOS 
 
 
 
 
 
 
 
O Autor 
 
 
João Danilo Nogueira 
 
Olá. Meu nome é João Danilo. Sou graduado em Ciência da Computação 
pela Faculdade Grande Fortaleza (FGF) e amo programar. Atualmente, o 
foco de minha expertise é na área de gerenciamento de projetos, teoria 
dos números, RSA e criptografia. Vai ser um prazer enorme ajudar VOCÊ a 
se tornar um excelente desenvolvedor de software ou administrador de 
banco de dados. Conte comigo para lhe ajudar nessa trajetória rumo ao 
seu desenvolvimento profissional! Muito sucesso para você. 
 
 
 
JOÃO DANILO NOGUEIRA 
 
“ 
 
 
Iconográficos 
Olá. Meu nome é Manuela César de Arruda. Sou o responsável pelo 
projeto gráfico de seu material. Esses ícones irão aparecer em sua trilha 
de aprendizagem toda vez que: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
INTRODUÇÃO 
para o início do 
desenvolvimento de 
uma nova 
competência; 
DEFINIÇÃO 
houver necessidade de 
se apresentar um novo 
conceito; 
NOTA 
quando forem 
necessários 
observações ou 
complementações 
para o seu 
conhecimento; 
IMPORTANTE 
as observações 
escritas tiveram 
que ser priorizadas 
para você; 
EXPLICANDO 
MELHOR 
algo precisa ser 
melhor explicado ou 
detalhado; 
VOCÊ SABIA? 
curiosidades e 
indagações lúdicas 
sobre o tema em 
estudo, se forem 
necessárias; 
SAIBA MAIS 
textos, referências 
bibliográficas e links 
para aprofundamento 
do seu conhecimento; 
REFLITA 
se houver a necessidade 
de chamar a atenção 
sobre algo a ser refletido 
ou discutido sobre; 
ACESSE 
se for preciso acessar 
um ou mais sites 
para fazer download, 
assistir vídeos, ler 
textos, ouvir podcast; 
 
RESUMINDO 
quando for preciso se 
fazer um resumo 
acumulativo das 
últimas abordagens; 
ATIVIDADES 
quando alguma 
atividade de 
autoaprendizagem for 
aplicada; 
TESTANDO 
quando o 
desenvolvimento de 
uma competência for 
concluído e questões 
forem explicadas; 
 
 
Sumário 
1 COMANDO SELECT E O RELACIONAMENTO ENTRE TABELAS ..................................... 8 
1.1 Integridade referencial no MySQL ......................................................................... 8 
1.2 Comando SELECT ................................................................................................ 17 
1.2.1 Funções do MySQL ................................................................................. 19 
1.2.2 Comandos SELECT encadeados ................................................................ 21 
Considerações Finais ................................................................................................ 22 
Atividades de Autoaprendizagem .............................................................................. 22 
Questionário Avaliativo ............................................................................................ 22 
Bibliografia .............................................................................................................. 23 
 
 
 
 
 
Trilha de Aprendizagem 
 
Olá. Meu nome é Andréa César. Sou responsável pela direção editorial 
deste livro didático e de todos os demais recursos relacionados com a sua 
trilha de aprendizagem. Você está iniciando seus estudos sobre 
TECNOLOGIAS E LINGUAGENS DE BANCO DE DADOS, e o nosso objetivo é 
auxiliar você no desenvolvimento das competências necessárias ao seu 
exercício profissional. Para isto, distribuímos os conteúdos didáticos 
deste livro em quatro semanas de estudo, onde, em cada uma delas, 
haverá uma competência a ser construída. Cada uma dessas 
competências será desenvolvida por meio de quatro atividades de estudo, 
que podemos chamar de “aulas”. Em cada aula, você terá uma introdução 
ao tema abordado, os objetivos a serem alcançados, uma atividade de 
autoaprendizagem proposta e uma lista de exercícios a ser em 
respondidos. Quer saber quais serão as competências que você irá 
desenvolver ao longo dessas quatro semanas de estudo? Então vamos a 
elas: 
1. Adquirir uma visão geral sobre os SGBDs disponíveis no mercado, 
suas funcionalidades, ambientes e linguagens de manipulação de 
banco de dados. 
2. Instalar e configurar servidores de banco de dados, atentando para os 
aspectos relacionados à segurança e desempenho. 
3. Criar, formatar e atualizar bancos de dados em um SGBD. 
4. Gerar consultas, procedimentos, gatilhos e visões de bancos de dados 
em um SGBD. 
 
Ao longo desta semana iremos desenvolver a competência de número: 4. 
Vamos arregaçar as mangas? Ao trabalho! 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 7 
 
 
4ª SEMANA DE ESTUDOS 
INTRODUÇÃO: 
urante esta última semana de estudos iremos finalmente 
aprender a relacionar tabelas no MySQL, para depois 
empregarmos o comando SELECT nas operações de 
consulta aos dados dessas tabelas. Atenção, este é o 
ponto mais importante de toda esta disciplina. Saber empregar bem o 
comando SELECT consiste na atividade mais importante, tanto da 
administração do banco de dados, quanto no acesso a suas estruturas por 
meio de programas. Preparado para uma viagem rumo ao conhecimento? 
Então, aperte o cinto e boa viagem. 
 
 
OBJETIVOS: 
 
Ao término do desenvolvimento desta semana de estudos, você será 
capaz de: 
 Gerar consultas SQL envolvendo uma ou mais tabelas do banco de 
dados; 
 Criar procedimentos armazenados no banco de dados, conhecidos 
como stored procedures; 
 Criar gatilhos para disparar procedimentos programados, conhecidos 
como triggers; e, 
 Manipular dados por meio de visões (ou views) envolvendo uma ou 
mais tabelas. 
 
 
Mãos à obra? Conte com a gente! 
 
 
D 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 8 
 
 
1 Comando Select e o Relacionamento 
entre Tabelas 
INTRODUÇÃO: 
Chegamos ao ponto mais importante de nossa disciplina. É nesta aula 
que iremos praticar os comandos SQL. Como vimos anteriormente, a sigla 
SQL significa linguagem de consulta estruturada, e o comando que 
executa essas consultas é o SELECT. O comando SELECT é capaz de gerar 
uma consulta em tempo real, envolvendo uma ou mais tabelas de um 
banco de dados. O resultado da execução de um comando SQL é, na 
realidade, um conjunto de linhas compostas dos dados selecionados das 
tabelas consultadas, conforme as condições descritas na cláusula 
WHERE. Mas, antes mesmo de aprendermos a usar o comando SELECT, 
precisamos retomar a linguagem DDL (Data Definition Language) para 
entendermos como impor um relacionamento entre duas tabelas. 
 
 
1.1 Integridade referencial no MySQL 
 
Você lembra o que significa integridade referencial? Este conceito é 
básico e muito importante para quem trabalha com banco de dados, 
tanto em nível de administração quanto no de programação. Impor 
integridade referencial entre duas tabelas é relacioná -las com base nos 
dados contidos em pelo menos duas colunas, uma de cada tabela. 
Estamos falando, na prática, de relacionar duas tabelas por meio da 
chave primária de uma delas e da chave estrangeira da outra. Mas, você 
lembra o que significa uma chave estrangeira? E a primária? 
 
 
OBJETIVO: 
Ao término desta aula você será capaz de gerar consultas SQL envolvendo 
uma ou mais tabelas do banco de dados. 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 9 
 
 
 
 
 
 
 
 
 
 
 
 
No caso de uma chave estrangeira, o conceito é um pouco diferente: 
 
 
 
 
 
 
 
 
 
 
Vamos entender melhor tudo isto? 
 
 
 
Entendemos por chave primária a coluna de uma tabela 
que contém dados únicos (sem repetição) e que foram 
concebidos para serem a principal forma de acesso e 
relacionamento de uma tabela dentro do banco de dados, 
como por exemplo, o CNPJ dos clientes, a matrícula dos 
funcionários, o CPF de um cadastro de devedores, ou um 
simples código sequencial numérico criado para indexar 
as linhas de uma tabela qualquer. 
DEFINIÇÃO 
Uma chave estrangeira nada mais é do que uma coluna de 
uma tabela que contém, na realidade, dados contidos na 
coluna “chave primária” de uma outra tabela, 
estabelecendo assim um relacionamento entre elas, que 
pode ser de 1:1 (uma linha de uma tabela relacionada 
apenas a uma linha de uma outra tabela), ou de 1:N (uma 
linha de uma tabela relacionada a uma ou mais linhas em 
outra tabela). 
DEFINIÇÃO 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 10 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Vamos acionar mais uma vez o PhpMyAdmin, abrir o 
nosso banco de dados “escolaprime” e clicar no link 
“New” para criar uma nova tabela, como exibido na 
figura ao lado. Só que, desta vez, diferentemente de 
como criamos a tabela “funcionarios", vamos criar a 
tabela “departamentos” por meio da aba “SQL”, 
usando, para isto, o comando CREATE TABLE da 
linguagem DDL. Escreva assim: 
CREATE TABLE `departamentos` ( 
 numdepto INT(11), 
 nomedepto VARCHAR(60)) 
ENGINE = InnoDB; 
 
Figura 1 - Clique aqui para criar uma nova 
tabela. 
Para entendermos melhor, vamos retomar o nosso 
exemplo. Dentro da nossa tabela “funcionarios” existe 
uma coluna intitulada “Depto”. Nela foram digitados os 
códigos de supostos departamentos. Mas, onde estão os 
nomes desses departamentos? Se fôssemos inserir uma 
nova coluna na tabela “funcionarios” intitulada 
“NomeDepto”, estaríamos cometendo um erro de 
modelagem de dados, mais precisamente um erro de 
normalização de dados. Para evitar a redundância do 
nome do departamento em várias linhas da tabela 
“funcionarios”, vamos recorrer a uma nova tabela, criada 
especificamente para conter o código e o nome desses 
departamentos. Assim, eliminaremos a possibilidade da 
redundância não-controlada, que pode causar 
inconsistências, do tipo: termos um mesmo departamento 
escrito de duas formas diferentes. Entenda, no desenrola r 
a seguir, como se processa o relacionamento entre essas 
duas tabelas: “funcionarios” e “departamentos”. 
EXPLICANDO MELHOR 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 11 
 
 
O resultado será este, apresentado na figura a seguir : 
 
Figura 2 - Resultado da execução do comando CREATE TABLE. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Agora que temos duas tabelas, com um mesmo dado se repetindo em 
ambas, devemos relacioná-las para impor uma integridade referencial, ou 
seja, amarrar uma a outra de tal modo que a atualização dos dados 
referentes a essa coluna em comum respeite a regra de integridade que 
queremos estabelecer. 
 
Mas, como fazer isto? 
 
 
 
 
 
 
 
 
Os campos “depto” e “numdepto” devem ser 
rigorosamente do mesmo tamanho e tipo: INT(11). 
IMPORTANTE 
Chamamos de integridade referencial a propriedade que 
uma tabela tem de respeitar restrições às chaves 
estrangeiras, ou seja, aos relacionamentos criados entre 
esta tabela e as outras que contêm dados relacionados. 
DEFINIÇÃO 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 12 
 
 
A primeira coisa que precisamos fazer antes de impor uma integridade 
referencial entre a chave estrangeira “depto” de “funcionarios” e a chave 
primária “numdepto” de “departamentos”, é torná -la, de fato, a chave 
primária da tabela “departamentos”. Há duas maneiras de fazermos isto: 
Você pode optar por utilizar os recursos interativos do PhpMyAdmin, como 
fizemos anteriormente com a tabela “funcionarios” após sua criação, ou 
pode executar o seguinte comando DDL sobre a tabela “departamentos”: 
ALTER TABLE `departamentos` ADD PRIMARY 
KEY(`numdepto`); 
 
Isto faz o mesmo que a seguinte ação no painel da aba “Structure” da 
tabela “departamentos”. 
 
 
Figura 3 - Transformando "numdepto" em chave primária da tabela "departamentos". 
 
Agora que o MySQL já sabe que a chave primária da tabela 
“departamentos” é a coluna “numdepto”, que tem o mesmo tipo e 
tamanho da coluna “depto” da tabela “funcionarios” , só falta mesmo 
avisar a ele que, na tabela “funcionarios”, essa coluna será a chave 
estrangeira da tabela “departamentos”. 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 13 
 
 
Há duas maneiras de se fazer 
isto. A mais simples é, como de 
costume, utilizando a interface 
do PhpMyAdmin, e a outra é 
utilizando o comando ALTER 
TABLE para adicionar as chaves 
estrangeiras. Vamos iniciar pela 
mais simples: 
Selecione a tabela “funcionarios” 
e, logo em seguida, clique na aba 
“Structure”. Lá, você irá perceber 
a aparição de um botão intitulado 
“Relation view” (ou traduzindo, 
visão do relacionamento da 
tabela). Não o localizou? Veja na 
figura 4 (ao lado). 
 
Uma vez clicado, você deverá estar visualizando a seguinte imagem: 
 
 
Figura 5 - Painel de construção de integridades referenciais (ou " Constraints"). 
 
Neste painel é possível criarmos quantas relações de integridade 
referencial desejarmos. Como nossas tabelas-exemplo só dispõem de 
uma alternativa para chave estrangeira, vamos criar apenas um 
relacionamento, intitulado, por exemplo, de 
“FuncionariosDepartamentos”, como demonstrado na figura seguinte: 
 
Figura 4 - Botão "Relation view" na aba "Strcture" da tabela "funcionarios". 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 14 
 
 
 
 
Figura 6 - Preenchimento dos campos para criação do relacionamento "DeptoFunc". 
 
Como podemos observar na figura acima, podemos adicionar outras 
associações entre as tabelas. Mas a associação que mais nos interessa 
agora é a que relaciona a coluna “depto” da tabela “funcionarios” à 
coluna “numdepto” da tabela “departamentos”. 
Perceba, pelo exposto na figura 6, que foi o que descrevemos nas 
seleções realizadas. Referimo-nos especificamente aos quatro últimos 
campos do painel ilustrado anteriormente. 
Mas, e quanto aos três primeiros campos? Simples. O primeiro é o que 
pede o nome deste novo relacionamento que está sendo criado: 
“Constraint name”. Nele, digite o nome do relacionamento: “DeptoFunc”. 
Os outros dois campos apresentam as seguintes funcionalidades para o 
relacionamento que estamos criando neste momento: 
 ON DELETE: este campo, que representa uma cláusula do comando ALTER 
TABLE (como veremos adiante), descreve o que deve acontecer com as 
tabelas associadas quando houver uma operação de deleção de linhas 
envolvendo dados relacionados. 
 ON UPDATE: analogamente, este campo descreve o que acontecerá 
quando um dado relacionado a outra tabela, como chave -estrangeira, for 
atualizado. 
Em ambos os casos, o menu cortina que desce é o mesmo, ou seja, é o 
apresentado na figura 7 ao lado. Vamos descrever cada uma dessas 
situações: Figura 7 - Opções de 
"Constraints". 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 15 
 
 
 
 RESTRICT: este parâmetro, que pode estar descrito em uma cláusula “ON 
DELETE” ou “ON UPDATE”, não permite a remoção de registros ou a 
alteração de dados que possuamrelacionamentos em outras tabelas . 
 CASCADE: no caso de estar descrito em uma cláusula “ON DELETE”, ao se 
remover um registro da tabela referenciada pela chave estrangeira , os 
registros relacionados àquele removido serão eliminados em todas as 
tabelas relacionadas. Situação análoga ocorre quando se altera um dado 
de uma tabela que se relaciona com outra, no caso de ter-se utilizado o 
parâmetro “ON UPDATE”. Em resumo, o parâmetro “CASCADE” repercute 
deleções e atualizações em cascata nas tabelas relacionadas. 
 SET NULL: este parâmetro, diferentemente do “CASCADE”, atribui o valor 
nulo às colunas relacionadas em outras tabelas, sempre que houver 
deleção (e a clausula “ON DELETE” for utilizada) ou atualização do dado 
relacionado (e a cláusula “ON UPDATE for utilizada). 
 NO ACTION: este parâmetro simplesmente não faz nada ao ser deletada 
uma linha ou atualizada uma coluna com dados relacionados em outras 
tabelas. 
 
Isto que acabamos de fazer na interface do PhpMyAdmin equivale à 
execução do seguinte comando em linguagem DDL: 
 
ALTER TABLE `funcionarios` 
 ADD CONSTRAINT `DeptoFunc` 
 FOREIGN KEY(`depto`) 
 REFERENCES departamentos`(`numdepto`) 
 ON DELETE RESTRICT 
 ON UPDATE RESTRICT 
; 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 16 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Vamos testar a nossa integridade referencial? A figura a seguir ilustra um 
procedimento de inserção de nova linha na tabela “funcionarios”. Veja o 
que ocorre quando tentamos cadastrar um novo funcionário pertencente 
a um departamento que ainda não existe na tabela “departamentos”: 
 
Figura 8 - Comando INSERT sendo executado na tabela "funcionarios" pela interface do PhpMyAdmin, 
na aba "Insert". 
 
Ao executar este comando, o MySQL muito provavelmente 
irá exibir alguma mensagem de erro, caso encontre alguns 
dados nas duas tabelas que violem a regra de integridade 
referencial que acaba de ser especificada no comando 
ALTER TABLE. Recomendamos que, caso isto ocorra, você 
aborte o procedimento e verifique manualmente os dados 
cadastrados. Se a tabela estiver povoada com poucos 
registros, talvez compense a deleção de todas as linhas 
para começar tudo do zero. 
NOTA 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 17 
 
 
Traduzindo a mensagem de erro #1452: 
“não é possível adicionar ou atualizar uma linha filha, pois a regra de 
integridade referencial da chave-estrangeira falhou”. 
 
Observe ainda que, na interface da mensagem de erro, é possível clicar 
em um link para editar diretamente o comando SQL. Perceba ainda que, 
ao término da linha reservada para o campo “depto” no formulário de 
inserção é possível navegar pelos valores cadastrados na tabela 
“departamentos”. Para isto, basta clicar no link “Browse foreign v alues”, 
como ilustrado na figura apresentada anteriormente. 
Se a tabela “departamento” estiver vazia, você terá que povoá -la antes de 
cadastrar os funcionários. 
 
 
 
 
 
 
 
1.2 Comando SELECT 
 
Chegamos ao ponto mais alto de nossa disciplina. O comando SELECT foi 
o que deu origem à linguagem SQL, e que é capaz de gerar as consultas 
dinâmicas e estáticas em um banco de dados, usando mais de uma 
tabela relacionadas entre si. 
O comando SELECT suporta muitas outras declarações aninhadas, 
incluindo funções dentro de suas declarações sintáticas. E por falar em 
sintaxe, podemos generalizá-la de forma representativa da seguinte 
maneira: 
SELECT <lista de campos> 
 FROM <nome da tabela> 
 [WHERE <condição>] 
 [ORDER BY <lista de campos>] 
Agora é com você. Estude, na prática, o comportamento de 
cada cláusula com cada parâmetro descrito 
anteriormente. 
ATIVIDADES 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 18 
 
 
 [...]; 
Onde: 
 FROM: cláusula que define de onde os dados devem ser extraídos para 
comporem a consulta, no caso o nome da tabela, referenciada ou não 
pelo nome do banco de dados. 
 WHERE: cláusula que define a expressão lógica que resultará nas linhas a 
serem exibidas na consulta. 
 ORDER BY: determina a lista de campos-chaves da consulta, na ordem em 
que devem aparecer. 
 [...]: Outras cláusulas. 
Para entendermos melhor como funciona este comando, vamos 
exemplificar uma série de situações para a elaboração de consultas, 
começando por algumas consultas simples sobre a primeira tabela com a 
qual vínhamos trabalhando: “funcionarios”. 
 
Figura 9 - Massa de dados para teste em "funcionarios". 
 
Queremos consultar apenas os funcionários do departamento 2 que 
ganham mais de R$ 4.000,00. Neste caso, poderíamos construir a 
seguinte consulta SQL: 
SELECT * FROM funcionarios 
 WHERE depto=2 AND salario>4000 
 
Executando esta consulta no PhpMyAdmin, por exemplo , teremos: 
 
Figura 10 - Resultado da consulta SQL. 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 19 
 
 
Mas, imagine se quiséssemos incluir, nesta consulta, o nome do 
departamento, ao invés de seu código! Neste caso, teríamos de e nvolver 
uma segunda tabela neste comando SELECT, como por 
exemplo: 
 
SELECT matric, nome, depto, 
 departamentos.nomedepto, 
 salario, telefone 
 FROM departamentos INNER JOIN funcionarios ON 
 departamentos.numdepto=funcionarios.depto 
 WHERE depto=2 AND salario>4000 
 
 
Figura 11 - Resultado da consulta com as duas tabelas: "funcionarios" e "departamentos". 
 
Foram utilizadas as cláusulas INNER JOIN e ON para relacionar as duas 
tabelas envolvidas. Perceba que o campo “nomedepto” teve que ser 
antecedido do nome da tabela, seguido de um ponto, para identificar a 
sua origem. 
 
 
 
 
 
 
 
 
1.2.1 Funções do MySQL 
 
Veremos a partir de agora algumas funções úteis, residentes no MySQL, que 
podem ser utilizadas na cláusula WHERE de consultas SQL. 
Note que foi utilizada a cláusula INNER JOIN logo após a 
cláusula FROM, com o objetivo de unir as duas tabelas: 
“funcionarios” e “departamentos”. Mas, se deixássemos 
assim, o comando SELECT retornaria simplesmente a 
união das duas tabelas. Logo, foi utilizado um parâmetro 
condicional logo após a cláusula ON, que restringiu a 
consulta à exibição apenas das linhas em que o número 
do departamento fosse o mesmo em ambas as tabelas. 
EXPLICANDO MELHOR 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 20 
 
 
 NOW(): retorna a data e a hora do servidor MySQL. 
 CURDATE(): retorna a data do servidor MySQL. 
 CONCAT(): retorna a concatenação de uma série de campos e expressões string. 
Exemplo: SELECT matric, CONCAT(“Nome: “, nome), salario FROM funcionarios. 
 COUNT(): retorna a contagem ao invés das linhas de uma consulta SQL, como no 
seguinte exemplo: SELECT COUNT(*) FROM funcionarios. 
 SUM(): retorna o somatório de todos os valores de determinada coluna, por 
exemplo: SELECT SUM(salario) FROM funcionarios. 
 AVG(): retorna a média aritmética de todos os valores de determinada coluna, 
como por exemplo: SELECT AVG(salario) FROM funcionarios . 
 ROUND(): arredonda os valores resultantes em seu argumento, com a seguinte 
sintaxe: ROUND(val, #), onde “val” é o resultado do valor a ser arredondado, e # 
significa a quantidade de casas decimais a serem consideradas no 
arredondamento. Exemplo: SELECT ROUND(AVG(salario),2) FROM funcionarios . 
 FORMAT(): converte um determinado valor no formato monetário, com a seguinte 
sintaxe: FORMAT(val, #), onde “val” é o valor a ser formatado e # é a quantidade 
de casas decimais a ser considerada neste formatomonetário. Por exemplo: 
FORMAT(4000,2)  4,000.00. 
 RAND(): retorna uma linha aleatória dentro de uma tabela. Esta função deve ser 
utilizada dentro de cláusula ORDER BY, como neste exemplo: SELECT nome, 
salario, depto FROM funcionarios ORDER BY RAND() LIMIT 1 . Esta última cláusula 
utilizada tem por finalidade restringir a quantidade de linhas a ser exibida. No 
caso, apenas uma linha será exibida aleatoriamente. 
 
 
 
 
 
 
 
O MySQL ainda oferece outras funções. Quer saber? Vá até 
o próximo “Saiba Mais” e descubra. 
NOTA 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 21 
 
 
1.2.2 Comandos SELECT encadeados 
 
É possível utilizarmos vários comandos SELECT encadeados ou aninhados. Para 
exemplificar, analise o exemplo a seguir: 
SELECT * FROM funcionarios 
 WHERE depto=2 AND salario>4000 
 
Esta consulta, como já apresentada anteriormente, traz as linhas da tabela 
“funcionarios” correspondentes aos funcionários do departamento 2, e que, 
simultaneamente, recebem salários superiores a quatro mil reais. Agora analise 
esta outra forma de escrever esta mesma consulta: 
SELECT * FROM 
 (SELECT * FROM funcionarios 
 WHERE salario>4000) 
WHERE depto=2 
 
Perceba que o resultado desta consulta deverá ser o mesmo. No entanto, 
primeiramente o MySQL executará a consulta mais interna, que retornará apenas 
os funcionários que ganham mais de quatro mil reais. Na sequência, este 
resultado será submetido à consulta mais externa, que somente considerará os 
que pertencerem ao departamento de número 2. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 22 
 
 
 
Considerações Finais 
SAIBA MAIS: 
 
Quer se aprofundar nos temas desta aula? Recomendamos o acesso 
à seguinte fonte de consulta e aprofundamento: 
Manual HTML: “Funções da MySQL”, acessível pelo link: 
http://php.net/manual/pt_BR/ref.mysql.php (Acesso em 12/12/2017). 
 
 
 
 
 
Atividades de Autoaprendizagem 
ATIVIDADES: 
Pronto para consolidar seus conhecimentos? Leia atentamente o 
enunciado de sua atividade de autoaprendizagem proposta para esta 
aula. Se você está fazendo o seu curso presencialmente, é só abrir o 
seu caderno de atividades. Se você estiver cursando na modalid ade de 
EAD (Educação a Distância), acesse a sua trilha de aprendizagem no seu 
ambiente virtual e realize a atividade de modo online. Você pode 
desenvolver esta atividade sozinho ou em parceria com seus colegas de 
turma. Dificuldades? Poste suas dúvidas no fórum de discussões em seu 
ambiente virtual de aprendizagem. Concluiu a sua atividade? Submeta o 
resultado em uma postagem diretamente em seu ambiente virtual de 
aprendizagem e boa sorte! 
 
 
 
Questionário Avaliativo 
TESTANDO: 
Chegou a hora de você provar que aprendeu tudo o que foi abordado ao 
longo desta aula. Para isto, leia e resolva atentamente as questões do 
seu caderno de atividades. Se você estiver fazendo este curso a 
distância, acesse o QUIZ (Banco de Questões) em seu ambiente virtual 
de aprendizagem. 
 
http://php.net/manual/pt_BR/ref.mysql.php
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 23 
 
 
Bibliografia 
 
PHP. (12 de Dez de 2017). Funções da MySQL . Fonte: PHP Documentation: 
http://php.net/manual/pt_BR/ref.mysql.php 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 24

Continue navegando