Avançar para o conteúdo

Comandos de Manipulação de Dados em MySql

Depois do tutorial de como criar tabelas, eis como manipular os dados em MySQL.

Vamos passar a analisar os comandos mais habituais para manipulação de dados em SQL:

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

Existem mais alguns, que abordaremos oportunamente, mas estes são os mais comuns

SELEÇÃO DE DADOS

O comando SELECT permite selecionar dados a partir de uma tabela ou de várias tabelas. Tem uma sintaxe bastante extensa e potente.

Abaixo apresta-se toda a sintaxe deste comando e, mais à frente, é explicado um subconjunto dessa mesma sintaxe, nomeadamente os subcomandos e opções mais frequentes.


SELECT
[ALL | DISTINCT | DISTINCTROW]
		[HIGH_PRIORITY]
		[STRAIGHT_JOIN]
		[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE][SQL_CALC_FOUND_ROWS]
expr_select [, expr_select …]
[FORM referências_tabelas
[WHERE condição]
[GROUP BY {nome_col | expr | posição}
		[ASC | DESC], … [WITH ROLLUP]]
	[HAVING condição_where]
[ORDER BY {nome_col | expr | posição}
[ASC | DESC], …]
[LIMIT {[início,] contagem | contagem OFFSET início}]
[PROCEDURE nome_procedimento(lista_argumentos)]
[INTO OUTFILE ‘nome_ficheiro’
[CHARACTER SET código_carateres]
Opções_exportação
| INTO DUMPFILE ‘nome_ficheiro’
| INTO nome_variável [, nome_variável]]
	[FOR UPDATE | LOCK IN SHARE MODE]]
    

O termo expr_select indica a coluna que se pretende obter com o comando SELECT.

O termo referências_tabelas indica a tabela ou tabelas onde se pretendem consultar os dados. A cláusula WHERE indica qual a condição ou condições que as linhas têm que satisfazer para serem selecionadas.

As colunas selecionadas podem ser ordenadas ou agrupadas usando as cláusulas ORDER BY ou GROUP BY.

A cláusula HAVING tem que vir depois de uma cláusula GROUP BY e antes de qualquer cláusula ORDER BY. É aplicada mesmo antes do resultado ser apresentado ao cliente.

EXEMPLO DE UTILIZAÇÃO DA CLÁUSULA WHERE


SELECT utl_nome FROM utilizador WHERE utl_paisid=1;

O comando anterior seleciona todos os nomes de utilizadores que pertencem ao país com código 1.

EXEMPLO DE UTILIZAÇÃO DA CLÁUSULA ORDER BY


SELECT utl_nome FROM utilizador ORDER BY utl_nome DESC;

O comando anterior apresenta os nomes de todos os utilizadores ordenados por ordem alfabética decrescente de nome.

EXEMPLO DE UTILIZAÇÃO DA CLÁUSULA GROUP BY


SELECT utl_nome, utl_paisid FROM utilizador GROUP BY utl_paisid

O comando anterior apresenta os nomes e códigos de país dos utilizadores agrupados por código de país, ou seja, apresenta apenas um utilizador de cada país.

Este código que se segue é idêntico ao anterior, mas filtra o resultado pela condição da cláusula HAVING.


SELECT utl_nome, utl_paisid FROM utilizador GROUP BY utl_paisid HAVING utl_paisid=1;

EXEMPLOS DE UTILIZAÇÃO DA CLÁUSULA LIMIT


SELECT * FROM utilizador ORDER BY utl_nome LIMIT 2;

SELECT * FROM utilizador ORDER BY utl_nome LIMIT 5,2;

No exemplo anterior, o primeiro comando seleciona os dois primeiros nomes depois de ordenados por ordem alfabética crescente. O segundo comando seleciona dois utilizadores, a partir do quinto exclusive, depois de ordenados por ordem alfabética crescente.

INSERÇÃO DE DADOS

O comando INSERT permite inserir linhas numa tabela. No quadro abaixo apresenta-se a sintaxe mais usual deste comando.


INSERT [LOW_PRIORITY | DELAYED |HIGH_PRIORITY] [IGNORE]
[INTO] nome_tbl [nome_col, …]
	{VALUES | VALUE} ({expr | DEFAULT},…),(…),…
	[ON DUPLICATE KEY UPDATE
Nome_col=expr
[,nome_col=expr] …]

Caso não se indique o nome das colunas antes da cláusula VALUES, os valores a inserir têm que ser indicados pela ordem com que os campos foram criados na tabela. Embora seja opcional indicar os nomes das colunas antes da cláusula VALUES, é conveniente fazê-lo pois, se no futuro a tabela sofrer alterações de estrutura, o comando SQL continua válido.

EXEMPLO DE COMANDO INSERT SEM DEFINIÇÃO DE COLUNAS


INSERT INTO pais VALUES
(1, ‘Portugal’),
(2, ‘Espanha’),
(3, ‘França’),
(4, ‘Grécia’),
(5, ‘Itália’);

Ao indicar as colunas onde se pretende fazer a inserção, é possível especificar apenas alguns campos e não necessariamente a totalidade dos campos da tabela.

EXEMPLO DE COMANDO INSERT COM DEFINIÇÃO DE COLUNAS


INSERT INTO utilizador (utl_nome, utl_passe, utl_paisid) VALUES
(‘Maria’, ‘abc’, 1),
(‘Manuel’, ‘xpto’, 2),
(‘João, ‘123’, 1),
(‘Júlia’, ‘xyz‘, 3),
(‘Sofia’, ‘321’, 4);

O comando atrás executa uma inserção de 5 linhas na tabela utilizador onde apenas são afectados 3 campos: tl_nome, utl_passe e utl_paisid.

ATUALIZAÇÃO DE DADOS

O comando UPDATE permite fazer alterações nos dados contidos numa ou mais tabelas. A sintaxe para alterações numa tabela é indicada abaixo.


UPDATE [LOW_PRIORITY] [IGNORE] referência_tabela
	SET nome_col1={expr1|DEFAULT} [,
Nome_col2={expr2|DEFAULT}]…
	[WHERE condição_where]
	[ORDER BY …]
	[LIMIT contagem]

EXEMPLO DE UTILIZAÇÃO DO COMANDO UPDATE


UPDATE utilizador SET utl_paisid=2 WHERE utl_id=4

O comando anterior atualiza o código do país para o valor 2, para o utilizador com o identificador (utl_id) igual a 4.

REMOÇÃO DE DADOS

O comando DELETE permite remover linhas de uma ou mais tabelas. A sintaxe para remoção de linhas de uma tabela é apresentada de seguida


DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM nome_tbl
	[WHERE condição_where]
	[ORDER BY …]
	[LIMIT contagem]

EXEMPLO DE UTILIZAÇÃO DO COMANDO DELETE


DELETE FROM utilizador WHERE utl_id=4 LIMIT 1;

O comando anterior elimina o utilizador com o identificador (utl_id) igual a 4. Por uma questão de segurança deve utilizar-se, sempre que possível a cláusula LIMIT para evitar remoções não pretendidas.

Comentários Facebook