AS EMPRESAS ESTÃO "DESESPERADAS" POR ESTE TIPO DE PROFISSIONAL... - VOCÊ É UM DELES?

MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI - O Conhecimento que Vira Dinheiro - CLIQUE AQUI

Você está em: PrincipalArtigosLivrodelphibd › Capítulo 1 : 03
Quer receber novidades e e-books gratuitos?
« Anterior Δ Página principal ¤ Índice Próxima »
Delphi com Banco de Dados
Autor: Rodrigo Costa e Silvio Ferreira
Lição 03 de 33 - Instrução SELECT

No capítulo anterior aprendemos um pouco sobre modelagem de dados e vimos como criar tabelas e relacionamento. Agora iremos aprender como recuperar dados de uma tabela ou de várias tabelas através da famosa instrução SELECT.

O comando SELECT faz parte da linguagem SQL (Structured Query Language ou Linguagem de Consulta Estruturada) que é o “idioma” padrão para todos os Sistemas Gerenciadores de Banco de Dados (SGBD’s), ou seja, é a língua falada por todos os bancos de dados. Não confunda “SQL” com “SQL Server”, pois “SQL” é a linguagem dos bancos de dados em geral, enquanto “SQL Server” é o software da Microsoft. A linguagem SQL é utilizada por todos os SGBD’s do mercado como Oracle, DB2, SYBASE, Interbase, MySQL, Postgree e é claro, o SQL Server.

Entretanto, cada um destes softwares adiciona à linguagem SQL um conjunto de funcionalidades que lhe são particulares. Em virtude disso, cada empresa cria uma nova linguagem a partir da linguagem SQL padrão. Por exemplo, a linguagem para manipulação de banco de dados no SQL Server é o Transact-SQL ou simplesmente T-SQL, já a linguagem do Oracle é o PL/SQL. Apenas para ilustrar esta situação, veja abaixo como seriam os comandos para recuperar os primeiros 10 registros de uma tabela no SQL Server e no Oracle.

SQL Server (T-SQL): “SELECT TOP 10 * FROM TABELA”
Oracle (PL/SQL): “SELECT * FROM TABELA WHERE ROWNUM <= 10”

Se quiséssemos simplesmente recuperar todos os registros da tabela, o comando seria o mesmo tanto para o SQL Server quanto para o Oracle, pois utilizaríamos apenas o SQL padrão:

“SELECT * FROM TABELA”

De uma forma geral, se você conhecer bem a linguagem SQL padrão, não terá dificuldades em utilizar um ou outro SGBD, você apenas precisará aprender as funções específicas de cada software.

A principal ferramenta do SQL Server para trabalharmos com a linguagem SQL é o Query Analyzer que conhecemos anteriormente neste curso. Portanto, execute-o para que iniciemos nosso aprendizado em SQL.

A instrução SELECT é o comando utilizado para recuperar dados de uma ou mais tabelas de um banco de dados. Através deste comando é que conseguimos visualizar tudo o que está gravado no banco de dados.
Utilizaremos o banco de dados Rodoviaria (que acabamos de criar) como cobaia em nossos estudos. Mas antes de começarmos, precisamos alimentar as tabelas do banco Rodoviaria, pois as mesmas estão vazias e tabelas vazias não servem para muita coisa.

Selecione o banco de dados Rodoviaria na caixa de seleção de banco de dados e em seguida digite as linhas abaixo:

INSERT INTO EMPRESAS VALUES (101,'FLORES');
INSERT INTO EMPRESAS VALUES (102,'REGINAS');
INSERT INTO EMPRESAS VALUES (103,'MASTER');
INSERT INTO EMPRESAS VALUES (104,'RUBANIL');
INSERT INTO EMPRESAS VALUES (105,'REAL');

