Guia de Comandos SQL: DDL, DML e DQL com PostgreSQL
Banco de Dados: Comandos SQL com PostgreSQL
OBS: Comandos baseados em PostgreSQL.
Para saber um pouco mais sobre SQL, acesse: http://pt.wikipedia.org/wiki/Sql
Criar e manipular registros com SQL.
Criando o banco de dados
Para criar o banco, siga os comandos abaixo:
- PostgreSQL:
createdb nome_do_banco; - MySQL:
create database nome_do_banco;
DDL – Linguagem de Definição de Dados
- CREATE
- DROP
- ALTER TABLE
- CREATE INDEX
- ALTER INDEX
- DROP INDEX
- CREATE VIEW
- DROP VIEW
CREATE
Comando utilizado para criar tabelas.
Comando: create table nome_tabela ( dicaTabela_atributo tipoDados );
Exemplo feito em sala:
create table cliente
(
cli_rg integer not null,
cli_nome varchar(100) not null,
cli_email varchar(100) not null
);Tabelas com Primary Key
Criando a chave principal, fazendo com que um determinado campo não possa ser repetido.
Exemplo feito em sala:
create table cliente
(
cli_rg integer not null,
cli_nome varchar(100) not null,
cli_email varchar(100) not null,
primary key (cli_rg)
);DROP
Elimina uma tabela, seus dados, atributos e referências.
Comando: drop table nome_da_tabela;
Exemplo feito em sala: drop table cliente;
ALTER
Este comando permite inserir ou eliminar atributos em tabelas já existentes.
Comandos:
- Inserir coluna:
alter table nome_tabela add nome_coluna tipo; - Excluir coluna:
alter table nome_tabela drop nome_coluna; - Renomear coluna:
alter table nome_tabela rename column nome_antigo to novo_nome; - Alterar tipo da coluna:
alter table nome_tabela alter column nome_coluna type novo_tipo;
Mais comandos ALTER:
- Oracle (excluir):
alter table nome_tabela drop column nome_coluna; - MySQL (alterar):
alter table nome_tabela modify nome_coluna tipo_coluna; - Firebird (alterar):
alter table nome_tabela alter column nome_coluna type novo_tipo; - Firebird (renomear):
alter table nome_tabela alter column antigo_nome to novo_nome;
DML – Linguagem de Manipulação de Dados
- INSERT
- UPDATE
- DELETE
INSERT
Comando utilizado para inserir dados nas tabelas.
Comando: insert into nome_tabela (atributo1, atributo2) values (valor1, 'valor2');
Exemplo feito em sala:
insert into cliente (cli_rg, cli_nome, cli_email) values (123456, 'Marcos', '[email protected]');Obs.: Em MySQL usa-se aspas duplas nos textos.
UPDATE
Comando utilizado para alterar os dados das tabelas.
Comando: update nome_tabela set nome_coluna = novo_valor;
Exemplo feito em sala: update cliente set cli_nome = 'Marcos Rogério';
DELETE
Comando utilizado para excluir dados das tabelas.
Comando: delete from nome_tabela where condição_para_exclusão;
Exemplo feito em sala: delete from cliente where cli_rg = 123456;
ATENÇÃO: O comando delete from cliente excluirá todos os registros da tabela; por isso, é importante sempre adicionar uma condição para excluir um único registro.
Exercício feito em sala: criar duas tabelas relacionadas
create table cidade
(
cid_codigo integer not null,
cid_nome varchar(100) not null,
cid_uf varchar(2) not null,
primary key (cid_codigo)
);
create table cliente
(
cli_rg integer not null,
cli_nome varchar(100) not null,
cli_email varchar(100) not null,
cli_cidade integer not null,
primary key (cli_rg),
foreign key (cli_cidade) references cidade(cid_codigo)
);Basta inserir alguns dados e testar o relacionamento entre as duas tabelas (integridade referencial).
DQL – Linguagem de Consulta de Dados
- SELECT
Cláusulas: FROM, WHERE, GROUP BY, HAVING, ORDER BY, DISTINCT, AND, OR (ou lógico), NOT.
Para visualizar, consultar ou selecionar dados, utilizamos o SELECT:
select * from nome_tabela;
select nome_coluna from nome_tabela;ORDER BY
A cláusula ORDER BY altera a ordem de apresentação do resultado da pesquisa e possibilita ordenar de forma ascendente ou descendente.
Exemplo: select * from cliente order by cli_nome;
WHERE
Com a cláusula WHERE é possível restringir os dados (tuplas) listados, ou seja, aplicar uma condição para que determinado registro apareça no resultado.
Operadores lógicos:
=igual>maior que>=maior que ou igual a<menor que<=menor que ou igual a
Exemplos:
select * from cliente where cli_cidade >= 2;
select * from cliente where cli_codigo >= 2 and cli_codigo <= 5;
select * from cliente where cli_codigo >= 2 and cli_codigo <= 5 and cli_nome = 'Marcos';
select * from cliente where cli_codigo >= 2 and cli_codigo <= 5 and cli_nome = 'Marcos' order by cli_nome;