AULA 8 8.1. OBJETIVO DA AULA Relembrar conceitos e recursos básicos apresentados nas aulas anteriores, dar continuidade nas codificações iniciadas e ainda não finalizadas, explorar acesso a banco de dados Postgres usando.net Data Provider, objetos TextBox e linguagem SQL. 8.3. SQL (Structured Query Language) SQL significa Structured Query Language (linguagem estruturada) que se tornou um padrão de linguagem para acesso a dados (consulta, atualização e manipulação) em bancos de dados relacionais, como Oracle, DB2, SQL Server, Sybase, Interbase, entre outros. Os comandos da linguagem SQL são agrupados em três categorias (Tabela 1): Definição de dados - comandos que permitem definir ou alterar a estrututura de tabelas de um banco de dados, modificando atributos tais como nome de campos, indices e tipos de dados. Controle de dados - comandos que servem para gerenciar o acesso dos usuários a determinadas tabelas, permitindo visualização ou não dos dados, como também privilégio de inclusão e exclusão dos registros; Manipulação de dados - instruções que permitem inserir, excluir e alterar registros de uma base de dados. Prof. Terigi 1
Tabela 1 - Comandos da linguagem SQL Comando Descrição Create Cria um objeto (tabela ou índice, por exemplo) dentro do BD. Alter Permite alterar um objeto. Por exemplo, adicionando uma coluna a uma tabela existente. Drop Apaga um objeto do banco de dados. Grant Concede permissões específicas no objeto para um ou mais usuários. Estas permissões são adicionadas às já concedidas, caso existam. Revoke Revoga, de um ou mais usuários, privilégios concedidos anteriormente. Update Atualiza registros. Delete Deleta Registros Select Recupera registros que satisfaçam a uma condição. Insert Insere um novo registro. Categoria Definição de Dados Controle de Dados Manipulação de Dados A instrução Select é a função mais complexa da linguagem SQL, que é usada para exibir registros de uma ou mais tabelas. Alguns autores costumam classificá-la também como linguagem de pesquisa de dados (DQL - Data query language). Pode-se construir uma declaração SQL usando as expressões e funções apresentadas nas tabelas abaixo. Tabela 2 - Expressões utilizadas para construir uma declaração SQL Expressão Descrição From Especifica o (s) nome(s) da(s) tabela(s) que originarão os dados. Where Especifica uma condição. Group By Separa os registros pelo grupo especificado. Having Estabelece a condição que cada grupo deve atender. Order By Especifica a ordenação dos registros selecionados. Pode-se usar ainda o parâmetros ASC(Ascendente) e DESC (Descendente) Distinct Retira as repetições Tabela 3 - Funções que podem ser utilizadas para construir uma declaração SQL Função Tradução Descrição Count Contador Avg Média First Primeiro Last Último Min Mínimo Max Máximo Sum Soma Upper Maisculo Lower Minusculo Trim Remove repetições de um caracter espcificado da esquerda ou direita de uma string Prof. Terigi 2
Tabela 4 - Alguns operadores que podem ser utilizados para construir uma declaração SQL Operadores Descrição +, -, *, / Aritiméticos =, >, <, <>, <=, => Comparação BETWEEN...AND... Intervalo IN e NOT IN LIKE IS NULL AND, OR e NOT Lógicos ALL, SOME, ANY Quantidade Concatenação Tabela 5 - Exemplos de SQL Comando Exemplo Descrição Select Seleciona todos (*) os campos de todos registros da tabela de usuarios. Select Cod, Nome From Seleciona os campos Cod e Nome da tabela de usuarios para os TabUsuarios Where Cod > 1 And Cod < 15 registros que tenham os campo Cod > (Maior) que 1 e < (Menor) que 15. Seleciona todos os campos e registros da tabela de usuarios agrupada Update Group By NivelAcesso Order By Codigo Select * From Fornecedores, Produtos Where Fornecedores.Codigo = Produtos.Codigo Where Nome Like A* Where Nome Like %Au% Select * from TabUsuarios where Sexo = "M" order by Nome Update Funcionarios Set Salario = Salario * 1.15 Update Funcionarios Set Salario = Salario * 1.1 Where Cargo = gerente Delete Delete From TabUsuarios Where Codigo > 1 And Codigo < 5 Insert Alter Insert into TabUsuarios (codigo, nome_usuario, senha) values ( 1, admin, 123 ); Alter TabUsuarios add endemail char (30); pelo campo NivelAcesso. Seleciona todos os campos e registros da tabela Usuario ordenada pelo campo Codigo. Seleciona todos os campos e registros das tabelas de fornecedores e de produtos que tenham o campo codigo de Fornecedores igual ao campo Codigo de Produtos. Seleciona todos os campos e registros da tabela de usuarios cujo o campo Nome comece pela letra A. Seleciona todos os campos e registros da tabela de usuarios cujo conteúdo do campo Nome tenha Au. Seleciona todos os campos e registros da tabela de usuarios cujo o campo Sexo é igual a M (masculino) ordenado pelo Nome. Atualiza o campo Salario de todos os registros da tabela de funcionarios para o conteúdo atual multiplicado por 1.15 (aumento de 15%). Atualiza o campo Salario de todos os registros da tabela de funcinarios que campo Cargo seja igual a Gerente para o conteúdo atual multiplicado por 1.1 (aumento de 10%). Apaga todos os registros da tabela de usuarios para Codigo >(maior) que 1 e < (menor) que 5. Insere um registro na tabela de usuarios, onde os campos codigo, nome_usuario e senha recebem os conteúdos 1, admin e 123, respectivamente. Todos os campos que não podem ser nulos devem ser preenchidos. Altera a estrutura da tabela de usuarios inserindo um novo campo (endemail) para guardar os e-mails dos usuarios. Prof. Terigi 3
Vale ressaltar que grandes empresas desenvolvedoras de bancos de dados como a Inprise (Interbase), Oracle e Microsoft (SQL Server) implementaram sua própria SQL para melhorar a performance de seus bancos de dados. 8.4..Net Data Provider Um.NET Data Provider é uma biblioteca de software que consiste em classes que fornecem serviços de acesso de dados, como a conexão com uma fonte de dados, execução de comandos em uma fonte de dados e busca de dados a partir de uma fonte de dados com suporte para executar comandos dentro de transações. Ele reside como uma camada leve entre a fonte de dados e código, prestação de serviços de acesso a dados com maior desempenho. 8.5. IMPLEMENTAÇÃO: Aplicação com acesso ao Postgres 8.5.1. Exercício - Acesso a dados usando POSTGRES O uso de banco de dados oferece várias vantagens e facilidades para manipular informações. Geralmente, uma aplicação que acessa um banco de dados é elaborada em duas etapas bem distintas. Uma etapa refere-se à criação do banco de dados e isso significa criar tabelas, equanto a outra etapa refere-se à elaboração da aplicação que irá utilizar o BD criado. Criando o banco de dados e uma tabela 1. Abra o pgadminiii; 2. Registre um servidor se necessário e crie um banco de dados chamado BD_EXEMPLO. 3. No BD_EXEMPLO crie uma tabela chamada Cliente (use o script abaixo). CREATE TABLE Cliente ( idcliente Numeric (5) not null, Nome Varchar (50) not null, Idade Numeric (3) not null, constraint cliente_idcliente primary key (idcliente) ); 3. Ainda através do pgadminiii, digite alguns registros para poder efetuar testes. Para isso digite: Prof. Terigi 4
Insert into Cliente values ('1', 'Admin', '20'); Prof. Terigi 5