INSTRUÇÕES SQL
Professor Anderson Carvalho
INSERINDO DADOS Instrução INSERT INSERT INTO <tabela> [(<campo1>[, <campo2>, ...])] VALUES (<valor1>[, <valor2>, ...])
• Insere novos dados no banco; • Sempre que possível identificar e valorar todos os campos da tabela para evitar registros errôneos;
• Em campos AUTO_INCREMENT não é obrigatório a identificação do campo, porém pode causar incompatibilidades e erros. Para evitar, utilize NULL; • Valores NULL na expressão serão substituídos pelo valor
padrão do campo, quando permitido;
INSERINDO DADOS Exemplos de INSERT INSERT INTO tb_funcionarios (nome, escolaridade, cargo, salario) VALUES(„Jeferson‟, „Pós-Graduado‟, „Analista de Marketing‟, 2300);
IDENTIFICANDO O CAMPO ID (E OS DESEJÁVEIS) INSERT INTO tb_funcionarios (id, nome, escolaridade, cargo, salario) VALUES(null, „Jeferson‟, „Pós-Graduado‟, „Analista de Marketing‟, 2300);
INSERINDO DADOS Instrução INSERT • O conteúdo da linha é inserido entre parênteses após o parâmetro VALUES. • Os valores de caracteres (string) e datas devem ser inseridos entre apóstrofos (‘ ’) ou aspas (“ “). • As entradas numéricas não são cercadas por apóstrofos ou aspas. • As entradas de atributos são separadas por vírgulas. • É necessário um valor para cada coluna.
• Campos que permitem valores nulos não precisam ser listados. • É possível inserir conjuntos de dados para múltiplas linhas.
INSERINDO DADOS Exemplos de INSERT Conjuntos de dados para múltiplas linhas INSERT INTO tb_funcionarios (nome, escolaridade, cargo, salario) VALUES („Jeferson‟, „Pós-Graduado‟,„Analista de Marketing‟, 2300), („Pedro‟, „Graduado‟,„Analista de Sistemas‟, 2100);
VISUALIZANDO DADOS Instrução SELECT
SELECT <campo> FROM <tabela> [<cláusulas, operadores e valores>]
• Instrução mais importante da linguagem; • Através de uma consulta SELECT é possível visualizar qualquer dado contido (ou não) no banco; • Permite a execução de funções que retornarão dados
processados pelo servidor. • Exibe todos os campos utilizando SELECT * FROM ...
VISUALIZANDO DADOS Exemplos de SELECT
SELECT NOME FROM tb_funcionarios
SELECT NOME, CARGO FROM tb_funcionarios
SELECT * FROM tb_funcionarios
VISUALIZANDO DADOS Parâmetro WHERE
SELECT <campo> FROM <tabela> WHERE <condições>
• Argumento opcional da instrução SELECT e outras; • Filtra os resultados que atendem a determinadas condições; • Utilizado na maioria das vezes com comparação de
valores (da mesma tabela ou de outras).
VISUALIZANDO DADOS Exemplos de WHERE
SELECT * FROM tb_funcionarios WHERE escolaridade = “Graduado”;
SELECT * FROM tb_funcionarios WHERE escolaridade = “Graduado” AND cargo != “Analista de Sistemas”;
VISUALIZANDO DADOS Parâmetro ORDER BY SELECT <campo> FROM <tabela> ORDER BY <campo/critério> [ASC|DESC]
• Ordena os registros de uma consulta de acordo com o critério utilizado; • Nas aplicações, auxilia na identificação do primeiro
(menor) e do último registro (maior); • Recomendado o uso após o WHERE • DESC: ordenação decrescente • ASC: ordenação crescente (padrão)
VISUALIZANDO DADOS Exemplos de ORDER BY
SELECT * FROM tb_funcionarios ORDER BY NOME
SELECT * FROM tb_funcionarios ORDER BY salario DESC
VISUALIZANDO DADOS Parâmetro INNER JOIN SELECT <campo> FROM <tabela1> JOIN <tabela2> ON <tabela1>.<campo> = <tabela2>.<campo> [WHERE <condições>]
• INNER JOIN é uma variação do comando JOIN, sendo um dos mais importantes do SQL; • Possibilita unir duas ou mais tabelas a partir de campos
correspondentes entre elas; • Necessários bancos normalizados; • Permite o uso da função USING(<campo>) quando os campos de ambas as tabelas forem de mesmo nome.
VISUALIZANDO DADOS Exemplos de INNER JOIN SELECT nome, departamento FROM tb_funcionarios INNER JOIN tb_cargos ON tb_funcionarios.cargo = tb_cargos.cargo
-- Ă&#x2030; o mesmo que: SELECT nome, departamento FROM tb_funcionarios INNER JOIN
tb_cargos USING(cargo)
SELECT * from tb_produtos INNER JOIN tb_marcas ON tb_produtos.marca = tb_marcas.id
VISUALIZANDO DADOS Sugestão ao uso de INNER JOIN com WHERE SELECT * from tb_produtos INNER JOIN tb_marcas ON tb_produtos.marca = tb_marcas.id
É O MESMO QUE: SELECT * from tb_produtos, tb_marcas WHERE tb_produtos.marca = tb_marcas.id
VISUALIZANDO DADOS Parâmetro AS (apelido) SELECT <campo> AS <apelido> FROM <tabela1> <apelido> [WHERE <condições>]
• Apelida-se um capo através do AS após o nome do campo; • Tais termos substituirão os nomes dos campos nas
colunas contendo os resultados da pesquisa; • Apelida-se uma tabela simplesmente inserindo um apelido posteriormente ao seu nome (sem AS);
VISUALIZANDO DADOS Exemplos de AS SELECT nome AS funcionario, departamento as area FROM tb_funcionarios f INNER JOIN tb_cargos c ON f.cargo = c.cargo
Ă&#x2030; O MESMO QUE: SELECT nome AS funcionario, departamento as area FROM tb_funcionarios f, tb cargos c WHERE f.cargo = c.cargo
VISUALIZANDO DADOS Exemplos de AS VISUALIZANDO COLUNAS COMPUTADAS: SELECT nome AS funcionario, salario * 0.1 AS aumento FROM tb_funcionarios f
ATUALIZANDO DADOS Instrução UPDATE UPDATE <tabela> SET <campo> = <valor> [, <campo2> = <valor2>, ...] [WHERE <condições>]
• Atualiza dados existentes no banco; • O parâmetro WHERE filtra a atualização no intuito de alterar apenas os registros que atendam a condição especificada;
• Caso não seja definido o WHERE todos os registros do campo em questão serão atualizados com o valor especificado;
ATUALIZANDO DADOS Exemplos de UPDATE ALTERANDO TODAS AS LINHAS DA TABELA (CUIDADO) UPDATE tb_funcionarios SET NOME = „Luiz‟;
ALTERANDO APENAS UMA LINHA UPDATE tb_funcionarios SET NOME = „Luiz‟ WHERE ID = 3;
EXCLUINDO DADOS Instrução DELETE DELETE FROM <tabela> [WHERE <condições>]
• Exclui um ou mais registros de uma tabela; • Assim como o UPDATE o parâmetro WHERE deve ser utilizado para filtrar os registros a serem excluídos;
• Caso não seja definido o WHERE na expressão, todos os registros da tabela serão excluídos; • Deve-se tomar cuidado ao utilizar dados duplicados como filtro para o parâmetro WHERE.
EXCLUINDO DADOS Exemplo de DELETE -- deletando apenas um registro DELETE FROM tb_funcionarioso WHERE ID = 2;
-- deletando todos os registros DELETE FROM tb_funcionarios;
Ă&#x2030; O MESMO QUE: TRUNCATE tb_funcionarios