dez200903
John Marques
1
Um pouco sobre SQL – Parte 1 – Seleção de Tabela
Olá pessoal,
Mas uma vez aqui, agora falando um pouco sobre sql a idéia é falar sobre o básico, mais especificamente sobre seleção de dados, então vamos lá ;D
Antes de iniciarmos vamos fazer uma tabela para estudo, segue abaixo a SQL de criação da tabela, lembrando que o SGBD utilizado será o MySQL, mas SQL não serve somente para MySQL, existem outros bancos que trabalham com SQL, como PostgreSQL, Oracle, SQL Server e por ai vai um penca de bancos.
CREATE TABLE `pessoas` (
`id` int(11) NOT NULL auto_increment,
`nome` varchar(200) default NULL,
`idade` int(3) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Essa tabela ficaria com essas colunas.
ID | NOME | IDADE
vamos dizer que nessa tabela acima já contenha dados ficando mais ou menos assim a estrutura.
ID | NOME | IDADE
1 | JOHN | 22
2 | JOAO | 33
3 | MARIA | 23
nesse caso temos 3 registros na tabela.
SELEÇÃO DA TABELA
Vamos dizer que queira trazer as informações da tabela então é com esse tipo de operação que você irá conseguir fazer, oO rs.
Basicamente temos um estrutura mais ou menos assim “SELECIONAR(SELECT) campos DA(FROM) tabela ONDE(WHERE) filtros ORDERNAR POR(ORDER BY) ordenacao“, então por exemplo, se quisessemos trazer todos os dados e todos os registros da tabela pessoas (citado no começo do artigo), fariamos assim:
SELECT * FROM pessoas
Resultado:
1 | JOHN | 22
2 | JOAO | 33
3 | MARIA | 23
perceba que logo após o select colocamos um *, isso representa todos os campos, se quisessemos descrimar quais os campos o banco nos retornaria, bastava fazer assim,
SELECT id, nome FROM pessoas
Resultado:
1 | JOHN
2 | JOAO
3 | MARIA
Nesse caso solicitamos que o banco nos retornasse somente os campos id e nome da tabela pessoas.
Agora vamos para o filtros, vamos dizer que queremos filtrar somente para aparecer somente o João, então segue exemplo.
SELECT * FROM pessoas WHERE id=’2′
OU
SELECT * FROM pessoas WHERE nome=’JOÃO’
no exemplo acima colocamos o filtro
Resultado:
2 | JOAO | 33
se você quiser selecionar somente alguns campos também pode.
SELECT id, nome FROM pessoas WHERE ….
mas o quando fazemos filtragem tempos as operadores de comparação nesse caso usamos igualdade, podemos usar de diferença ‘<>’ ou ‘!=’, podemos verificar se o valor é null ou não nulo com a comparação ‘is’ exemplo
– Verifica se o campo id não é nulo
SELECT * FROM pessoas WHERE id is not null
– Verifica se o campo id é nulo
SELECT * FROM pessoas WHERE id is null
legal, mas seguinte vamos para um outro operador de comparação o LIKE, acho que esse vai ser bem útil, vamos dizer que você queria trazer os registros de todas as pessoas que tem o nome iniciado com J, se fossemos usar operador de igualdade não consegueriamos pois ele traz examente o que igual ao valor do campo, então não daria certo, vamos ao LIKE ;D
–Selecione somente as pessoas com o nome iniciado em J
SELECT * FROM pessoas WHERE nome LIKE ‘j%’
Resultado
1 | JOHN | 22
2 | JOAO | 33
agora vamos dizer que você queira buscar somente os registro terminar no dígito N, (parace sei lá meio idiota, mas é somente ilustrativo, para entender o Like) então seria assim:
–Seleciona somente as pessoas que tem o nome terminado com N
SELECT * FROM pessoas WHERE nome LIKE ‘%n’
Resultado
1| JOHN | 22
agora vamos pensar e se você quisesse buscar registros que tivessem um parte, por exemplo buscasse todos os registros que contém ‘A’ no campo nome seria assim Oh!
– Seleciona as pessoas que contém a letra A no nome.
SELECT * FROM pessoas WHERE nome LIKE ‘%a%’
Resultado
3 | Maria | 23
Agora pessoal vamos fazer um exemplo com dois parâmetros de filtragem.
– Seleciona as pessoas que tem idade maior que 22 e começe o nome com a letra J
SELECT * FROM pessoas WHERE idade > 22 and nome LIKE ‘j%’
Resultado
2 | JOAO | 33
agora falar sobre a ordenação, como o restante acho que seja bem simples de entender, com o ORDER BY você indica por meio de qual campo o resultado deve ser ordenado ou se será randômico (RAND()), segue exemplo
– Seleciona as pessoas e ordena por idade de forma descente, ou seja, do maior para o menor.
SELECT * FROM pessoas ORDER BY idade DESC
Resultado
2 | Joao | 33
3 | Maria | 23
1 | John | 22
da mesma forma pode se colocar em ordem descendente
– Seleciona as pessoas e ordena por idade de forma ascendente, ou seja, do menor para o maior.
SELECT * FROM pessoas ORDER BY idade ASC
Resultado
1 | JOhn | 22
3 | Maria | 23
2 | Joao | 33
e quando você coloca randômico, o mysql retorna o resultado embaralhado, não os valores, mas linhas como assim, vamos dizer no caso acima, se fizesse um SQL
SELECT * FROM pessoas ORDER BY RAND()
poderia trazer resultados como 1,3,2 ou 3,1,2 ou 2,1,3 e por ai vai.
é isso ai pessoal, prometo que nos próximos artigos farei algo um pouco mais avançado.
Abraços,
John Marques
1 Comentário to “Um pouco sobre SQL – Parte 1 – Seleção de Tabela”
Responda







Bem pessoal estou com muitas duvidas em base de dados!
tenhu um trabalho onde tenhu de responder a uma pergunta…
que é: Liste os locais onde foram realizadas pelo menos duas contra-análises à mesma análise?
em que o meu script é o seguinte:
create table Analises (id_analise int,
tipo_analise varchar (30),
valor_analise int,
alimento varchar (30),
nr_registo int,
id_inspeccao int,
primary key (id_analise),
foreign key (nr_registo) references Fazer_Registo(nr_registo),
foreign key (id_inspeccao) references Inspeccao(id_inspeccao))
create table Contra_Analise (id_canalise int,
alimento varchar (30),
motivo varchar (100),
primary key (id_canalise))
create table Analise_Contra (id_canalise int,
id_analise int,
primary key (id_canalise, id_analise),
foreign key (id_canalise) references Contra_Analise (id_canalise),
foreign key (id_analise) references Analises (id_analise))
esta muito confuso mas será que alguem é capaz de responder a isto
agradecia muito a vossa ajuda