INSERT INTO MOTORISTAS VALUES (341,'Paulo Roberto',35,'M',1200);
INSERT INTO MOTORISTAS VALUES (342,'Anderson Moraes',24,'M',1150);
INSERT INTO MOTORISTAS VALUES (343,'Fernando Santana',28,'M',1170);
INSERT INTO MOTORISTAS VALUES (344,'Carlos Paiva',40,'M',1320);
INSERT INTO MOTORISTAS VALUES (345,'Alberto Araújo',25,'M',890);
INSERT INTO MOTORISTAS VALUES (346,'Jorge Luiz',43,'M',1400);
INSERT INTO MOTORISTAS VALUES (347,'Maria Padilha',29,'F',900);
INSERT INTO MOTORISTAS VALUES (348,'Claudia da Silva',32,'F',1000);
INSERT INTO MOTORISTAS VALUES (349,'Jeferson Gomes',30,'M',1380);
INSERT INTO MOTORISTAS VALUES (350,'Felipe Castro',19,'M',650);

INSERT INTO ONIBUS VALUES (2451,101,341,'Nova Iguaçu x Caxias');
INSERT INTO ONIBUS VALUES (2452,101,342,'São João X Praça XV');
INSERT INTO ONIBUS VALUES (2453,101,343,'Mesquita X Praça Mauá');
INSERT INTO ONIBUS VALUES (4213,102,344,'Pavuna X Castelo');
INSERT INTO ONIBUS VALUES (4214,102,345,'Nova Iguaçu X Pavuna');
INSERT INTO ONIBUS VALUES (4215,102,346,'Caxias X São João');
INSERT INTO ONIBUS VALUES (4216,102,347,'Nilópolis X Caxias');
INSERT INTO ONIBUS VALUES (5987,103,348,'Queimados X Pavuna');
INSERT INTO ONIBUS VALUES (5988,103,349,'Campo Grande X Caxias');
INSERT INTO ONIBUS VALUES (1702,104,350,'São João X Itaguaí');

Digite todas as linhas mesmo sem entender o que está digitando. Estas linhas são comandos de inserção de dados através da instrução INSERT que iremos aprender mais adiante neste curso.

Após digitar os comandos acima, sua tela deve ficar semelhante à exibida na figura a seguir:

Quando reunimos um conjunto de comandos SQL (como o que acabamos de fazer), damos o nome de script. Um script de banco de dados nada mais é do que uma seqüência de comandos SQL que serão executados todos de uma só vez.
Para executar os comandos que acabamos de digitar, basta clicar sobre o botão “Execute” ou pressionar F5 no teclado.

Após executar o script, o Query Analyzer exibirá o painel de resultados. Se você digitou corretamente as linhas acima, deverá ser exibido o texto “(1 row(s) affected)” para cada INSERT realizado.

No Query Analyzer você pode salvar seu script em arquivo do tipo texto com a extensão “.sql”. Para salvar o script recém criado, clique em File > Save.

Defina um nome para o arquivo e onde o mesmo será gravado, em seguida clique em Salvar.

É muito interessante você salvar seus scripts, pois nunca se sabe quando vai precisar deles novamente. Para abrir um script gravado, basta clicar em File > Open, selecionar o arquivo desejado e clicar em Abrir.

O Query Analyzer também permite que você trabalhe com várias janelas simultaneamente. Você pode abrir novas janelas através da opção New Query.

Vamos afinal, conhecer o comando SELECT. Feche a janela do script que executamos para popular o banco de dados Rodoviaria e deixe apenas uma janela limpa aberta.

A sintaxe básica do comando SELECT é a seguinte:

Por exemplo, para recuperar o nome dos motoristas o comando seria:

SELECT NOME FROM MOTORISTAS

Digite o comando acima no Query Analyzer e clique em “Execute Query” ou pressione F5 no teclado. Veja que o SQL Server retorna todos os nomes cadastrados na tabela Motoristas.

OBS.: Os comandos SQL podem ser escritos em letras maiúsculas ou minúsculas, pois o SQL Server não se importa com isso. Os comandos estão em letras maiúsculas neste livro apenas por uma questão de preferência.

Para recuperar mais de uma coluna da tabela você deve digitar o nome de cada coluna separado por vírgula. Por exemplo, para obter o nome, a idade e o sexo dos motoristas, o comando seria o seguinte:

SELECT NOME,IDADE,SEXO FROM MOTORISTAS

O resultado do comando acima é apresentado abaixo:

