Para começar vamos criar um banco de dados. Para esse artigo vou usar o Postgresql (versão 9.1), ele é gratuito e fácil de usar. Caso você queira baixa-lo, aqui está o link para o download. Para lhe auxiliar melhor, aumentando suba base de conhecimento sobre o PostgreSQL 9.1, você pode consultar meu artigo que te ensina a como instalar PostgreSQL 9.1 - A instalação é fácil e muito rápida. Recomendo a leitura :).

Comandos SQL

Em nossa primeira tela, vamos abrir o pgAdmin - é onde vamos executar os comandos.

Comandos SQL - pgAdmin

Agora vamos abrir o servidor local.

Comandos SQL - pgAdmin

Clique no banco de dados postgres, é o banco de dados default. Depois clique no icone SQL para que possamos criar o banco de dados.

Comandos SQL - pgAdmin

Create Database - SQL

Vamos usar nosso primeiro comando sql, o CREATE DATABASE, o nome do banco de dados será DB_Endereco.

 
CREATE DATABASE DB_Endereco;
Comandos SQL - Create Database

Clique a tecla F5 e espere o comando ser executado.

Comandos SQL - Create Database

Pronto criamos o nosso banco de dados, agora feche essa janela e de um refresh no nó Databases, verifique que nosso banco de dados foi criado, clique nele no banco de dados e depois clique de novo no icone Sql.

Comandos SQL - Create Database
Comandos SQL - Create Database

Comando Create Table - SQL

Com a nova janela aberta vamos criar nossas tabelas. Vamos utilizar nosso segundo comando Sql, o CREATE TABLE. A estrutura do comano é essa:

Nota: Para cada banco de dados os tipos de dados são diferentes, consulte meu artigo que fala sobre os tipos de dados clicando aqui.
 CREATE TABLE tbPais( bgId INT NOT NULL (NOT NULL indica que o campo não pode ser nulo, se for 
permitido nulo é só colocar NULL) ,vcDescricao character varying(50) NOT NULL , PRIMARY KEY
(bgId) (O comando PRIMARY KEY indica que o campo é chave primária, o campo não permiti valor 
duplicado, é único na tabela) ) 
Comandos SQL - Create Database

Crie as outras tabelas do nosso banco de dados. É só apagar o comando da janela e copiar cada comando create na janela e clicar a tecla F5.

 
CREATE TABLE tbEstado( bgId INT NOT NULL ,vcDescricao character varying(70) NOT NULL ,vcUF 
character varying(2) NULL ,bgIdPais INT NOT NULL , PRIMARY KEY(bgId) ) CREATE TABLE tbCidade
( bgId INT NOT NULL ,vcDescricao character varying(70) NOT NULL ,bgIdEstado INT NOT NULL
 , PRIMARY KEY(bgId) ) CREATE TABLE tbBairro( bgId INT NOT NULL ,vcDescricao character 
varying(70) NOT NULL ,bgIdCidade INT NOT NULL , PRIMARY KEY(bgId) ) CREATE TABLE tbLogradouro
( bgId INT NOT NULL ,vcDescricao character varying(70) NOT NULL ,vcCEP character varying(8) 
NOT NULL ,bgIdBairro INT NOT NULL , PRIMARY KEY(bgId) ) 
Comandos SQL - Create Database

Criar chaves estrangeiras - SQL

Agora vamos criar as chaves estrangeiras. Chave estrangeira é um campo que aponta para a chave primária de outra tabela, em vez de criamos um campo vcPais na tabela tbEstado, nós criamos um campo bgIdPais que vai ser chave estrangeira, com isso nós criamos o relacionamento entre as tabelas tbPais e tbEstado. Agora vamos executar o comando que criar a chave estrangeira.

 ALTER TABLE tbEstado (Comando para alterar a tabela) ADD CONSTRAINT tbEstado_bgIdPais 
(Nome da chave estrangeira) FOREIGN KEY (bgIdPais ) (Campo que vai ser a chave estrangeira) 
REFERENCES "tbPais" (bgId) (Campo que é chave primária da outra tabela). 

Aqui são os comandos para criar as chaves estrangeiras.

 ALTER TABLE tbEstado ADD CONSTRAINT tbEstado_bgIdPais FOREIGN KEY (bgIdPais) REFERENCES 
tbPais(bgId) ALTER TABLE tbCidade ADD CONSTRAINT tbCidade_bgIdEstado FOREIGN KEY (bgIdEstado) 
REFERENCES tbEstado(bgId) ALTER TABLE tbBairro ADD CONSTRAINT tbBairro_bgIdCidade FOREIGN KEY 
(bgIdCidade) REFERENCES tbCidade (bgId) ALTER TABLE tbLogradouro ADD CONSTRAINT 
tbLogradouro_bgIdBairro FOREIGN KEY (bgIdBairro) REFERENCES tbBairro (bgId) 

