VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura. Utilizar variáveis em um programa do VB.Net exige algum planejamento. Antes de fazê-lo, você deve reservar memória no computador para utilização por sua variável. Esse processo é semelhante a fazer uma reserva de uma cadeira em um cinema ou evento esportivo. Afinal, o que são Variáveis? São posições reservadas na memória RAM em seu tempo de execução capazes de reter e representar um valor ou expressão armazenando informações para serem utilizadas pelo programa. Geralmente associadas a nomes, o qual chamamos de identificadores, durante seu tempo de execução. Os dados são armazenados nessas divisões da memória, sendo que em cada divisão só será possível armazenar um dado de cada vez e toda vez que um dado novo é armazenado em uma dessas divisões, o anterior é eliminado. Uma variável é composta por três elementos básicos: Conteúdo; Valor da variável; Identificador Um nome qualquer fornecido à variável para possibilitar sua utilização. Seus valores podem ser de diversos tamanhos e tipos, como: Números inteiros; Números reais; Caracteres; Frases, etc. Exemplo: Você possui um guarda-livros, ao comprar livros, colocamos na estante e quando desejamos ler, pegamos na estante. O computador trabalha da mesma forma, a memória RAM seria nossa estante e as variáveis os livros, criamos essas variáveis (compramos) e o computador armazena na memória. A única coisa que precisamos fazer é declarar o nome da variável e o seu tipo. Alguns tipos de variáveis mais usadas: Integer (inteiro): São números sem casas decimais, apenas com a parte inteira e são positivos ou negativos. Exemplo: 1, 2, 67, 999, -5, -999, etc. Real: São números com casas decimais, positivos, negativos e inteiros. Exemplo: 1, 2.3, 5.7, 78, - 2.5, -96.231, sendo necessário o uso PONTO ao invés da VÍRGULA para separar o inteiro do decimal. Char (caractere): São o armazenamento de apenas um caractere não compatíveis com os números inteiros e reais, que poderá ser uma: o Letra; o Número; o Símbolos (dependendo da linguagem). 1
String: São usados para se armazenar palavras, frases, números e etc., geralmente entre aspas simples ou duplas, dependendo da linguagem de programação. Exemplos: Isso é legal ; Seu nome é ; O número digitado foi ; A soma de 2 números resulta em... e a divisão de 2 números resulta no valor de. Exemplo prático de um programa usando 3 variáveis: Declaração de variáveis a: inteiro b: inteiro c: real Início do programa a <= 13 b <= 2 c = a / b Result (c) Fim do programa DECLARAÇÃO DE VARIÁVEIS A declaração de uma variável indica ao VB.Net a reserva de uma área para armazenamento na memória RAM referente a um dado de informações, e qual será o tipo desse dado. Temos três possibilidades de se declarar variáveis: 1. Inicializar a variável onde ela for necessária. O VB.Net trabalha com programação em alto nível, mais próximo do humano, e a declaração de variáveis não é obrigatória, um atribuído alocado ao valor da variável que assumirá o tipo mais adequado para o dado que está sendo armazenado, a isto chamamos de declaração implícita; 2. O mesmo método do item 01 poderá ser usado também se indicando o tipo da variável depois que for utilizado pela primeira vez; 3. Usar os comandos Dim, Static, Private ou Public para alocar o espaço na memória para a variável e indicar seu tipo. A sintaxe é a mesma para todos os comandos: <comando> Variável1, Variável2, Variável3,..., VariávelN As <tipo> ESCOPO DAS VARIÁVEIS São os pontos da aplicação de onde podemos acessar a variável. Seu escopo é determinado pelo comando usado em sua declaração (Dim, Static, Private ou Public): VARIÁVEIS LOCAIS: Reconhecidas apenas pela procedure 1 na qual foram declaradas. Diferentes procedures podem possuir variáveis locais com o mesmo nome sem causar conflitos, isto é possível porque quando uma procedure é finalizada, o conteúdo de suas variáveis locais será perdido, não sendo mais necessário. A declaração de variáveis locais é feita através dos comandos Dim ou Private. Importante: variáveis com declaração implícita serão sempre locais; VARIÁVEIS ESTÁTICAS (PARADAS): 1 PROCEDURE OU PROCEDIMENTO São coleções de instruções implementadas com linguagem SQL em subrotina ou funções. Geralmente são procedimentos manuais idealizados e documentados por analistas de sistemas e programadores que trabalham com banco de dados ou escrevendo o código-fonte de diversos softwares. São componentes fundamentais da maioria das aplicações. 2
São variáveis locais contidas em uma procedure cujo conteúdo será retido ao término dessa procedure. Quando a procedure que contiver uma variável estática for executada novamente, essa variável não é reinicializada e seu conteúdo será o mesmo da procedure que foi encerrada pela última vez. Para declarar uma variável como estática usa-se o comando Static; VARIÁVEIS PRIVADAS: Temos o compartilhamento de informações entre as procedures contidas em um mesmo módulo de programação 2 ou formulário. A declaração de variáveis privadas é feita com os comandos Dim ou Private na seção Declarations de um formulário ou módulo de programação; VARIÁVEIS PÚBLICAS: Disponíveis para todos os módulos de programação e formulários do aplicativo. Para a declaração de variáveis públicas usamos o comando Public. COMANDOS DE DECISÃO IF / ELSE Os comandos de decisão utilizados nos blocos de programação que verificam se uma situação é verdadeira ou falsa, para que determinada função possa ser verificada. IF = SE ELSE = SENÃO Then = Então Exemplo 01: If (Condição) Then Comandos Comandos End If Em nosso exemplo 01 o Visual Studio verificará o primeiro bloco, se o resultado da verificação for "TRUE" os comandos dentro do primeiro bloco serão executados, caso contrário ( = senão) executará o próximo bloco. Exemplo 02: Dim a As Integer = 10 Dim b As Integer = 15 Dim c As Integer = 20 Dim d As Integer = 25 If (a=b) Then Console.WriteLine ("Condição 1 verdadeira") Console.WriteLine ("Condição 2 verdadeira") End If Em nosso exemplo 02 a primeira condição tem o resultado de "FALSE", então será executada a segunda condição "Condição 2 verdadeira". 2 Módulo de programação ou Programação modular é uma forma de programação no qual o desenvolvimento das suas rotinas de programação é feito através de módulos interligados através de uma interface comum. 3
Nosso código poderá ter vários blocos para a verificação de condições, como no exemplo 03: Exemplo 03: Dim a As Integer = 10 Dim b As Integer = 15 Dim c As Integer = 20 Dim d As Integer = 25 If (a = b) Then Console.WriteLine ("Execute o primeiro bloco") If (a > d) Then Console.WriteLine ("Execute o segundo bloco") Console.WriteLine ("Execute o terceiro bloco") End If No exemplo 03 é mostrado a declaração mais de uma condição com o comando "If" ou seja "Senão Se". Nos exemplos: 01, 02 e 03, os primeiros blocos têm como resultado "FALSE", e se a condição tivesse como resultado "TRUE", os outros blocos serão ignorados pelo Visual Studio? Vamos verificar: Exemplo 04: Dim a As Integer = 10 Dim b As Integer = 15 Dim c As Integer = 20 Dim d As Integer = 25 If (a < b) Then If (a == b) Then Console.WriteLine ("Execute o primeiro bloco"); If (a > d) Then Console.WriteLine ("Execute o segundo bloco"); Console.WriteLine ("Execute o terceiro bloco"); End If} Console.WriteLine ("Ignore o bloco acima") End If No exemplo 04 temos um de bloco aninhado ou bloco dentro de outro bloco, para que o bloco interno seja executado, será necessário que o primeiro "IF" do bloco externo seja "TRUE", caso contrário será executado o "ELSE" do bloco externo, retornando um resultado "FALSE". Sql Structured Query Language - Apostila 5 - COMANDO SELECT (Seleções Simples) SUMÁRIO Apresentação do comando SELECT; Seleções Simples; Projeção; Restrição; 4
Cláusula WHERE; Condições; Operadores lógicos e relacionados; Precedências dos operadores; Operadores BETEEN, IN e IS; Seleções utilizando strings - operador LIKE. 5.1 - INTRODUÇÃO A linguagem SQL (Structured Query Language) é uma linguagem declarativa, ao contrário das linguagens tradicionais, que são do tipo procedimental. Permite ao usuário expressar aquilo que pretende sem ter que entrar em grandes detalhes sobre a localização física dos componentes, etc. Ao utilizarem a linguagem SQL, os usuários apenas indicam aquilo que pretendem sem dizer exatamente de que forma o computador terá que operar para obter os resultados solicitados. Por exemplo, ao indicar que se pretende apresentar o resultado de uma pesquisa de forma ordenada, apenas iremos adicionar ao comando de seleção a cláusula ORDER BY, não indicando qual o algoritmo de ordenação que o computador deverá utilizar. Embora as linguagens procedimentais sejam mais rápidas ao serem executadas, as linguagens declarativas são mais flexíveis, pois referenciam os seus elementos através de um nome compreensível e não através de uma posição física em disco ou memória. A linguagem SQL é constituída por três sublinguagens: DML Data Manipulation Language (SELECT, INSERT, UPDATE, DELETE, etc.); DDL Data Definition Language (CREATE, ALTER, DROP, etc.); DCL Data Control Language (GRANT, REVOKE, etc.). A linguagem SQL é orientada para o processamento de conjuntos (set-based language), algo que não se verifica com as linguagens mais tradicionais. Por exemplo, a linguagem COBOL era orientada para o processamento de arquivos. A consulta a qualquer banco de dados relacional é sempre realizada utilizando o comando SELECT sendo o comando mais utilizado e importante da linguagem. 5.2 COMANDO SELECT A sintaxe do comando SELECT é a seguinte: SELECT Campo 1, Campo 2,..., Campo 3, * FROM Tabela 1,, Tabela 2 [WHERE Condição] [GROUP BY ] [HAVING ] [ORDER BY ] Tradução: SELECIONE Campo 1, Campo 2,..., Campo 3, * A PARTIR DA Tabela 1,, Tabela 2 [ONDE Condição] [GRUPO POR ] [TENDO ] [ORDEM DE ] Como o leitor já deve estar habituado a ver, os colchetes, quando presentes na sintaxe de comandos, indicam que esse componente é facultativo, isto é, pode ou não ser utilizado. Assim, uma vez que as cláusulas: 5
[WHERE Condição] [GROUP BY ] [HAVING ] [ORDER BY ] são opcionais, os únicos componentes obrigatórios do comando SELECT são: SELECT Campo 1, Campo 2,..., Campo 3, * FROM Tabela 1,, Tabela 2 Neste capítulo abordaremos o comando SELECT nas suas utilizações mais simples, usando apenas os componentes do comando SELECT presentes no seguinte formato: SELECT...... FROM...... WHERE Condição 5.3 SELECIONANDO TODOS OS REGISTROS Analisemos a tabela Postal existente no nosso banco de dados Db.mdb, fornecida pelo autor deste livro, sendo composta por duas colunas denominadas Codigo e Localidade, para nome de tabelas em banco de dados não usamos nas palavras: acentos, cedilhas ou alguma espécie de pontuação. Postal Codigo Localidade 1000 LISBOA 1100 LISBOA 1200 LISBOA 1500 LISBOA 2000 SANTAREM 2300 TOMAR 3000 COIMBRA 4000 PORTO 9000 FUNCHAL Se quisermos obter toda a informação que existe na tabela, teremos de selecionar a informação existente nas colunas Codigo e Localidade da tabela Postal, isto é, pretendemos Selecionar o Codigo e a Localidade da tabela Postal, o que traduzido em inglês vem a ser o comando SQL pretendido. Sua sintaxe pode ser assim: SELECT Codigo, Localidade FROM Postal ou assim: SELECT Codigo, Localidade FROM Postal Não importa a ordem da escrita, desde que as cláusulas apareçam na ordem indicada pela sintaxe do comando. Comando válido para todos os SGBDR : Access; SQL Server; Oracle; MySQL. 5.4 SELECIONANDO TODAS AS COLUNAS Sua sintaxe seria a seguinte para a tabela Postal : SELECT * FROM Postal 6
Se for aplicado o mesmo critério de seleção a tabela do banco de dados Db.mdb, teremos o seguinte resultado: Sintaxe SELECT * Resultado: Id Nome Idade Salario Telefone Cod_Postal 5 Célia Morais 26 170000 123456 1100 14 Nascimento Augusto 35 220000 456123 2300 25 Paulo Viegas 32 95000 NULL 1500 32 Florinda Simões 35 147000 NULL 4000 37 Isabel Espada 28 86000 NULL 1100 42 António Dias 43 74000 789654 1500 49 José António 17 210000 NULL 1500 A ordem em que as colunas são apresentadas, é a ordem em que elas são colocadas na cláusula SELECT, em nosso exemplo, colocamos um asterisco (*) após o SELECT, indicando que será mostrado todo o conteúdo da tabela na ordem que foi criada. Para se indicar as colunas em uma ordem diferente, então precisamos indicar a ordem desejada: SELECT Nome, Id, Idade, Cod_Postal, Telefone, Salario Nome Id Idade Cod_Postal Telefone Salario Célia Morais 5 26 1100 123456 170000 Nascimento Augusto 14 35 2300 456123 220000 Paulo Viegas 25 32 1500 NULL 95000 Florinda Simões 32 35 4000 NULL 147000 Isabel Espada 37 28 1100 NULL 86000 António Dias 42 43 1500 789654 74000 José António 49 17 1500 NULL 210000 Com a sintaxe abaixo é possível selecionar mais de uma vez a mesma coluna, mas é um comando pouco usado e pode variar de um sistema para outro: SELECT Nome, Id, Nome, Idade, Id 5.7 OPERADORES RELACIONAIS Os operados relacionais permitem estabelecer relações entre elementos. O resultado da aplicação de um destes operadores é sempre será um valor lógico TRUE ou FALSE. Operador Descrição Exemplo Resultado = Igual a 7 = 5 FALSE > Maior que 7 > 5 TRUE < Menor que 7 < 5 FALSE >= Maior ou igual que 7 >= 5 TRUE <= Menor ou igual que 7 <= 5 FALSE <> (mais usado) ou!= Diferente 7 <> 5 TRUE 7
Exemplos de 1. Selecionar todas as s com 35 anos de Idade: SELECT * WHERE Idade = 35 Id Nome Idade Salario Telefone Cod_Postal 32 Florinda Simões 35 147000 NULL 4000 14 Nascimento Augusto 35 220000 456123 2300 2. Selecionar o Id, Nome e Salário de todas as s com Idade para votar: SELECT Id, Nome, Salario WHERE Idade >= 18 Id Nome Salario 42 António Dias 74000 5 Célia Morais 170000 32 Florinda Simões 147000 37 Isabel Espada 86000 49 José António 210000 14 Nascimento Augusto 220000 25 Paulo Viegas 95000 3. Selecionar a descrição de todas as Mensagens cujo Id_Msg seja diferente de 20, sem mostrar a Id(idade): SELECT Mensagem FROM Mensagem WHERE Id Msg <> 20 Mensagem Mensagem Comissão de Vendas Fretes Empresas Vendas Extra Deslocações Refeições Combustíveis Transportes Telefonemas Ofertas 8
5.8 OPERADORES LÓGICOS Os operadores lógicos funcionam sempre com operandos lógicos ou com expressões que devolvam valores lógicos como resultado. OPERADOR EXEMPLO AND Condição 01 AND Condição 02. OR Condição 01 OR Condição 02. NOT NOT Condição. Exemplos de 1. Selecionar Id, Nome, Idade e Salário de todas as s com Idade entre 30 e 40 anos: SELECT Id, Nome, Idade, Salario WHERE Idade >= 30 AND Idade <= 40 Id Nome Idade Salario 32 Florinda Simões 35 147000 14 Nascimento Augusto 35 220000 25 Paulo Viegas 32 95000 2. Selecionar o Id, Nome, Idade e Salário de todas as s cuja idade não está entre 30 e 40 anos: SELECT Id, Nome, Idade, Salario WHERE Idade < 30 OR Idade > 40 Ou SELECT Id, Nome, Idade, Salario WHERE NOT (Idade >= 30 AND Idade <= 40) Id Nome Idade Salario 42 António Dias 43 74000 5 Célia Morais 26 170000 37 Isabel Espada 28 86000 49 José António 17 210000 9