Introdução a Linguagem SQL: Comandos Básicos e Avançados

Propaganda
Introdução a Linguagem SQL:
Comandos Básicos e Avançados
– Parte 2
Continuando o nosso resumão de comandos SQL, vamos ver alguns
que estão faltando e em outra postagem irei demonstrar as
funções utilizadas.
ÍNDICES (INDEX)
O objetivo dos índices é agilizar a busca de algum dado na
tabela, sem ter que lê-la por completo, de forma eficiente.
Toda tabela que for atualizada e que possuir índice, irá
demorar mais que uma tabela sem índice, pois seus índices
precisam ser atualizados também. Sendo assim, você só deve
utilizar índices em colunas que você irá utilizar com
frequência.
Neste caso é permitido valores duplicados de índices:
CREATE INDEX nome_indice
ON tabela (nome_coluna);
Sem permitir valores duplicados:
CREATE UNIQUE INDEX nome_indice
ON tabela (nome_coluna);
Exemplos de sua utilização:
CREATE INDEX pessoa
ON clientes (nome, sobrenome);
CREATE UNIQUE INDEX identificacao
ON pessoas (num_cpf);
REMOVENDO/DELETANDO ÍNDICES,
TABELAS E BD (DROP)
Os comandos utilizados a seguir serão utilizados para EXCLUIR,
então tenha muito cuidado e certeza ao utilizar estes
comandos.
Índices
Vamos ver o exemplo de como remover o índice de uma tabela:
ALTER TABLE tabela DROP INDEX nome_indice;
Tabela
DROP TABLE tabela;
Banco de Dados
DROP DATABASE banco_dados;
LIMPANDO OS DADOS
TABELA (TRUNCATE)
DE
UMA
Caso você não queira excluir a tabela, mas quer limpar os
dados contidos nela, você pode utilizar o comando TRUNCATE,
seguindo o exemplo abaixo:
TRUNCATE TABLE tabela;
ALTERANDO UMA TABELA (ALTER
TABLE)
O comando ALTER TABLE serve para adicionar, deletar ou alterar
colunas dentro de uma tabela. Vamos ver um exemplo de cada um
deles abaixo:
Inserindo coluna na tabela
Sintaxe:
ALTER TABLE tabela
ADD coluna tipo;
Exemplo:
ALTER TABLE clientes
ADD nascimento date;
Excluindo coluna na tabela
Sintaxe:
ALTER TABLE tabela
DROP COLUMN coluna;
Exemplo:
ALTER TABLE clientes
DROP COLUMN nascimento;
Alterando coluna na tabela
Sintaxe:
ALTER TABLE tabela
ALTER COLUMN coluna tipo;
Exemplo:
ALTER TABLE clientes
ALTER COLUMN nascimento date;
UTILIZANDO
CAMPO
INCREMENTÁVEL
INCREMENT)
AUTO
(AUTO
Este tipo permite gerar números únicos e crescentes sempre que
um novo registro for inserido (INSERT) em uma tabela.
Normalmente utilizado como chave-primária (PK).
Vejamos um exemplo de definição de campo auto increment quando
criamos uma tabela:
CREATE TABLE Clientes (
id_cliente int NOT NULL AUTO_INCREMENT,
nome varchar(255) NOT NULL,
endereco varchar(255),
cidade varchar(255),
PRIMARY KEY (id_cliente)
)
Quando for inserir algum registro nesta tabela, não precisa
declarar a coluna “id_cliente”, ou seja, a que está como
AUTO_INCREMENT, pois o próprio BD irá definir seu valor. Veja
o exemplo:
INSERT INTO Clientes (nome, endereco, cidade)
VALUES ("Diego", "Av. João Cabral Torres de Melo", "Maceió");
TABELAS VIRTUAIS (VIEW)
As VIEWS
contendo
sendo os
utilizar
estivesse
são conjuntos de resultados de um comando SQL,
colunas e dados como se fosse uma tabela normal,
campos de uma ou mais tabelas reais. Você pode
o WHERE e JOIN em uma VIEW para visualizar como se
vendo apenas uma tabela. Veja a sintaxe abaixo:
CREATE VIEW nome_view AS
SELECT coluna(s)
FROM tabela
WHERE condição;
Para visualizarmos a nossa VIEW, basta dar um SELECT nela:
SELECT * FROM nome_view;
Trabalhar com VIEWS é ótimo para evitar a utilização de SQL
grande, onde você irá constantemente, facilitando o comando
para visualizar os dados que você precisa.
Alterando a VIEW (CREATE OR REPLACE
VIEW)
Veja a sintaxe:
CREATE OR REPLACE VIEW nome_view AS
SELECT coluna(s)
FROM tabela
WHERE condição;
Excluindo a VIEW (DROP VIEW)
Sintaxe é esta:
DROP VIEW nome_view;
DATAS (DATE)
Uma coisa muito importante ao trabalhar com datas com o BD, é
ter certeza que você está inserindo o formato de sua data
igual ao formato aceito pela sua tabela. Veja abaixo algumas
das funções de datas utilizadas pelo MySQL:
Função
NOW()
Descrição
Retorna a data e hora atual do BD.
CURDATE()
Retorna a data atual do BD.
CURTIME()
Retorna a hora atual do BD.
DATE()
Extrai parte de uma data ou hora.
EXTRACT()
Retorna somente uma parte da data ou hora.
DATE_ADD()
DATE_SUB()
DATEDIFF()
DATE_FORMAT()
Adicionar um intervalo específico de tempo de
uma data.
Subtrai um intervalo específico de tempo de uma
data.
Retorna o número de dias entre um intervalo de
datas.
Exibe a data/hora em formatos diferentes.
Tipo de Dados para o DATE
Os tipos abaixo são utilizados na hora de criarmos uma tabela
em nosso BD:
DATE – formato YYYY-MM-DD
DATETIME – formato: YYYY-MM-DD HH:MM:SS
TIMESTAMP – formato: YYYY-MM-DD HH:MM:SS
YEAR – formato YYYY ou YY
Valores Nulos (NULL)
O valor NULL representa um dado desconhecido que está
faltando, ou seja, que esteja vazio, sem valor algum. Por
padrão, as colunas de uma tabela podem aceitar valores nulos.
Iremos ver os comandos IS NULL e IS NOT NULL.
Algumas características básicas sobre o NULL:
Este tipo de valor é tratado de forma diferente dos
outros;
É utilizado para preencher valores desconhecidos ou
inaplicáveis;
São valores padrões em comandos de INSERT ou UPDATE
quando não são definidos algum outro valor;
O valor NULL e 0 (zero) não podem ser comparados, pois
são valores diferentes. Não são equivalentes;
Os próximos dois comandos que iremos ver, IS NULL e IS NOT
NULL, são utilizados em comandos de seleção (SELECT), já que
não podemos utilizar os operadores de comparação como =, <, >
ou <>. Veja um exemplo de cada um deles.
IS NULL
SELECT nome,cidade,telefone FROM clientes
WHERE cidade IS NULL;
IS NOT NULL
SELECT nome,cidade,telefone FROM clientes
WHERE cidade IS NOT NULL;
DEFININDO PSEUDÔNIMOS (ALIAS)
Você pode renomear colunas e tabelas para uma consulta. Isto é
muito bom quando trabalhamos com consultas grandes e
complexas, facilitando a identificação dos campos, tanto na
leitura como na escrita.
Sintaxe do Alias com tabelas
SELECT coluna
FROM tabela AS nome_novo_tabela;
Sintaxe do Alias com colunas
SELECT coluna AS nome_novo_coluna
FROM tabela;
Vejam alguns exemplos de sua utilização:
SELECT c.nome, c.cidade, c.telefone
FROM clientes AS c
WHERE c.cidade IS NOT NULL;
LIMITANDO A
REGISTROS
(TOP/LIMIT)
QUANTIDADE DE
RETORNADOS
O comando TOP especifica a quantidade de registros a serem
retornados, podendo ser útil principalmente em tabelas
enormes, com milhares de registros. Pode-se utilizar definindo
um valor exato de registros ou em porcentagem do total. Vejam
os exemplos abaixo de suas utilizações:
Porcentagem
SELECT TOP 50 PERCENT * FROM clientes;
Número
SELECT TOP 2 * FROM clientes;
SELECT * FROM clientes LIMIT 2;
DEFININDO UM PADRÃO NO WHERE
(LIKE)
O operador LIKE é usado com a cláusula WHERE para refinar a
seleção utilizando um padrão definido em uma coluna. Veja um
exemplo:
SELECT * FROM clientes
WHERE nome LIKE "D%";
SELECT * FROM clientes
WHERE nome LIKE "%ie%";
Veja que o sinal de porcentagem (%) pode ser utilizado como um
curinga (está faltando letras no padrão), tanto antes como
depois do padrão de refinamento.
Veja abaixo mais detalhes de como trabalhar com curingas.
TRABALHANDO
(WILDCARDS)
COM
CURINGAS
Os curingas são utilizados em busca dentro de um BD, podendo
substituir um ou mais caracteres durante esta busca. Eles
devem ser utilizados com o comando LIKE. Veja abaixo a tabela
de uso:
Curinga
Descrição
%
Substitui por zero ou mais caracteres
_
Substitui exatamente por um caracter
[charlist]
Qualquer caracter dentro da lista
[^charlist]or
Qualquer caracter que não esteja na lista
[!charlist]
BUSCANDO UM DE VÁRIOS VALORES
PARA O WHERE (IN)
Com o comando IN, você pode especificar vários valores no
comando WHERE para fazer uma busca dentro desses valores
dados. Veja o exemplo:
SELECT * FROM clientes
WHERE cidade IN('São Paulo','Rio de Janeiro');
BUSCANDO VALORES DENTRO OU
FORA
DE
UM
INTERVALO
(BETWEEN)
Utiliza-se o BETWEEN dentro do comando WHERE para fazer uma
busca de valores que estejam entre um determinado intervalo de
dados. Veja a sintaxe:
SELECT coluna(s)
FROM tabela
WHERE coluna
BETWEEN valor1 AND valor2;
Veja alguns exemplos com uma busca dentro do intervalo
(BETWEEN) e fora do intervalo (NOT BETWEEN):
SELECT * FROM produtos
WHERE qtd BETWEEN 1 AND 10;
SELECT * FROM produtos
WHERE qtd NOT BETWEEN 1 AND 10;
Por enquanto é só pessoal. Espero que os comandos utilizados
até aqui sirva muito bem e ajude a tirar algumas dúvidas
frequêntes. Caso ainda tenha alguma dúvida, só comentar que eu
responderei assim que possível. E não deixem de assinar meu
blog com o seu e-mail ai do lado.
Abraços!
Download