Você está na página 1de 6

# Inserir 1 registro em uma tabela

INSERT INTO contato VALUES(1, "Abrahao Lopes", "9876-5432");


# Inserir SEM informar o código auto-incremento
INSERT INTO contato VALUES(NULL, "João Silva","1234-0482");
# Inserir vários registros de uma vez
INSERT INTO contato (nome, fone) VALUES ("Zé Carioca","6577-0863"), ("Magali","7463-
0987"), ("Tio Patinhas","8574-8435");
# Inserir vários registros de uma vez
INSERT INTO contato (nome, fone) VALUES ("Zé Carioca","6577-0863"), ("Magali","7463-
0987"), ("Tio Patinhas","8574-8435");
# Atualizar varios campos de uma vez
UPDATE contato SET nome = "Zezin Carioca", fone = "6666-0987" WHERE codigo = 4
# Atualizar/excluir mais de um registro de uma vez só
UPDATE contato SET cidade = "Mossoró" WHERE codigo = 1 OR codigo = 6
UPDATE contato SET saldo = 0 WHERE saldo < 0 AND status = "morreu"
# Utilizando conjuntos para atualizar ou excluir dados
UPDATE contato SET fone = "0000-0000" WHERE codigo IN (1,6,7,90,27,54,83)
# WHERE estado IN ("RN", "CE", "PB")
# Ordernar (crescente)
SELECT nome, preco FROM produtos ORDER BY nome
# Ordenar (decrescente)
SELECT nome, preco FROM produtos ORDER BY preco DESC
# BUSCA TEXTUAL
SELECT nome, preco FROM produtos WHERE nome LIKE '%note%' ORDER BY nome
# 'notebook%' - termina com qualquer
# '%usb' - começa com qualquer
# '%note%' - aparece em qualquer parte
# ‘___’ localizará qualquer string com exatamente três caracteres.
# ‘___%’ localizará qualquer string com pelo menos três caracteres.

# CONDIÇÕES MÚLTIPLAS COM E/OU


SELECT nome, preco FROM produtos WHERE preco >= 100 AND preco <= 200
SELECT nome, preco FROM produtos WHERE nome LIKE '%note%' AND preco >= 5500

# ceil() - arredonda pra cima (+1)


# floor() - arredonda pra baixo
# (remove casas decimais)

SELECT CEIL(AVG(preco))FROM produtos


SELECT FLOOR(AVG(preco))FROM produtos
# truncate() - define quantas casas decimais exibir
SELECT TRUNCATE(AVG(preco),2) FROM produtos
# calculos usando operadores matemáticos com valores constantes ou nomes de colunas
SELECT 5+5
SELECT nome, preco, preco*1.05 FROM produtos
# curdate() - retorna a data atual
SELECT CURDATE()
# data + hora (timestamp)
SELECT NOW()

se houver na tabela cidade alguns registros com os mesmos conteúdos, eles serão
apresentados, mas nós podemos explicitar a eliminação de qualquer duplicidade, utilizando a
palavra-chave DISTINCT:
SELECT DISTINCT Nome FROM cidade;
Para simplificar algumas operações utilizado o WHERE, existe o BETWEEN:
SELECT Nome, Populacao
FROM cidade
WHERE Populacao BETWEEN 90000 AND 100000;
A cláusula FROM
Como já dissemos, a cláusula FROM fornece um produto cartesiano das tabelas
especificadas na cláusula. Portanto, para a consulta “Encontre todas os nomes e população das
cidades e línguas do seu país”, temos a sintaxe:
SELECT cidade.Nome, cidade.Populacao, linguapais.Linguagem
FROM cidade, pais, linguapais
WHERE cidade.CodigoPais = pais.Codigo AND
pais.Codigo = linguapais.CodigoPais;
Note que estamos utilizando na instrução SQL a notação nome-tabela.nome-campo. Isso
deve ser feito para evitar ambiguidades, pois temos alguns campos com nomes iguais em
tabelas distintas, por exemplo o campo “CodigoPais” ou “Nome”.
Assimile
Se pudéssemos criar uma classificação das instruções SQL mais utilizadas, as instruções de
consulta (DQL) com certeza estarão em primeiro lugar. Por isso, estudar a fundo as sintaxes,
as cláusulas e as finalidades de utilização destas instruções levarão você a explorar toda a
potencialidade de um SGBD e seus bancos de dados relacionais.
----------
A operação de renomeação e variáveis do registro
Os campos podem ser renomeados e, para isso, usa-se a cláusula AS, da seguinte forma:
nome-antigo AS nome-novo
---------
Por exemplo, para descartar
várias colunas em uma única instrução, execute o seguinte comando:
ALTER TABLE cliente DROP COLUMN parentesco,
DROP COLUMN telefones;
SELECT categoria.nome as "Tipo", produto.nome as "Produto", produto.valor FROM
Categoria INNER JOIN Produto
ON Categoria.Id = Produto.Id_Categoria
Where produto.valor< 50.00;

E importante que voce compreenda alguns detalhes desse comando:


• “SELECT categoria.nome, produto.nome”: repare
que o campo “nome” esta tanto na tabela “Categoria” como
na tabela “Produto”, assim, para que o SQL possa distinguilas,
devemos utilizar a seguinte sintaxe: <tabela>.<coluna>.
• “FROM Categoria INNER JOIN Produto”: o comando
INNER JOIN promove a juncao das tabelas “Categoria” e
“Produto”, dessa forma e possivel fazer o produto cartesiano
entre ambas.
• “ON Categoria.Id = Produto.Id_Categoria;”: a
palavra “ON” tem a funcao de fazer o apontamento da chave
primaria da tabela “Categoria” para a chave estrangeira da
tabela “Produto”.
---------
Os metodos de normalizacao de banco de dados sao divididos em:
primeira forma normal (1FN), em que nao podem ocorrer atributos
com mais de um valor; segunda forma normal (2FN), em que todos os
atributos nao chaves devem depender unicamente da chave primaria
da tabela; e terceira forma normal (3FN), em que os atributos devem ser
mutuamente independentes, eliminando assim as funcoes transitivas.
Funções de junção
Identificar o nome dos jogos da secao de jogos de guerra. Para isso, foi desenvolvido:
SELECT jogo.nome FROM jogo INNER JOIN localização
ON localizacao.Id = jogo.localizacao_Id where secao
= "Guerra";
6.Quais os livros do autor “Maria josé Valero” tem em estoque
SELECT livro.titulo FROM livro JOIN escreve ON escreve.idlivro = livro.idlivro
JOIN autor ON autor.idautor = escreve.idautor WHERE autor.nome = "Maria José Valero"
AND livro.estoque > 0;
Funções de agregação
Outro problema encontrado esta na utilizacao da funcao
COUNT para contar a quantidade de marcas de carro cadastrados.
Certamente o resultado retornado seria doze, ou seja, a quantidade
de veiculos registrados na tabela. Para isso, o SQL possui a funcao
DISTINCT, que e utilizada juntamente com o COUNT, e, no exemplo
acima, teriamos a seguinte sintaxe:
SELECT COUNT( DISTINCT MARCA) FROM Veiculos;

A funcao de agregacao AVG permite que o qualificador GROUP


BY seja utilizado em conjunto. Para isso, vamos tomar um
exemplo em que se deseja selecionar as marcas e o valor medio
dos veiculos conforme as marcas, agrupando as informacoes,
com o comando SQL descrito a seguir:
SELECT Marca, AVG(Valor) as “Valor Médio”
FROM Veiculos
GROUP BY Marca;
Usando o inner join
9. qual livro teve o maior numero de vendas de exemplares vendidos de uma
Só vez
SELECT livro.titulo, MAX(iv.qtd) FROM livro INNER JOIN itens_da_venda AS iv on
livro.idlivro = iv.idlivro

Clausula IN
uma consulta em que desejamos encontrar o nome de todos os
alunos que efetuaram emprestimos, mas que estao com restricao
para locar novos livros. Assim, teremos:
SELECT aluno.nome
FROM aluno
WHERE aluno.RA IN (SELECT aluno_RA FROM restrição);
SELECT aluno.nome as “ALUNO”, livro.nome as “LIVRO”
FROM aluno, livro
WHERE aluno.RA IN(SELECT aluno_RA FROM restrição)
AND Livro.isbn IN (selectlivro_isbnfrom restrição);
Not IN
SELECT nome as “LIVRO”
FROM livro
WHERE seção NOT IN (SELECT seção FROM emprestimo
where seção = “música”);

CRIAÇÃO DE INDICE
por meio da palavra reservada
INDEX, devemos utilizar as seguintes sintaxes:
Declarar um índice, quando no desenvolvimento da tabela:
CREATE TABLE [nomeDaTabela] (
Campo1 tipo(tamanho),
Campo2 tipo(tamanho),
INDEX(Campo1)
);
Declarar um índice, em uma tabela existente no BD:
CREATE INDEX [nomeDoIndice] ON
[nomeDaTabela](Campo);
Para utilizar um índice, a sintaxe necessária
pode ser observada a seguir:
SELECT [coluna] FROM [nomeDaTabela]
USE INDEX (nomeDoIndice)
WHERE [condições];

Você também pode gostar