No tópico passado vimos como podem ser usados os operadores AND, OR e NOT. Agora vamos falar de outros três, também
muito importantes, que são o BETWEEN, o IS e o IN.
Fazendo um resumo rápido deles, seus papéis são:
- BETWEEN – Especificar um intervalo a ser
procurado
- IS – Tratar campos cujos dados são nulos
- IN – Verifica se uma condição ou um valor fazem parte de determinado grupo de valores especificados.
Vamos começar demonstrando o operador BETWEEN, mas antes, só para relembrarmos a estrutura
e o conteúdo da nossa tabela de clientes, vamos fazer um select em alguns campos:
SELECT nome AS Nome, email AS Email, idade AS Idade FROM cliente;
Muito bem. Agora vamos utilizar o operador BETWEEN para especificar que queremos
resultados apenas com idades entre 30 a 45 anos.
SELECT nome AS Nome, email AS Email, idade AS Idade FROM cliente WHERE idade BETWEEN 30 AND 45;
Vejam que o SGBD só nos retornou os dados de clientes cujas idades se encontravam no
intervalo que especificamos.
Antes de falar sobre o operador IS é preciso fazer alguns esclarecimentos. Devemos
entender o conceito de NULL.
O que é valor NULL?
Quando um SGBD não possui valor algum armazenado em algum campo, ele insere um valor definido como NULL, ou seja, é a ausência total de valor.
O MySQL especifica isso claramente em suas consultas. Vou fazer uma inserção em nossa tabela de clientes e,
propositalmente não vou inserir dados em alguns campos, como "endereço" e "idade".
INSERT INTO (telefone, nome, email, cpf) VALUES ("1234-1234", "Rodrigo",
"rodrigo@emailinexistente.com", "389476625-11");
Agora vou dar um SELECT apenas nesse cliente:
SELECT * FROM cliente WHERE nome LIKE 'Rodrigo';
Só como observação, o Oracle também exibe o valor NULL para especificar campos com ausência de dados, mas o SQL Server
não exibe nada nesses campos, então se você estiver fazendo uso desse SGBD da Microsoft, fique sempre atento e não
confunda um valor NULL com uma string vazia “”. A string vazia está lá! Ela existe! O valor NULL representa ausência total de informação.
Muito bem, agora que já sabemos o que é um campo NULL, vamos a um exemplo prático. Imaginem que queiramos exibir dados
como "nome", "email" e "idade" de todos os usuários cujas idades cadastradas no banco NÃO sejam nulas. Nosso comando
ficará assim:
SELECT nome AS Nome, email AS Email, idade AS Idade FROM cliente WHERE idade IS NOT NULL;
Percebam que os dados do cliente "Rodrigo", cuja idade está cadastrada como nula, não foram exibidos. Agora vou
inverter o comando, para que SOMENTE as idades nulas sejam exibidas.
SELECT nome AS Nome, email AS Email, idade AS Idade FROM cliente WHERE idade IS NULL;
Notem que agora apenas os dados do cliente Rodrigo, cuja idade é nula no banco, foram
exibidos.
Apenas para citar outro exemplo importante desse operador, mas que não veremos agora para não interromper a ordem dos
assuntos, nós poderíamos querer fazer a média de todas as idades efetivamente cadastradas no sistema, desconsiderando os usuários cujos valores desse campo sejam nulos. Isso seria facilmente
realizado com a verificação de “IS NOT NULL”, conforme utilizamos aqui. Mas voltaremos a falar dela no futuro.
Para encerrar, vou demonstrar o operador IN em ação. Como foi dito no início deste
tutorial, ele nos permite efetuar uma busca dentre alguns elementos pré-determinados. Como nossa base de dados também
possui a tabela "filme", vamos inserir alguns dados nela para que não usemos sempre a tabela cliente nas
demonstrações.
INSERT INTO filme VALUES (“Drama”, “Cidade de Deus”, 1);
INSERT INTO filme VALUES (“Drama”, “O Pianista”, 2);
INSERT INTO filme VALUES (“Drama”, “Sangue Negro”, 3);
INSERT INTO filme VALUES (“Infantil”, “Shrek”, 4);
INSERT INTO filme VALUES (“Aventura”, “Quase Famosos”, 5);
INSERT INTO filme VALUES (“Aventura”, “Avatar”, 6);
INSERT INTO filme VALUES (“Terror”, “Sexta-Feira 13”, 7);
INSERT INTO filme VALUES (“Terror”, “Brinquedo Assassino”, 8);
Nossa tabela de filmes agora possui os seguintes dados:
Agora vamos imaginar que queiramos efetuar uma consulta nos filmes do gênero "Drama". Podemos fazer isso com o
operador IN da seguinte forma:
SELECT * FROM filme WHERE genero IN (‘Drama’);
Poderíamos ainda especificar mais de um gênero, apenas separando-os por vírgulas dentro
dos parênteses, dessa forma:
SELECT * FROM filme WHERE genero IN ('Drama', 'Terror');
Agora foram exibidos tanto os filmes do gênero Drama quanto Terror. Bem, mas aí você, que está bem atento a todos os
tópicos pode pensar que é desnecessário utilizar o operador IN, pois poderíamos obter o mesmo resultado com o LIKE e o
OR, da seguinte maneira:
SELECT * FROM filme WHERE genero LIKE ‘Drama’ OR genero LIKE
‘Terror’;
Vamos executar:
Realmente é fácil notar que as tuplas retornadas pelo banco são as mesmas. Para essa consulta, considerada simples, o IN pôde ser substituído pela combinação LIKE + OR, mas existirão situações em que isso não será possível, quando as consultas não forem tão simples e estiverem envolvendo mais de uma tabela. Chegaremos lá! Por enquanto apenas acredite que o operador IN é muito importante.
HARDWARE
Entendendo o seu computador
O que há dentro do meu computador?
Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.
Você Sabia?
Mario e seu bigode
O personagem Mario só possui bigode porque quando ele foi criado, em 1981, a resolução de tela dos equipamentos disponíveis não permitia que fosse desenhada uma boca, então os desenvolvedores fizeram o grande bigode para contornar essa limitação tecnológica.
Tetris
Desde o seu lançamento, em 1985, o fantástico jogo Tetris vende pelo menos 70 milhões de unidades por ano em todo o mundo! Os dados são oficiais e fornecidos pela THQ, uma das distribuidoras do título.
Duck Hunt
Ao completar o nível 99 do jogo Duck Hunt, para Nintendo, o jogo retorna ao primeiro nível, mas um bug impede que se acerte os patos neste recomeço. Este é um exemplo do que é chamado no mundo dos games de "Kill Screen".
Asteroids
O título Asteroids, do Atari, possui recorde de pontuação há 30 anos. Em 1982 um americano chamado Scott Safran atingiu a marca de 41.336.440. Atualmente ele faz parte de um minúsculo grupo de jogadores que conseguiram manter seus recordes por mais de 30 anos.
Computadores de 1,5 tonelada
Em 1949 a revista Popular Mechanics fez uma previsão para o futuro, dizendo: "Um dia os computadores pesarão menos do que 1,5 tonelada". E pensar que temos smartphones capazes de realizar milhões de vezes mais operações do que os computadores daquela época.
River Raid
O épico jogo River Raid, do Atari, foi desenhado e boa parte de sua programação foi feita por uma mulher: Carol Shaw, uma excelente programadora e funcionária da Activision em 1982. Saiba mais sobre a história deste incrível jogo, aqui.
Space Invaders
O título Space Invaders, lançado em 1980, fez tanto sucesso em todo o mundo que as pessoas compravam o console Atari apenas para poderem jogá-lo em casa. Saiba mais sobre este incrível título clicando aqui.
Mario em Donkey Kong
O personagem Mario surgiu pela primeira vez no mundo dos games em um jogo chamado Donkey Kong, lançado em 1981. Mario, que naquela época se chamava Jumpman, não era o personagem principal do jogo, mas ele se tornaria um dos mais famosos personagens do mundo dos games. Saiba mais.
Música tema do Blanka
Até a primeira metade dos anos 90 era bastante comum que as trilhas sonoras dos games fossem criadas por mulheres e a responsável pelas músicas do clássico Street Fighter 2 foi Yoko Shimomura. Segundo ela, o ritmo "Tararirarin" da música tema do personagem Blanka, do Brasil, veio à sua cabeça enquanto ela estava no trem a caminho da Capcom.
PDP-1
O primeiro computador a conseguir rodar o jogo Spacewar era o PDP-1, que custava 120 mil dólares e pertencia ao Massachusetts Institute of Technology. O jogo demorou 200 horas para ser desenvolvido, em 1962, e seu criador foi um cientista da computação chamado Steve Russel.
Recorde de patentes
A IBM detém o recorde de patentes em um único ano, atingindo a marca de 4186 registros no ano de 2008. Clique aqui e saiba mais sobre esta gigante do mundo da tecnologia.