Como podemos perceber, o comando SELECT é muito fácil de entender. Você praticamente escreve (em inglês) o que você quer e o SQL Server te entrega. Desta forma, o comando que acabamos de executar “SELECT NOME,IDADE,SEXO FROM MOTORISTAS” pode facilmente ser lido assim: “Selecione as colunas nome, idade e sexo da tabela motoristas”.

Para selecionar todas as colunas de uma tabela, você pode digitar o nome de cada uma delas separado por vírgula ou simplesmente colocar um asterisco “*” no lugar dos nomes das colunas. Por exemplo, para obter todas as colunas da tabela Motoristas, o comando seria o seguinte:

SELECT NUM_MOTORISTA, NOME, IDADE, SEXO, SALARIO FROM MOTORISTAS

Entretanto, poderíamos obter o mesmo resultado com o seguinte comando:

SELECT * FROM MOTORISTAS

O símbolo asterisco (*) representa todas as colunas de uma tabela, sendo assim, sempre que quiser obter todas as colunas de uma tabela basta colocar um asterisco ao invés de digitar o nome de todas as colunas.

Você pode atribuir um título para cada coluna retornada em sua consulta caso não deseje que título seja o próprio nome da coluna. Por exemplo, se ao invés de aparecer “num_motorista” você quiser que apareça “Número do Motorista”, você então deverá utilizar um apelido. Exemplo:

SELECT NUM_MOTORISTA AS 'NÚMERO DO MOTORISTA', NOME FROM MOTORISTAS

Você pode atribuir um apelido para cada coluna da consulta, isto é bem interessante para gerar relatórios com títulos de coluna mais descritivos. Abaixo mais um exemplo de utilização de apelidos.

Além da sintaxe básica da instrução SELECT que recupera todos os registros de uma tabela, podemos utilizar a cláusula WHERE para restringir o resultado desejado. Por exemplo, o comando “SELECT NOME FROM MOTORISTAS” devolve a coluna nome de todos os registros existentes na tabela Motoristas e se quiséssemos obter somente o nome dos motoristas que são do sexo Masculino, o comando seria:

SELECT NOME FROM MOTORISTAS WHERE SEXO = 'M'

O comando acima pode ser lido desta forma: “Obtenha o nome dos motoristas onde o sexo seja igual a ‘M’”. Para obter o nome dos motoristas que sejam do sexo Feminino basta alterar o valor M para F:

SELECT NOME FROM MOTORISTAS WHERE SEXO = 'F'

Na cláusula WHERE podemos restringir o resultado desejado impondo uma condição para o SQL Server onde ele só trará os registros que atendam à condição imposta. Caso não existam registros que atendam à condição imposta na cláusula WHERE o resultado será nulo. Exemplo: Execute o comando abaixo que tenta obter o nome dos motoristas que possuem sexo igual a B. Obviamente, não existe sexo igual a B e portanto o SQL Server não trará resultado.

A cláusula WHERE permite que você defina mais de uma restrição, para isto basta separar cada condição através do operador “AND”. Por exemplo, para obter os motoristas que sejam do sexo masculino e tenham mais de 30 anos, o comando seria o seguinte:

SELECT * FROM MOTORISTAS WHERE SEXO = 'M' AND IDADE > 30

Você também pode restringir o resultado de uma consulta utilizando o operador LIKE. Este operador permite que você crie uma condição parcial como aqueles casos em que não é possível utilizar os operadores “=” (igual) ou “<>” (diferente). Por exemplo, obter os motoristas cujos nomes comecem pela letra “A”. O operador LIKE é utilizado juntamente com o operador “%” (percentagem). O comando então seria:

SELECT * FROM MOTORISTAS WHERE NOME LIKE 'A%'

Para obter os motoristas cujo último nome seja “Silva”, o comando seria:

SELECT * FROM MOTORISTAS WHERE NOME LIKE '%Silva'

Outro exemplo de utilização do operador LIKE: Obter os ônibus que possuam o texto “São João” na coluna trajeto, ou seja, os ônibus que passam por São João. O comando seria:

SELECT * FROM ONIBUS WHERE TRAJETO LIKE '%São João%'

O SQL Server também permite que você ordene o resultado de uma consulta através da cláusula ORDER BY. Para ordenar o resultado de consulta basta incluir a cláusula ORDER BY e o nome da coluna no fim do comando SELECT. O ORDER BY sempre deve ser a última cláusula de uma instrução SELECT. Por exemplo, para obter todos os motoristas ordenando o resultado pelo nome:

