MySQL 101
Recapitulando Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas. As bases de dados são úteis quando necessitamos de armazenar informação em categorias. Hipoteticamente, uma empresa poderia ter uma base de dados com as seguintes tabelas: Colaboradores; Produtos Clientes Encomendas
MySQL? É um SGBD usado na web e que corre do lado do servidor; É open-source, ou seja, é grátis para qualquer pessoa descarregar, usar e/ou modificar; Tem uma distribuição muito alargada. Como pode ser instalado numa série de plataformas, vêm instalado de origem na maioria dos setups de web hostings. É ideal para aplicações grandes ou pequenas, é rápido, fiável e fácil de usar; Funciona bem com o PHP. Desde a versão 5.3, o PHP tem um controlador nativo de MySQL que funciona intimamente com o motor de PHP, tornando-o na escolha acertada para os developers PHP.
Queries SQL, é um acrónimo para Structured Query Language, e é uma linguagem de programação concebida para gerir informação presente num Sistema de Gestão de Bases de Dados Relacionais. Uma Query, é uma pergunta ou um pedido. Podemos fazer um pedido, ou uma query, a uma base de dados, perguntado por uma informação especifica e receber um conjunto de registos.
Queries Algumas das acções que se podem realizar usando SQL, incluem: Escrever, actualizar e apagar informação numa base de dados. Criar e apagar bases de dados e tabelas dentro das bases de dados. Assim, utilizando o exemplo da nossa base de dados hipotética de uma empresa, tenham atenção à seguinte query: SELECT UltimoNome FROM Colaboradores! A query acima selecciona todos os dados presentes na coluna UltimoNome da tabela Colaboradores
Inserir nova informação Considerem a seguinte tabela: id (PK, A_I) nome idade funcao 1 Desidério Lopes da Silva 45 Chief Executive Officer 2 Gervásio Lopes da Silva 56 Contabilista Para inserirmos novos registos numa base de dados, usamos a instrução INSERT, passando os nomes dos campos e os respectivos valores. Sintaxe: INSERT INTO Colaboradores ( nome, idade, titulo )! VALUES ( "Zeferino Lopes da Silva", "29", "Web Developer" );! Usamos a instrução INTO, para dizer ao MySQL em que tabela deve inserir o novo registo. Listamos depois, dentro de parêntesis o nome dos campos para os quais queremos atribuir valores. De seguida, usamos a instrução VALUES para definirmos os valores que queremos passar, dentro de parêntesis e na mesma ordem que os nomes dos campos.
Inserir nova informação Reparem que, apesar de ser um campo definido na base de dados, não especificamos valores para o campo do id. Uma vez que é um campo com auto_increment, o MySQL trata de o preencher automaticamente. Se por ventura, quiséssemos adicionar mais que um valor em simultâneo podíamos fazê-lo, usando a seguinte sintaxe: INSERT INTO Colaboradores ( nome, idade, titulo )! VALUES ( "Aníbal Lopes da Silva", "33", "Web Designer" ), ( "Miguel Lopes da Silva", "38", "Project Manager" );! Como podem ver, podemos adicionar múltiplas linhas de uma vez, passando múltiplos conjuntos de valores, fechados dentro de parêntesis e separados por virgulas.
Ir buscar informação Agora que adicionamos alguns valores à tabela de colaboradores, como podemos voltar a ir busca-los? A instrução SQL SELECT permite-nos ir buscar um ou mais registos de uma ou várias tabelas, baseado nos critérios que fornecemos. A sintaxe básica é a seguinte: SELECT nomescampos FROM nometabela [WHERE critérios]!!!
Ir buscar informação Por exemplo, se quiséssemos seleccionar todos os colaboradores da tabela dos mesmos, podíamos fazer a seguinte query: SELECT * FROM Colaboradores;! Então e se quiséssemos apenas o colaborador cujo id fosse igual a 2? Podemos usar a instrução WHERE para extrair apenas os critérios especificados: SELECT * FROM Colaboradores WHERE id = 2;! Podemos também ir buscar todos os colaboradores cuja função é igual a Web Developer : SELECT * FROM Colaboradores WHERE funcao = "Web Developer";
Ir buscar informação Também podemos usar outros operadores como o < (menor que) e > (maior que) e o operador booleano AND, para recuperar um intervalo de registos: SELECT * FROM Colaboradores WHERE idade < 50 AND idade > 30;! Finalmente, em vez de escolher todos os campos usando o *, podemos especificar apenas o(s) campo(s) que queremos ir buscar: SELECT nome, funcao FROM Colaboradores;
Ordenar informação Podemos usar a instrução ORDER BY para ordenar a informação de um conjunto de registos. Este método ordena, por omissão, os resultados em ordem ascendente. Caso queiramos que os resultados sejam ordenados em ordem descendente, temos de usar a instrução DESC. Sintaxe: SELECT nomecoluna FROM nometabela ORDER BY nomecoluna ASC DESC
Actualizar informação Para actualizarmos a informação de registos existentes numa tabela, usamos a instrução UPDATE. Sintaxe: UPDATE nometabela SET coluna1=valor1, coluna2=valor2, WHERE nomecoluna=algumvalor NOTA: Reparem na cláusula WHERE na instrução de UPDATE. A cláusula WHERE especifica qual o(s) registo(s) que têm de ser actualizados. Se omitirmos a condição de WHERE, todos os registos serão actualizados.
Apagar informação Usamos a instrução DELETE para apagar registos de uma tabela. Sintaxe: DELETE FROM nometabela WHERE nomecoluna=algumvalor NOTA: Reparem na cláusula WHERE na instrução de DELETE. A cláusula WHERE especifica qual o(s) registo(s) que queremos apagar. Se omitirmos a condição de WHERE, todos os registos serão apagados!
PHP + MySQL Server Usando PHP, antes de podermos aceder à informação presente numa base de dados, temos de estabelecer uma ligação ao servidor MySQL. No PHP, esta ligação é estabelecida usando a função: mysqli_connect(); ou declarando uma variável e inicializando um novo objecto mysqli $db = new mysqli(); Sintaxe: $ligacao = msqli_connect( host, username, password, dbname ); ou $ligacao = new mysqli(host, username, password, dbname); Parâmetro host username password dbname Descrição Opcional. Pode ser tanto um host name como um IP Opcional. Username definido para o MySQL Opcional. Password para fazer login Opcional. Nome da base de dados que queremos usar
PHP + MySQL Server Para que o PHP execute qualquer uma das instruções de SQL dos slides anteriores, temos de usar a função mysqli_query(). Esta função é usada para enviar uma query ou comando para uma ligação ao MySQL. Sintaxe: $query=msqli_query( $ligacao, "QUERY SQL" );! ou $query = $ligacao->query("query SQL")! <?php! $ligacao = new mysqli("example.com","peter","abc123","my_db");!! $query = $ligacao->query("select * FROM Persons");!?>