6. PROGRAMAÇÃO SQL PARA MySQL
A linguagem de programação SQL (Structured Query Language), linguagem de consulta estruturada, surgiu na
década de 70, em um dos laboratórios da empresa estadunidense IBM, tornando-se
a linguagem padrão para bancos de dados relacionais.
Neste
manual, retirado da sexta parte do livro do livro PHP-GENERATOR, Criação de
Aplicativos com PHP e MySQL, serão mostrados alguns exemplos
básicos de programação SQL, testados em um banco de dados MySQL.
Nesses exemplos, o nomes de bancos, tabelas e campos não estão entre os sinais de crase. Caso isso seja exigido em sua versão do MySQL, acrescente esse sinal em suas sintaxes.
6.3. Exibindo bancos de dados existentes.
SHOW DATABASES; |
6.4. Criando um novo banco de dados chamado
“sistema”.
CREATE DATABASE sistema; |
6.5. Colocando um banco de dados já existente em uso.
USE test; |
6.6. Criando uma tabela
chamada “cidades” em um banco já
existente chamado “test”. Se o banco de dados “test” já estiver em uso. por meio do
comento USE “test”,
é desnecessário informá-lo antes do nome da tabela “cidades”.
CREATE
TABLE test.cidades (codigo
INT( 6 ) UNSIGNED NOT NULL
AUTO_INCREMENT, nome
VARCHAR(50), uf VARCHAR(2),
PRIMARY
KEY ( codigo ) ) ; |
UNSIGNED significa que código é um numero positivo, ou seja, maior que zero.
6.7. Exibindo tabelas
do banco de dados “test”.
SHOW tables; |
6.8. Exibindo
informações sobre a tabela cidades,
do banco de dados “test”.
DESCRIBE test.cidades; |
6.9. Inserindo dados na tabela “cidades” do banco de
dados “test”.
INSERT
INTO test.cidades (codigo,nome,uf) VALUES
("","LOANDA","PR"); INSERT
INTO test.cidades (codigo,nome,uf) VALUES
("","ROSANA","SP"); INSERT
INTO test.cidades (codigo,nome,uf) VALUES ("","RIO DE
JANEIRO","RJ"); INSERT
INTO test.cidades (codigo,nome,uf) VALUES ("","NOVO
HORIZONTE","SP"); INSERT INTO test.cidades (codigo,nome,uf) VALUES ("","NOVO HORIZONTE","BA"); |
Observe que, em VALUES, codigo não é informado porque na criação da tabela ele foi definido como número inteiro, não nulo, de auto-incremento.
6.10. Selecionando
registros inseridos na tabela “cidades”
do banco de dados “test” para
consulta de dados.
Seleciona
todos os registros da tabela cidades SELECT
*
FROM test.cidades; Seleciona
apenas os campos especificados de todos os registros SELECT codigo,nome FROM test.cidades; Seleciona
apenas os registros em que o campo uf='SP' SELECT *
FROM test.cidades WHERE uf='SP'; Seleciona
apenas os registros em que o campo uf='SP' ou 'PR' SELECT *
FROM test.cidades WHERE uf='SP' or uf='PR'; Seleciona
apenas os registros em que o campo nome='NOVO HORIZONTE' e uf='SP' SELECT *
FROM test.cidades WHERE nome='NOVO HORIZONTE' and uf='SP'; Seleciona
todos os campos de todos os registros em ordem crescente pelo campo nome SELECT * FROM test.cidades
ORDER BY nome; Seleciona
todos os campos de todos os registros em ordem decrescente pelo campo nome SELECT * FROM test.cidades
ORDER BY nome DESC; Seleciona
todos os registros em que o campo nome contém o texto 'HORIZONTE' SELECT
* FROM test.cidades WHERE nome
LIKE '%HORIZONTE%' |
6.11. Alterando
registros inseridos na tabela “cidades”
do banco de dados “test”
Altera
o conteúdo atual pelo conteúdo especificado em SET para o registro em que codigo = 1 UPDATE test.cidades SET codigo="",nome="CAMPINAS",uf="SP" WHERE codigo=1; |
6.12. Deletando
registros inseridos na tabela “cidades”
do banco de dados “test”
Exclui o registro em que codigo = 12 DELETE FROM test.cidades WHERE codigo = 12; Exclui todos os registros em que uf='PR' DELETE FROM test.cidades WHERE uf = 'PR'; Limpa todos os dados da tabela zerando o
auto-incremento do campo codigo TRUNCATE TABLE test.cidades; |
6.13. Alterando a
estrutura de uma tabela
Altera o campo nome para 40 caracteres ALTER TABLE test.cidades MODIFY nome VARCHAR(40) Altera inserindo uma nova coluna chamada
tamanho no inicio ALTER TABLE test.cidades ADD tamanho INT(15) FIRST; Altera inserindo uma nova coluna chamada cep no final ALTER TABLE test.cidades
ADD cep VARCHAR(15); Altera inserindo uma nova coluna chamada regiao depois da coluna uf ALTER TABLE test.cidades ADD regiao VARCHAR(15) AFTER uf; Altera excluindo o campo cep e a coluna cep ALTER TABLE test.cidades DROP cep Altera renomeando-a
para localidades ALTER TABLE cidades RENAME localidades |
6.14. Copiando ou renomeando uma tabela de dados
Copia a tabela cidades e toda sua estrutura
para a tabela localidades CREATE TABLE localidades SELECT * FROM cidades; Renomeia
tabela cidades para municipios RENAME TABLE test.cidades TO test.municipios; |
6.15. Exportando e
importando tabela de dados (muito útil na realização de backups de tabelas)
Exporta
uma tabela de dados para um arquivo txt SELECT
* FROM test.cidades INTO OUTFILE '/tmp/cidades.txt' FIELDS TERMINATED BY '#' LINES
TERMINATED BY '\n'; Importa uma tabela
de dados LOAD
DATA LOCAL INFILE '/tmp/cidades.txt' INTO TABLE cidades FIELDS TERMINATED BY '#' LINES TERMINATED BY '\n'; |
Onde: o simbolo sustenido(#) separa um campo de outro e (\n) é um quebra de linha, fazendo com que cada registro seja exportado para uma nova linha no arquivo texto.
6.16. Removendo uma
tabela ou um banco de dados
Remove permanentemente a tabela cidades DROP TABLE test.cidades; Remove permanentemente o banco de dados test DROP DATABASE test; |
6.17. Manutenção de
tabelas de dados
Remove permanentemente a tabela cidades DROP TABLE test.cidades; Remove permanentemente o banco de dados test DROP DATABASE test; |