SELECT * FROM MOTORISTAS ORDER BY NOME

A cláusula ORDER BY ordena o resultado por ordem alfabética caso a coluna seja do tipo texto ou caractere, se a coluna for numérica, o ORDER BY ordenará do menor para o maior. Você também pode definir se deseja ordenar em ordem ascendente ou descente, por exemplo, ordenar os funcionários por nome em ordem descendente seria:

SELECT * FROM MOTORISTAS ORDER BY NOME DESC

Para ordenar em ordem ascendente seria:

SELECT * FROM MOTORISTAS ORDER BY NOME ASC

OBS.: Se você não informar os parâmetros DESC ou ASC para a cláusula ORDER BY, o SQL Server assume o parâmetro ASC como padrão, ou seja, se você colocar ASC ou não colocar nada, dá no mesmo.

Para exemplificar um pouco mais, imagine que você precise gerar uma relação de todos os motoristas da Rodoviária ordenando-os do maior para o menor salário. O SELECT seria o seguinte:

SELECT * FROM MOTORISTAS ORDER BY SALARIO DESC

Você também pode ordenar por mais de uma coluna, por exemplo, ordenar por sexo em seguida por nome e depois por salário.

A linguagem SQL também fornece várias funções que são muito úteis no dia-a-dia do desenvolvimento de aplicações. Aqui iremos conhecer apenas as que serão necessárias a este curso.
Algumas funções SQL:

  • COUNT: Retorna a quantidade de registros;
  • MAX: Retorna o maior valor da coluna informada;
  • MIN: Retorna o menor valor da coluna informada;
  • SUM: Soma todos os valores da coluna informada;
  • AVG: Retorna a média de valores da coluna informada;

Vamos então exemplificar o uso de cada uma.

Exemplo COUNT - Quantidade de empresas da rodoviaria:

Exemplo COUNT - Quantidade de motoristas do sexo feminino:

Exemplo MAX - Maior salário dos motoristas:

Exemplo MAX - Maior idade dos motoristas:

Exemplo MIN - Menor idade e menor salário dos motoristas:

Exemplo SUM – Obter o somatório de todos os salários dos motoristas:

Exemplo AVG – Obter a média de idade dos motoristas:

Para ter um melhor aproveitamento das funções SQL disponíveis no SQL Server, é importante conhecer a cláusula GROUP BY. A cláusula GROUP BY tem por finalidade agrupar o resultado de um consulta. Vamos ver logo um exemplo de utilização do GROUP BY para ilustrar sua funcionalidade. Imagine que você precisasse emitir um relatório que informasse a quantidade de motoristas do sexo masculino e sexo feminino. Talvez você possa pensar que com dois comandos SQL você teria esta informação, exemplo:

SELECT COUNT(*) AS 'HOMENS' FROM MOTORISTAS WHERE SEXO = 'M'

SELECT COUNT(*) AS 'MULHERES' FROM MOTORISTAS WHERE SEXO = 'F'

Os comandos acima irão trazer a quantidade de motoristas do sexo masculino e feminino respectivamente. Entretanto existe uma maneira mais “inteligente” de fazer isso, e é através do GROUP BY que permitirá trazer as informações desejadas num único SELECT. Exemplo:

SELECT SEXO, COUNT(*) AS 'QTD' FROM MOTORISTAS GROUP BY SEXO

“Traduzindo” o comando acima: SELECIONE O SEXO E QUANTIDADE DE REGISTROS DA TABELA MOTORISTAS AGRUPANDO O RESULTADO PELA COLUNA SEXO.

Outro exemplo de uso do GROUP BY: relatório de média salarial dos motoristas por sexo, ou seja, queremos saber em média quem ganha mais: homem ou mulher?

No decorrer do curso veremos mais exemplos de utilização da cláusula GROUP BY.

