Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Ferramenta de Desenvolvimento Material III-Bimestre Conceito e Aplicação de Banco de Dados Usando PHP http://www1.univap.br/~wagner Prof. Responsável Wagner Santos C. de Jesus 1 Manipulação de Banco de Dados Usando PHP 2 O que vem a ser um Banco de dados. Vem a ser a forma como organizamos as informações de origem podendo Relatar, Classificar, Organizar e Adaptar as maneira de se administrar as informações. 3 Sistemas de Gerenciamento de Banco de Dados Um SGDB é o software responsável pelo armazenamento, recuperação e atualização dos dados de forma rápida e fácil. Um SGBD relacional é um software gerenciador de banco que acessa os dados na forma de linhas e colunas. 4 Estrutura Geral de Sistema Componentes Funcionais de um SGBD: • Gerenciador de Arquivos: Gerencia a alocação de espaço e armazenamento em disco e estruturas de dados. • Gerenciador do Banco de Dados: Proporciona interface entre os dados de baixo nível e os programas de aplicação e consultas. • Processador de Consultas: Traduz comandos de uma linguagem de consulta em instruções de baixo nível para que o GBD entenda. Tenta otimizar os pedidos de consulta dos usuários. • Pré-Compilador DML: Compila comandos DML em rotinas da linguagem do host. Precisa interagir com o processador de consultas para gerar código apropriado. • Compilador DDL: Converte comandos DDL em um conjunto de tabelas contendo metadados, que são armazenados no DD. 5 Diferenças • • • • • Oracle (Muito Alta Performance) MS-SQL-Server (Média p/ Alta Performance) InterBase (Média) MySql (Média) Microsoft Access 6 Autenticação com Banco Cliente Form. HTML Servidor, Login e Senha Servidor Banco,Conexão Libera Procedimento Base de Dados 7 Usando a Linguagem de Manipulação de Dados. (SQL) A linguagem SQL (Structure Query Language) Linguagem de Estrutura de Consulta. Possibilita uma estrutura única de comandos que podem ser usados em qualquer Banco de Dados do Mercado com maior rapidez e eficiência na escrita de códigos de operações básicas de manipulação de dados. 8 Estudo da DML • Linguagem de Manipulação de Dados (ou DML, de Data Manipulation Language) é uma família de linguagens de computador utilizadas para a recuperação, inclusão, remoção e modificação de informações em bancos de dados. Pode ser procedural, que especifica como os dados devem ser obtidos do banco; pode também ser declarativa (não procedural), em que os usuários não necessitam especificar o caminho de acesso, isto é, como os dados serão obtidos. O padrão SQL é não procedural. DMLs foram utilizadas inicialmente apenas por programas de computador, porém (com o surgimento da SQL) também têm sido utilizadas por pessoas. 9 Estudo de DDL Linguagem de definição de dados (LDD ou DDL, do Inglês Data Definition Language) é uma linguagem de computador usada para a definição de estruturas de dados. O termo foi inicialmente introduzido em relação ao modelo de banco de dados Codasyl, onde o esquema de banco de dados era escrito em uma Linguagem de Definição de Dados descrevendo os registros, campos e "conjuntos" que constituíam o Modelo de dados do usuário. Inicialmente referia-se a um subconjunto da SQL, mas hoje é usada em um sentido genérico para referir-se a qualquer linguagem formal para descrição de estruturas de dados ou informação, assim como esquemas. 10 Estrutura da Linguagem SQL • • • • Select - Consulta de dados Insert - Inclusão de dados Update - Alteração de dados Delete - Remoção de dados 11 Abordagem Prática de uma Query (Consulta) 12 Instrução select permite realizar consultas (filtros em uma ou mais tabelas). Sintaxe Geral : Select [* | <campos>|distinct] From <Tabela> [where <condição>] like <mascara> * - Pega todos os campos de uma tabela. Distinct - Não permite repetição de registros. From - Anuncia o nome da tabela que será usada. 13 Sintaxe Geral : Where - permite definir a condição para a consulta like - Define que tipo de consulta será utilizada através de máscara. IS Null - Verifica se um campo é nulo, ou seja, campos em branco. Between e and - valores em um intervalo específicado. Order By - Ordena o registros da consulta 14 Exemplo de Consulta Correlacionanda Exemplo Select nome from funcionario where codfunc in( select codfunc from vendas where cotas = 10) 15 Sintaxe : Select [*/All/Distinct][<Campos-Tabela>] From [<Nome-Tabela>] Where [<Condição>][Order by <campo[ASC|DESC]] Exemplo : Select Nome,Endereco From Cadastro Where nome = ‘Jorge Mauro’ 16 Exemplo de order by Select * From tabela1 order by nome Seleciona o valor todos os campos da tabela com nome em ordem Crescente. 17 Select endereco From tabela1 where nome is null Seleciona os dados do campo endereco que o campo nome da tabela for igual nulo. 18 Select Nome,Fone from Funcionario Where Nome like ‘C%’ Seleciona os dados dos campos nome e endereço que campo nome comece com letra “C”. 19 Select Nome fone From tabela1 Where nome like ‘%Henrique%’ Seleciona os dados da tabela1 que o nome tiver a string Henrique em qualquer posição. 20 Select Nome from funcionario where salario between 1200 and 4000 and (Estado=‘SP’ or Estado=‘RJ’ Seleciona os dados do campo nome que o salário estiverem em um intervalo entre 1200 4000 e o estado for igual a SP ou RJ. 21 Select Nome, Estado from Tabela1 from funcionario where estado in(‘SP’,’MG’) Seleciona os dados da tabela1 dos campos nome e estado que estado for igual SP e MG 22 Funções de uma Query : Upper - Retorna os dados do campo da tabela letras maiúsculas. AVG - Retorna a média dos valore de um campo. MIN - Retorna o menor valor do campo de uma tabela. MAX - Retorna o maior valor do campo de uma tabela. SUM - Retorna a soma dos valores de uma 23 determinada coluna. Select Upper(nome), fone from tabela1 Select Max(Valor) from tabela1 Select Min(Valor) from Tabela1 Select Avg(Valor) from Tabela1 Select Sum(Valor) From Tabela1 24 Abordagem Prática de Comandos de Modificação da base de dados. 25 (Inserir dados) - Sintaxe : Insert into <Nome-Tabela>[( <Nome-dos-Campos> )] Values(<Lista de Campos>) Exemplo : Insert Into CadAlunos (Nome,Endereco) Values( 'Marta Cunha','Rua Siqueira Campos,3' ) 26 Remover dados - Sintaxe : Delete From <Nome-da-Tabela> [Where <Condição>] Exemplo : Delete From CadAlunos Where nome = ‘Maria das Coves’ 27 Alterar Dados - Sintaxe : Update <Nome da Tabela> set <nome-do-campo> = <Constante> [Where <Condição>] Exemplo : Update CadAlunos set nomeAluno = ‘Maria da Coves’ Where Codigo = ‘001’ 28 mysql_connect Estabelece conexão com o servidor de dados e retorna verdadeiro se houver sucesso na realização da mesma. Sintaxe: <varm> = mysql_connect(<servidor>,<usuario>,<senha>) 29 mysql_select_db Estabelece conexão com o banco de dados e retorna verdadeiro se houver sucesso na realização da mesma. Sintaxe: <varm> = mysql_select_db(banco,conexao); 30 mysql_connect() - Abre uma conexão com um servidor MySQL. Criação de autenticação no banco de dados. - Servidor; - Usuário; - Senha Servidor Web Autenticação Servidor Banco de Dados Servidor, Usuário, Senha 31 Exemplo prático // Cria conexão com o banco de dados db.php $servidor = "127.0.0.1"; $usuario = "root"; $senha = ""; $db = "Banco"; if($conexao = mysql_connect($servidor,$usuario,$senha)) { if(!mysql_select_db($db,$conexao)) { echo "<Script>Não foi possível efetuar a conexão com o Banco de Dados!!</Script>"; } } else echo "<Script>Não foi possível realizar a conexão!!</Script>"; 32 mysql_query() Envia uma instrução SQL para o banco de dados. Permitindo que sejam realizadas as operações. • • • • Select (Consulta) Insert (Inclusão) Update (Alteração) Delete (Remoção) 33 Abertura de um cursor para localização em arquivo. Jose Banco Dados ResultSet Pedro Paulo Roberta Movimentação para um tipo de navegação para conjunto de resultados. Realizar a navegação sequencial no registros do banco de dados Aplicando instruções para a Consulta ao banco de dados 35 (Fluxo) Procedimentos para consulta em uma tabela Conexão e Autenticação Envio de comando DML (Consulta) (S) Verifica se existe registro Exibe registros (N) FIM 36 mysql_num_rows() Retorna o número de linhas em um resultset retorna verdadeiro se existir linhas na consulta. 37 mysql_fetch_array() Retorna uma matriz que corresponde a linha obtida e move o ponteiro interno dos dados adiante. 38 Consultando dados em uma tabela mysql_num_rows(), mysql_fetch_array() <?php include("bd.php"); $result = mysql_query("select * from tabela"); if(mysql_num_rows($result) != 0){ while($linha = mysql_fetch_array($result)){ echo $linha["Nome"]."<br>"; } } ?> 39 Inserindo dados em uma tabela include("bd.php"); $vnome = "Carlos Marcelo"; $vcidade = "São José dos Campos"; $sql = "Insert into tabela(nome,cidade) values ('".$vnome."','".$vcidade."')"; $result = mysql_query($sql); if($result) { echo "<script>alert('Dados Inserido com sucesso !!')</script>"; } 40 Alterando dados de uma Tabela include("bd.php"); $vnome = "Carlos Marcelo"; $vcidade = "Campos do Jordão"; $cod = 9; $sql = "Update tabela set cidade ='".$vcidade."' where codigo = ".$cod; $result = mysql_query($sql); if($result) { echo "<script>alert('Dados atualizados com sucesso !!')</script>"; } 41 Remover dados de uma tabela include("bd.php"); $cod = 9; $sql = "Delete from tabela where codigo = ".$cod; $result = mysql_query($sql); if($result) { echo "<script>alert('Dados Removidos com sucesso com sucesso !!')</script>"; } 42 Criando uma Estrutura de Dados para Exibição da Informação 43 Criação de rotinas de auxilio ao desenvolvimento Arquivo de cabeçalho que permite que as funções sejam chamadas assim que solicitadas. Em ciência da computação, mais especificamente no contexto da programação, uma sub-rotina (função, procedimento ou mesmo subprograma) consiste em uma porção de código que resolve um problema muito específico, parte de um problema maior (a aplicação 44 final). Algumas das vantagens na utilização de sub-rotinas durante a programação são: • A redução de código duplicado num programa; • A possibilidade de reutilizar o mesmo código sem grandes alterações em outros programas; • A decomposição de problemas grandes em pequenas partes; • Melhorar a interpretação visual de um programa; • Esconder ou regular uma parte de um programa, mantendo o restante do código alheio às questões internas resolvidas dentro dessa função; 45 Estrutura auxiliar Conjunto de Funções Entrada de dados na função MontaTela.php Retorno (saída) de dados na função 46 Estrutura de Programação db.php SubRotinas.php Gravadados.php listaDados.php MontaTela.php 47 function strzero($numero) Retorna com zeros a esquerda de um número informado caso exista posições em branco. $numero: Número a ser preenchido com zeros a direita. 48 function faixa_horizontal($corletra,$corfaixa,$texto) Cria faixa para divisão de dados em tela. $corletra: Cor dos caracteres a serem apresentados na tela. $corfaixa: Cor da faixa de divisão da tela. $texto: Texto a ser exibido na faixa. 49 function campos_tela($array_campos,$progphp) Cria tela de cadastramento enviando os campos que serão exibidos. $array_campos: Array contendo os nomes dos campos que serão exibidos na tela. $progphp: Nome do arquivo (php) que deverá ser usado pelo formulário. 50 function listaDados($strQ) $strQ: Recebe instrução SQL realização de consulta de campos. para Exemplo: listaDados(“Select * from tabela”); 51 function InsereDados($array_campos,$nome_tabela) $array_campos: Campos a serem inseridos na tabela. $nome_tabela: Nome da tabela criado na base de dados. 52 Exercício Escrever um programa que leia o nome o ano de nascimento o ano atual e grave em uma tabela o nome, ano de nascimento, ano atual e a idade da pessoa. 53