É so apagar o comando da janela e copiar cada comando na janela e clicar a tecla F5.

Comandos SQL - Criar chave estrangeira

Comando INSERT INTO - SQL

Vamos inserir nos primeiros registros, vamos utilizar o comando INSERT INTO. INSERT INTO nomeTabela (campos da tabela) VALUES (valores que serão inseridos).

Comandos SQL - INSERT INTO

O comando insert retornou um erro, isso acontece porque não existe o registro 1 na tabela tbPais, essa é uma segurança para o nosso banco, ele não permite colocar ids que não existe. A ordem que estão os comandos é importante para inserir os registros no nosso banco de dados.

 --INSERINDO NA TABELA tbPais INSERT INTO tbPais(bgId, vcDescricao) VALUES(1, 'Brasil'); 
INSERT INTO tbPais(bgId, vcDescricao) VALUES(2, 'Estados Unidos'); 
--INSERINDO NA TABELA tbEstado INSERT INTO tbEstado(bgId, vcDescricao, vcUF, bgIdPais) VALUES
(1, 'São Paulo', 'SP', 1); INSERT INTO tbEstado(bgId, vcDescricao, vcUF, bgIdPais) 
VALUES(2, 'Rio de Janeiro', 'RJ', 1); INSERT INTO tbEstado(bgId, vcDescricao, vcUF, bgIdPais) 
VALUES(3, 'Califórnia', NULL, 2); --INSERINDO NA TABELA tbCidade INSERT INTO tbCidade bgId, 
vcDescricao, bgIdEstado) VALUES(1, 'São Bernardo do Campo', 1); INSERT INTO tbCidade (bgId, 
vcDescricao, bgIdEstado) VALUES(2, 'Rio de Janeiro', 2); INSERT INTO tbCidade
(bgId, vcDescricao,
bgIdEstado) VALUES(3, 'Alameda', 3);--INSERINDO NA TABELA tbBairro INSERT INTO tbBairro(bgId, 
vcDescricao, bgIdCidade) VALUES(1, 'Baeta Neves', 1); INSERT INTO tbBairro(bgId, vcDescricao, 
bgIdCidade) VALUES(2, 'Mariópolis', 2); INSERT INTO tbBairro(bgId, vcDescricao, bgIdCidade) 
VALUES
(3, 'River Way', 3); --INSERINDO NA TABELA tblogradouro INSERT INTO tblogradouro
(bgId, vcDescricao, 
vcCep, bgIdBairro) VALUES(1, 'Rua Barretos', '09751450', 1); INSERT INTO tblogradouro
(bgId, vcDescricao, 
vcCep, bgIdBairro) VALUES(2, 'Rua 1', '12345678', 2); INSERT INTO tblogradouro
(bgId, vcDescricao, 
vcCep, bgIdBairro) VALUES(3, 'Wind', '12345678', 3); 

Comandos SQL - Create Database

Comando SELECT - SQL

Vamos agora fazer uma consulta com o comando SELECT.

Comandos SQL - SELECT
Comandos SQL - SELECT

Comandos INNER JOIN e WHERE - SQL

Agora vamos trazer os registros da tabela tbEstado com o nome do pais que o estado pertence. Vamos usar o comando INNER JOIN e WHERE.

Comandos SQL - INNER JOIN e WHERE
Comandos SQL - INNER JOIN e WHERE

Para atualizar os registros vamos utilizar o comando UPDATE. Vamos atualizar os registros da tabela tbLogradouro, para não atualizar todos os registros vamos utilizar o comando WHERE que serve para filtrar a consulta.

Comando SQL

 
UPDATE tbLogradouro SET 
vcDescricao = 'Wind 2' 
,vcCep = '04774577' 
WHERE 
bgId = 3 
Comandos SQL - INNER JOIN e WHERE

Executa o comando SELECT de novo e verifique que os dados foram alterados.

 SELECT L.bgId, L.vcDescricao AS 'Rua', B.vcDescricao AS 'Bairro' FROM tbLogradouro AS L 
INNER JOIN tbBairro AS B ON L.bgIdBairro = B.bgId WHERE l.bgId = 3 

comandos DELETE e WHERE - SQL

Agora vamos executar nosso último comando, vamos utilizar os comandos DELETE e WHERE, utilizado para excluir os registros no SQL. Vamos tentar rodar o comando abaixo:

 DELETE FROM tbBairro 
Comandos SQL - DELETE e WHERE

A execução do comando retorna um erro, isso acontece porque os registros da tabela tbBairro estão sendo utilizados na tabela tbLogradouro. Agora vamos executar o comando abaixo:

 DELETE FROM tbLogradouro WHERE bgId = 1; 
 DELETE FROM tbLogradouro; 
Comandos SQL - DELETE e WHERE