Um outro assunto muito importante a ser abordado no aprendizado da instrução SELECT é a correlação de dados, os famosos JOINS. No capítulo anterior vimos como criar tabelas e seus relacionamentos, pois agora, vamos ver como recuperar dados de duas ou mais tabelas usando os relacionamentos existentes entre elas. Quando relacionamos uma tabela com outra numa instrução SELECT, dizemos que estamos fazendo um JOIN entre tabelas.
Para fazer JOINS de tabelas, você deve fazer uma comparação de uma ou mais colunas de uma tabela com uma ou mais colunas de uma outra tabela. Para este trabalho usaremos a instrução INNER JOIN. Vamos direto para a aplicação prática deste conceito.

Com base em nosso modelo de dados...

A coluna “cod_empresa” da tabela “Onibus” faz referência à coluna “cod_empresa” da tabela “Empresas”. Então, para saber o nome da empresa à qual cada ônibus pertence, precisaremos fazer um JOIN entre a tabela “Empresas” e a tabela “Ônibus”. O comando seria o seguinte:

SELECT ONIBUS.NUM_ONIBUS AS 'ÔNIBUS', EMPRESAS.NOME AS 'EMPRESA'
FROM ONIBUS INNER JOIN EMPRESAS
ON ONIBUS.COD_EMPRESA = EMPRESAS.COD_EMPRESA

Traduzindo o comando acima:

“SELECIONE A COLUNA NUM_ONIBUS DA TABELA ONIBUS E A COLUNA NOME
DA TABELA EMPRESAS
FAZENDO JOIN DA TABELA ONIBUS COM A TABELA EMPRESAS
ONDE A COLUNA COD_EMPRESA DA TABELA ONIBUS SEJA IGUAL À COLUNA COD_EMPRESA DA TABELA EMPRESAS”

Você deve ter percebido que quando temos mais de uma tabela numa instrução SELECT, devemos referenciar cada coluna dizendo à que tabela ela pertence, ou seja, devemos informar a “tabela.coluna” que queremos que seja retornado no SELECT.

Um outro exemplo, para conhecer o nome do motorista de cada ônibus, o SELECT seria o seguinte:

SELECT ONIBUS.NUM_ONIBUS AS 'ÔNIBUS', MOTORISTAS.NOME AS 'MOTORISTA'
FROM ONIBUS
INNER JOIN MOTORISTAS ON ONIBUS.NUM_MOTORISTA = MOTORISTAS.NUM_MOTORISTA

Já para recuperar o nome do motorista e o nome da empresa de cada ônibus, será preciso fazer JOIN da tabela Onibus com as tabelas Motoristas e Empresas, comparando os campos que implementam os relacionamentos. O SELECT seria:

SELECT ONIBUS.NUM_ONIBUS, MOTORISTAS.NOME AS 'MOTORISTA' ,EMPRESAS.NOME AS 'EMPRESA'
FROM ONIBUS
INNER JOIN MOTORISTAS ON ONIBUS.NUM_MOTORISTA = MOTORISTAS.NUM_MOTORISTA
INNER JOIN EMPRESAS ON ONIBUS.COD_EMPRESA = EMPRESAS.COD_EMPRESA

« Anterior Δ Página principal ¤ Índice Próxima »

* Você pode baixar (fazer download) do conteúdo completo deste curso, em formato PDF, com 334 páginas, comprando o seguinte e-book:

DELPHI COM BANCO DE DADOS

GRANDES DESTAQUES DO SITE:

Quer receber novidades e e-books gratuitos?

MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI

(Online, Vitalício, Prático e Atualizado)!

  • Chega de ser Ignorado pelo Mercado!

  • A vida não vai Melhorar Sozinha!

  • Quem domina infraestrutura, domina o Mercado.

  • Com esta Formação você vai Dominar o Conhecimento e torne-se o Profissional que as Empresas estão Buscando, "desesperadamente", mas não estão encontrando.

NÃO PROCURE VAGAS, SEJA PROCURADO!

 

Curso Completo de Excel - Curso Online com Certificado - 925 Vídeo Aulas - 22 Cursos - 120:42 horas

 

Para Todos os Detalhes, Acesse:

Curso Completo de Excel - Curso Online com Certificado - 925 Vídeo Aulas - 22 Cursos - 120:42 horas

 

https://juliobattisti.com.br/curso-infra-ti.asp

 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2026 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI