Sei sulla pagina 1di 13

Manual de introduo ao SQL

Pedro Teixeira.
Sistemas de Informao Universidade Federal do Mato Grosso do Sul(UFMS)
{Patrick Garcia de Freitas} patrickfreitas110@gmail.com
{Pedro Teixeira} preisteixeira@gmail.com

Resumo. Este artigo tem o objetivo de levar introduo da Linguagem


SQL e seu uso na prtica, dando condies ao leitor da mesma de criar
bancos e tabelas, editar bancos, tabelas e tuplas, inserir tuplas e dados e
remover dados em qualquer Banco de Dados que faa uso desta linguagem
(podendo haver mudanas na linguagem de acordo com o Banco).

Sumrio
1. Introduo
2. Criando um Banco de Dados
3. Restries 1
4. Inserindo Dados Tabela
5. Alteraes
6. Atualizaes e Remoo de Dados
7. Select
8. Joins
9. Order By
10. Count
11. Group By e Funes Agregadas
12. Like
13. Between
14. Having
15. Concluso
16. Referncias

1. Introduo
O SQL utilizado quando se trabalha com bancos de dados,
utilizada em vrias linguagens que renem o Structured Query Language
seguindo o exemplo de SQL Server, Oracle, Mysql e etc. Atualmente o
SQL considerado o padro para manipulao de dados em um banco de
dados. A padronizao do SQL cuidada por duas entidades a ANSI
(American National Standards Institute) e a ISO (International Standards
Organization).
2. Criando um Banco de Dados
A criao de um Banco de Dados dada pelo comando CREATE
DATABASE seguido do nome do banco, sendo sua sintaxe definida nesta
forma:

CREATE DATABASE BANCO;

Feito isso nosso prximo passo criar as tabelas que formaro nosso
banco, faremos isso atravs do comando CREATE TABLE seguido do
nome da tabela. Sua sintaxe ser definida da seguinte forma:
CREATE TABLE tabela;

Na criao de cada tabela devemos acrescentar os atributos logo


aps o comando de criao da tabela, sendo que estes sero dispostos na
tabela na ordem em que forem escritos no comando de criao. Os
atributos devem ser precedidos pelo tipo de dados que ser armazenado
neste.
CREATE TABLE tabela (
INTEGER atributo1,
VARCHAR(30) atributo2,
DATE atributo3,
BIT atributoN

);

Os atributos devem ser separados por vrgula e estar entre


parnteses, devendo haver um ponto e vrgula ao fim do comando (isto
vale para todos os comandos em linguagem SQL). No sendo necessrio
a utilizao da vrgula aps o ultimo atributo. Caso seja necessrio, devese incluir a quantidade de caracteres aceitos pelo atributo entre parnteses.
Este comando dever gerar uma tabela com o seguinte aspecto:

atributo1

atributo2

atributo3

atributo4

Como foi citado anteriormente, os atributos estaro dispostos na


tabela na ordem em que foram inclusos no cdigo.
3. Restries 1
Ao criar nosso Banco de Dados, ns podemos criar restries que
obriguem o usurio a inserir apenas valores vlidos ao nosso banco, como
por exemplo o bom uso dos tipos de atributos. Entretanto isso nem
sempre o suficiente, nesse caso nos utilizamos restries, que so
formas de garantir a integridade do nosso banco e a validade das suas
informaes.
Algumas dessas restries podem ser includas ao criarmos a tabela,
como por exemplo o NOT NULL, que restringe q a tupla seja criada sem
que este atributo receba algum valor vlido. O NOT NULL muito til
caso haja algum atributo que deva obrigatoriamente ser preenchido como
no caos de login e senha, Nome de usurio, cdigo ou nome de algum
produto, enfim.
Outra clusula muito utilizada, e necessria, o comando UNIQUE,
este utilizado para que um determinado atributo possa receber um valor
apenas uma vez, ou seja se a sua tabela recebeu um valor Pedro em um
atributo login, e este esteja utilizando a clausula UNIQUE, o valor
Pedro nesta tabela ser nico, como o nome sugere o atributo no
poder receber mais de uma vez o mesmo valor.
Vejamos como fica a sintaxe das duas clusulas deste tpico:
CREATE TABLE funcionrio (
INTEGER codigo NOT NULL UNIQUE,
VARCHAR(30) nome NOT NULL,
DATE data_de_registro,

BIT sexo
);

Como podemos observar no Exemplo um mesmo atributo pode


receber as duas clusulas, neste caso o atributo codigo dever ser nico
em toda a tabela e no pode receber o valor nulo, ou seja deve ser
preenchido com um valor vlido.
Podemos ainda criar chaves para que sejam mais fceis as restries
e as pesquisas, vejamos como criar uma chave primaria:
CREATE TABLE funcionrio (
INTEGER codigo PRIMARY KEY,
VARCHAR(30) nome NOT NULL,
DATE data_de_registro,
BIT sexo
);

Como pudemos observar a clusula PRIMARY KEY (chave


primria), no recebe as clusulas NOT NULL e UNIQUE, por ser
obrigatoriamente nica e no nula.
Ainda utilizando as chaves vamos observar a utilizao de chaves
estrangeiras em uma outra tabela:
CREATE TABLE dependentes (
INTEGER codigo_funcionario NOT NULL,
INTEGER codigo_dependente PRIMARY KEY,
VARCHAR(30) nome NOT NULL,
DATE nome_funcionrio,
BIT sexo,
FOREIGN KEY (codigo_funcionario) REFERENCES funiconario(codigo)
);

Se observarmos o exemplo podemos observar a chave estrangeira


cdigo_funcionario (FOREING KEY), porm para que esta funcione de
forma a fazer a referncia correta devemos acrescentar uma linha extra
nossa query,nessa linha ns dizemos que a nossa chave estrangeira faz
referncia (REFERENCES) ao atributo cdigo da tabela funcionrio.
Podemos fazer tambm esta referncia atravs de uma constraint,
que vai nos ajudar a manter a integridade do nosso banco, vamos ver:

CREATE TABLE qualificao(


INTEGER cdigo_funcionario NOT NULL,
cargo VARCHAR(30) NOT NULL,
SETOR VARCHAR(30),
CONSTRAINT pk_codigo PRIMARY KEY (cdigo_funcionrio)
REFERENCES funcionario (cdigo)
);

Ao declarar uma constraint ns devemos dar a ela um nome


(CONSTRAINT nome), referenciar qual ser a chave de referencia na
prpria como chave primria (PRIMARY KEY atributo_chave) e
referenciar qual tabela e qual o atributo ser o parmetro de referencia
(REFERENCES tabela 2 (atributo_chave_t2)). Ficando assim uma
frmula genrica:
CONSTRAINT nome PRIMARY KEY atributo_chave
REFERENCES tabela 2 (atributo_chave_t2)

Dado isto j podemos comear a preencher nossa tabela.

4. Inserindo Dados Tabela


Aps criada a nossa tabela ns podemos preenche-la, para isso
utilizamos o comando INSERT, este deve receber alguns parmetros para
inserir os valores nas tuplas corretamente, por exemplo para determinar
em qual tabela o valor ser inserido utilizamos o comando INTO seguido
do nome da tabela: INSERT INTO tabela. E definimos os parmetros a
serem inseridos na ordem em que eles ficaram dispostos na tabela atravs
da clausula VALUES. Neste caso a sintaxe fica assim:
INSERT INTO tabela
VALUES (
115172,
Varcharexemplo,
01/01/2015,
0
);

Ns tambm podemos especificar em que ordem queremos inserir


os atributos, para isso definimos a ordem deles antes da clausula
VALUES:
INSERT INTO tabela

(atributo3,atributo2,atributo4,atributo1)
VALUES (
01/01/2015,
115172,
0,
Varcharexemplo
);

Desta mesma forma podemos definir quais atributos queremos


inserir, ou seja ns podemos especificar quais atributos queremos inserir
tabela, sem a obrigatoriedade de inserir todos eles todas as vezes que
desejarmos inserir um valor, basta definirmos quais atributos vamos
inserir e atravs da clausula VALUES inserir apenas os valores
necessrios:
INSERT INTO tabela (atributo2)
VALUES (115172);

5. Alteraes
Aps criarmos um banco de dados ns podemos modificar sua
configurao sem que seja necessrio criar um novo banco ou uma nova
tabela, para isso usaremos o comando ALTER que deve ser seguido de o
que desejamos alterar.
Vamos comear inserindo um atributo tabela com a clusula ADD:
ALTER TABLE nome_da_tabela ADD nome_do_atributo tipo;

Como se pode ver devemos indicar em qual tabela faremos a


alterao e adicionar (ADD) o atributo, declarando seu tipo.
Podemos ainda alterar o tipo de atributo da tabela, neste caso
utilizaremos a clausula ALTER COLUMN:
ALTER TABLE nome_tabela
ALTER COLUMN nome_do_atributo novo_tipo;

A nica observao que neste caso devemos declarar o tipo de


atributo que desejamos que substitua o antigo.
No caso de deletar um atributo utilizamos o DROP COLUMN:

ALTER TABLE nome_tabela DROP COLUMN nome_atributo;

Para Alterar o nome da tabela usamos o RENAME TABLE TO:


RENAME TABLE nome_tabela TO novo_nome_tabela;

Em alguns Bancos pode-se encontrar esta sintaxe:


ALTER TABLE nome_tabela RENAME TO novo_nome_tabela;

Para alterar o nome do banco de dados a sintaxe bem parecida:


ALTER DATABASE nome_banco RENAME TO novo_nome;

6. Atualizaes e Remoo de Dados


Aps criar e customizar nossa tabela ns ainda precisaremos alterar
as informaes nela contidas. Para isso faremos uso do comanto
UPDATE, ou seja no estaremos alterando e sim atualizando a nossa
tabela, mudando valores que j haviam sido inseridos anteriormente.
Entretanto para que isso funcione necessrio que seja passado um
parmetro para que o banco identifique qual a tupla e o atributo a ser
alterado para isso utilizaremos as clausulas SET e WHERE:
UPDATE nome_tabela
SET atributo1=valor1, atributo2=valor2;
WHERE atributo=valorX;

Como podemos observar a clusula SET onde iremos definir qual


atributo ir receber novos valores e a clausula WHERE onde iremos
informar qual a condio onde deve ser feita a atualizao.
Para remover alguma tupla da nossa tabela usamos o comando
DELET da seguinte forma:
DELET FROM tabela;

Para especificar quais tuplas devem ser removidas podemos utilizar


a clausula WHERE e inserir uma condio para que as tuplas sejam
removidas:

DELET FROM tabela WHERE condio;

7. Select
Aps concluirmos a parte estrutural do banco ns iremos trabalhar
com ele e comearemos pelo comando SELECT.
O comando SELECT tem a funo de pesquisar entre a tabela as
tuplas que atendem a uma determinada condio, sua sintaxe genrica
seria:
SELECT * FROM tabela;

Essa pesquisa retorna todas as tuplas de uma tabela, o caractere


especial * indica que no foi especificado nenhum atributo, portanto
todos eles retornam no resultado da pesquisa. Para especificar um ou mais
atributos devemos inserir eles na seleo desta forma:
SELECT atributo1,atributo2,... FROM tabela;

Tambm podemos selecionar tuplas especficas, determinando um


parmetro que identifique-a atravs da clusula WHERE:
SELECT * FROM tabela WHERE condio;

Com esta clusula podemos comparar um ou mais atributo com


algum valor desejado:
SELECT * FROM tabela WHERE atributo1=valor1 OR atributo2=valor2

Observe que foi utilizado a clausula OR (ou) que indica que a


pesquisa deve retornar valores onde qualquer uma das duas condies
seja verdadeira, tambm vlido o AND (e) onde as duas condies
devem ser atendidas.
Podemos tambm selecionar na tabela apenas as tuplas onde um ou
mais atributos no possuam valores repetidos, para isso utilizamos o
DISTINCT:
SELECT DISTINCT atributo1, atributo2 FROM tabela;

8. Join
O join o comando responsvel pela unio de tabelas para que
possamos visualizar e pesquisar itens em duas ou mais tabelas utilizando
uma condio, por exemplo:
SELECT * FROM tabela1 JOIN tabela2;
Para identificar quais atributos devem ser exibidos utilizamos o
comando SELECT:
SELECT atributo1,atributoF
FROM tabela1 JOIN tabela2
ON atributo1 = atributoF;

Isso retornar os atributos atributo1 e atributoF em todas as


tuplas onde atributo1 for igual ao atributoF, caso no exista
correspondncia de uma tabela na outra ele no retornara nada, para criar
esta condio utilizamos a clausula ON seguida da condio desejada,
entretanto esta impede que ele seja mais complexo do que isso.
Caso seja necessrio podemos utilizar mais de uma clusula para
filtrar mais, como as clusulas WHERE e DISTINCT, que j estudamos
nos SELECTS.
O comando JOIN ou INNER JOIN so comandos de equivalncia,
ou seja todas as tabelas que sero unidas tem o mesmo peso e valor na
pesquisa.
LEFT JOIN e RIGHT JOIN so usados caso seja necessrio que
retornem na pesquisa todos os itens da tabela direita (RIGHT JOIN) ou da
tabela da esquerda (LEFT JOIN), alm, claro dos itens correspondentes
pesquisa. Ou seja, ao contrrio do INNER JOIN, estes dois fazem uma
pesquisa onde uma tabela retorna todos os seus valores independente de
satisfazer ou no a condio, e a outra retorna apenas quando a satisfaz.
Onde no houver itens correspondentes, de uma tabela outra, os
campos sero preenchidos com o valor nulo (NULL).
FULL OUTER JOIN, ou s FULL JOIN e usado quando voc h a
necessidade de retornar tudo de todas as tabelas, a partir da validade da
condio que foi utilizada, como por exemplo:
SELECT atributo1,atributoF FROM tabela1 FULL OUTER JOIN tabela2 ON
atributo1=atributoF;

Isso vai relacionar todas as colunas de ambas as tabelas onde a


condio for satisfeita.

9. Union
Usado para unir o resultado de dois os mais Selects, muito parecido
com os Joins j apresentados mais ele necessita que ambas tabelas tenham
as os mesmos tipos de atributos e estejam na mesma ordem:
SELECT atributo1,atributo2,atributo3
atributoF,atributoS,atributoT;

FROM

table1

UNION

SELECT

O UNION suprime todos os resultados repetidos, eliminando todas


as tuplas repetidas, caso queira os resultados repetidos ter de usar o
UNNION ALL:
SELECT atributo1, atributo2, atributo3 FROM table1 UNION ALL SELECT
atributoF, atributoS, atributoT;

10. Order by
O comando Order By tem a funo de ordenar o resultado dos
Select partir de uma determinada condio, caso sejam numrico temos
ASC (acendente) e DESC (descendente):
SELECT atributo1,atributo2,atributo3 FROM table1 ORDER BY atributo1 ASC;
SELECT atributoF,atributoS,atributoT FROM table2 ORDER BY atributoF
DESC;

Ou s pelo atributo escolhido, neste caso ele ir ordenar na ordem


crescente (ascendente):
SELECT atributo1,atributo2,atributo3 FROM table1 ORDER BY atributo1;

Podemos ainda usar ASC e DESC ao mesmo tempo:


SELECT atributo1,atributo2,atributo3 FROM table1 UNION ALL SELECT
atributoF,atributoS,atributoT ORDER BY atributo1 ASC, atributoT DESC;

Neste caso seria ordenado primeiramente pelo atributo1 (ascendente) e


logo depois pelo atributoT (descendente).

11. Count
O comando COUNT conta um determinado atributo, e devolve esta
contagem na forma de outro atributo. Quando no h qualquer espcie de
condio ele conta a quantidade de linhas de uma coluna:
SELECT COUNT atributo1 FROM tabela1;

Entretanto este comando pode ser usado junto com as clausulas


DISTINCT para no contar valores repetidos, ou WHERE para
determinar uma condio, conforme j vimos anteriormente.
SELECT COUNT atributo1 FROM tabela1 WHERE atributo1=100;

12. Group by e Funes Agregadas


Este tem uso semelhante ao Order By, que pode ser usado em
conjunto. o GROUP BY serve para agrupar os valores que se repetem nas
colunas, utilizando como parmetro o prprio atributo:
SELECT * FROM tabela GROUP BY atributoX;
ELE funciona em conjunto com algumas das funes agregadoras,
sendo elas o AVG() que retorna a mdia aritmtica, o MAX() que retorna
o valor mximo, o MIN() o valor mnimo, o FIRST() traz o primeiro
valor, o LAST() o ltimo valor, SUM() a somados valores da coluna, e
COUNT() anteriormente explicado. Agora alguns exemplos:
SELECT MAX(atributo1) FROM tabela1;
SELECT MIN(atributo2) FROM tabela1;
SELECT LAST(atributo3) FROM tabela1;
SELECT FIRST(atributoT) FROM tabela2;
SELECT AVG(atributoF) FROM tabela2;
SELECT SUM(atributoF) FROM tabela2;

Agora usado em conjunto com o Order By:

10

SELECTatributo1,atributo2,atributo3 FROM table1 GROUP BY(atributo1)


ORDER BY (atributo3);

13. Like

O operador Like e usado em conjunto com o WHERE para buscar


em tuplas valores que voc tem exatamente certeza do que , mais e algo
e parecido, com por exemplo, voc sabe que tem nomes na coluna, ento
voc quer todos os que se parecem com Pedro, ento voc faz uma busca
parecida com isso:
SELECT atributo2 FROM table1 WHERE atributo2 LIKE 'Pe%;

14. Between

O operador Between tem funcionamento parecido com o Like,


usado junto com WHERE, s que nele voc quer todos os valores entre
uma faixa que voc define como esta aqui:
SELECT atributo1 FROM table1 WHERE atributo1 BETWEEN 7 AND 17;

15. Having

A clusula Having usada junto com WHEERE para possibilitar


usar alguma funo de agregao como o neste exemplo:
SELECT atributo1 FROM table 1 JOIN ON table2 WHERE atributo1=atributoF
HAVING COUNT (atributo1)>5;

16. Concluso
A linguagem SQL nos permite uma gama enorme de possibilidades,
ela foi criada com a inteno de padronizar e simplificar o uso e a
manipulao de dados, entretanto necessrio um conhecimento mnimo
sobre banco de dados para que seja feito o bom e correto uso dessa
linguagem e suas ferramentas. Este Artigo no traz pratica a criao de
um banco de dados real, com esquemas e relacionamentos, nosso objetivo
de apresentar o bsico sobre a Linguagem de Consulta Estruturada
(SQL) e suas funes.

11

17. Referncias
Souza, Marco Aurelio de (2004) Mais sobre Sql , Pl / Sql , Sql Plus Manual de Referncia Completo e Objetivo, Editora Ciencia Moderna.
Junior, Ary dos Saton Rocha (2013) SQL Passo a Passo, Editora
Ciencia Moderna.
Site: http://www.w3schools.com/sql/default.asp, Acesso: junho de
2015.

12

Potrebbero piacerti anche