Vous êtes sur la page 1sur 17

FACULDADE DE COMPUTAO DE MONTES CLAROS

Apostila Introduo ao SQL


Structured Query Language - SQL

PROF. NAYARA MURA DE SOUZA











Montes Claros - MG
2013

FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 1

SQL: Structured Query Language Linguagem de Consulta Estruturada

uma linguagem usada para a consulta, atualizao, criao e gerenciamento de banco de dados
relacionais, cujo prottipo originariamente foi desenvolvido pela IBM na dcada 70. As instrues
que compem a linguagem SQL se dividem em quatro grandes grupos:
DDL - Data Definition Language Linguagem de definio de dados: Contm
instrues voltadas para a criao e manuteno de uma base de dados.
DML - Data Manipulation Language Linguagem de manipulao de dados: Contm
instrues voltadas para a manipulao dos dados contidos nas tabelas de um banco de
dados, como incluso, alterao e cancelamento de registros.
DQL - Data Query Language Linguagem de consulta de dados: Embora seja
composto por uma nica instruo (SELECT), porm com muitas clusulas, uma das
mais importantes, pois permite ao usurio efetuar consultas simples ou complexas em uma
base de dados.
DCL - Data Control Language Linguagem de controle de dados: Contm instrues
que permitem o controle de acesso a um banco de dados por parte de usurios do
sistema.

Regras usadas pelo SQL para nomear campos e definir os tipos de dados por eles suportados.
Nome de tabelas e campos:
o Nunca inicie o nome de um objeto com um nmero. Eles somente podem ser
iniciados com uma letra maiscula ou minscula (A..Z ou a..z), exemplo: Livro,
Cliente, titulo, nome, end, etc. Voc no pode usar: 1ttulo, 3autor, etc.
o Nunca use acentos ou cedilhas em seus nomes, exemplo: no lugar de ttulo,
endereo, use: titulo, endereco (sem acento e sem cedilha).
o No use espaos em branco ou smbolos, como: *, -, +, etc., porque so proibidos.
Os nicos smbolos permitidos so: trao (_) ou cifro ($). Assim sendo, no use:
titulo Livro, nome.Autor, preco+Item, etc. o modo correto : tituloLivro, nomeAutor,
precoItem, titulo_livro, nome_autor, preco_item, etc.
o Procure usar nomes curtos (mximo de 20 caracteres) e que lembrem seu
significado, isto vai facilitar bastante na interpretao de seu banco de dados.
melhor usar endCli para um campo que contenha o endereo de clientes, do que
um nome absurdo, como AxtNk, que nada tem a ver com endereo.
o Estabelea sua prpria nomenclatura de dados, como, por exemplo: Cli para uma
tabela de clientes, cliNome, cli_nome ou cNome para o campo que contenha o
nome do cliente, etc.

FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 2

Definio dos principais tipos de campos permitidos no SQL:

Tipo caractere de largura fixa
Permite o armazenamento de caracteres alfanumricos, de comprimento fixo, nos campos de uma
tabela, representado por: CHAR (n). Exemplo: cpf_cli CHAR (14), uf_cli CHAR (2), nome_cli
CHAR (50).

Tipo caractere de largura varivel
usado para armazenar caracteres alfanumricos, de comprimento varivel, nos campos de uma
tabela, representado por: VARCHAR(n). Exemplo: Nome_cli VARCHAR(50), End_cli
VARCHAR(50).

Tipo numrico inteiro
O tipo numrico inteiro permite o armazenamento de nmeros inteiros negativos ou positivos, que
estejam compreendidos entre 2.147.483.648 e 2.147.483.648. Representado por: INTEGER.

Tipo numrico inteiro curto
O tipo numrico inteiro curto armazena nmeros inteiros compreendidos entre 32.768 e 32.767,
ocupando 2 Bytes de armazenamento, sendo representado por: SMALLINT.

Tipo numrico decimal
Este tipo de campo usado para armazenar valores que contenham nmeros com casas
decimais preestabelecidas, sendo representado por: DECIMAL(p,e). Sendo que p corresponde ao
comprimento total do valor numrico, tambm conhecido por preciso, e e o nmero de dgitos de
sua parte fracionria, tambm conhecido por escala. O ponto decimal em si no contado como
um caractere, e o valor mximo permitido para a preciso (p) e a escala (e) 18, sendo que a
escala sempre deve ser menor ou igual preciso, exemplo: preco_livro DECIMAL (6,2)

Tipo numrico de dupla preciso
O tipo numrico de dupla preciso armazena valores decimais de ponto flutuante, e a preciso e a
escala possuem comprimentos variveis, com uma preciso de 15 dgitos compreendidos entre
2,22571553486231 x 10-308 a 1,79769313486231 x 10-308. O espao ocupado no
armazenamento de 8 Bytes, sendo representado por: DOUBLE PRECISION.



FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 3

Tipo numrico flutuante
Este tipo de campo armazena valores decimais de ponto flutuante, e a preciso e a escala
possuem comprimentos variveis, com uma preciso de sete dgitos compreendidos entre
1,175657 x 10-38 e 3,402823 x 10-38. O espao ocupado no armazenamento de 4 Bytes, sendo
representado por: FLOAT.

Tipo data
Usado no armazenamento de datas, sendo definido por: DATE.

Tipo hora
Tem por objetivo armazenar dados temporais compreendidos entre 00:00 AM at 23:59:9999 PM,
sendo definido por: TIME.

Tipo data e hora
Este tipo de campo tem por objetivo armazenar dados temporais compostos por uma data e uma
hora, sendo definido por: TIMESTAMP.

Tipo de dados nulos
O tipo de dados nulos uma condio usada para indicar que no obrigatria a presena de um
determinado valor em um campo. Valores nulos so bastante utilizados em instrues SQL, como
criao de tabelas, pesquisas, etc. Para inserir valores nulos em um campo, voc digita duas
aspas simples ( ) sem nenhum valore entre elas. Valores nulos podem ser atribudos a campos
do tipo string (caractere), cuja sintaxe definida por: NULL. Exemplo: fax_cli VARCHAR(9) NULL.
Indica que o campo fax_cli do tipo VARCHAR pode conter valores nulos NULL. Quando um
determinado campo for obrigado a conter um determinado valor, voc deve negar a condio de
NULL, antecedendo-a pela palavra-chave NOT, como mostramos em seguida: NOT NULL.
Exemplo: nome_cli VARCHAR(50) NOT NULL.

SGBD

Para as aulas de SQL ser necessrio instalar o Firebird e o IB Expert. O user name : SYSDBA,
e password: masterkey.





FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 4

Instrues DDL da Linguagem SQL

A fase que contempla a construo fsica de um banco de dados (criao e manuteno de suas
tabelas) definida por um grupo de instrues da linguagem SQL denominada DDL (Data
definition Language Linguagem de definio de dados), que permite criar (CREATE), alterar
(ALTER) e excluir (DROP) objetos de um banco de dados.

Domnios (Domains)

Sem dvida, o domnio (domain) uma das grandes invenes criadas para um sistema de
gerenciamento de banco de dados. Trata-se de um dicionrio de dados em que voc define
campos customizados a serem usados pelas tabelas que comporo uma base de dados. Embora
seu uso no seja obrigatrio, acostume-se a usa-los, pois so bastante teis quando vrias
tabelas de um banco de dados utilizam um mesmo tipo de campo, como, por exemplo: CPF,
nome, endereo, telefone, etc. Vamos supor que seu sistema possua quatro tabelas em que o
campo CPF seja utilizado. Neste caso, ao criar cada uma dessas tabelas, seria altamente
recomendvel ou at mesmo imprescindvel que o campo CPF tivesse as mesmas caractersticas
em todas as tabelas em que ele aparecesse, evitando discrepncias entre as caractersticas,
evitando assim, de ter que se lembrar delas, pois lembrar caractersticas algo que nunca ocorre,
ou voc as pesquisa ou acaba inserindo caractersticas diferentes nas diversas tabelas que usam
o CPF. Pelo que foi exposto at o presente momento, no fica difcil entender que domnios
devem ser criados antes que as tabelas de um banco de dados sejam definidas.


FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 5

Na linguagem SQL, domnios so criados por intermdio da instruo CREATE DOMAIN.
Sintaxe simplificada:
CREATE DOMAIN <nome do domnio> AS <tipo de dado>
[NOT NULL]
[DEFAULT <valor default>]
[CHECK (condio)

Em que:
Nome do domnio: (uso obrigatrio) contendo no mximo 128 caracteres. Use sempre
uma letra para o primeiro caractere, sendo que a partir do segundo caractere podem ser
usados nmeros, letras, underscore (_), arroba (@) ou cifro ($). No permitido o uso de
palavras reservadas ao SQL.
Tipo de dado: (uso obrigatrio) respeite as regras definidas para os tipos de dados.
NOT NULL: (uso facultativo) indica que o campo deve ser obrigatoriamente preenchido.
DEFAULT: (uso facultativo) define um valor padro (default) inserido automaticamente no
campo, quando nenhum outro valor for digitado.
CHECK: (uso facultativo) define uma regra para limitar valores digitados em um campo.

Nota: As clusulas entre colchetes so opcionais e as que esto entre os smbolos menor (<) e
maior que (>) devem ser substitudas pelos valores desejados.

Exemplos:
CREATE DOMAIN dnome AS VARCHAR (70) NOT NULL
CREATE DOMAIN ddata AS DATE DEFAULT NOW
CREATE DOMAIN dpreco AS DECIMAL (12,2) CHECK (value > 0)


FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 6

Abrir o IB Expert e criar os domnios listados abaixo:

Nome Tipo Tamanho Restries Comentrios
dcodigo Integer NOT NULL
Usado para o armazenamento de cdigos de
clientes, produtos, fornecedores, etc. Os nmeros
inseridos neste campo no podem conter valores
nulos.
dnome Varchar 70
Usado para nome de clientes, fornecedores,
ttulos de livros, etc.
dcpf Char 14
Usado para armazenar nmeros de CPF com
pontos e hfen.
dtiporua Varchar 4
Usado para armazenar o tipo do logradouro,
exemplo: Rua, Av, Prac, etc.
dnomerua Varchar 30 Usado para armazenar o nome do logradouro.
dnum Varchar 6 Usado para armazenar o nmero.
dcidade Varchar 30 Usado para armazenar nomes de cidades.
duf Char 2 Usado para armazenar unidades federativas.
destado Varchar 30 Usado no armazenamento de nomes de estados.
dcep Char 9 Usado para armazenar CEPs.
dddd Char 3 Usado para armazenar o DDD de um telefone.
dfone Char 13 Usado para armazenar nmeros de telefones.
demail Varchar 60 Usado para armazenar e-mails.
ddata Date Usado para armazenar datas.
ddtatual Date now
Usado no armazenamento de datas atuais, como,
por exemplo, a data de incluso de um registro
em uma tabela.

Sintaxe para criao:
CREATE DOMAIN <nome do domnio> AS <tipo de dado>
[NOT NULL]
[DEFAULT <valor default>]
[CHECK (condio)]

Sintaxe para alterao:
ALTER DOMAIN <nome do domnio> TYPE <tipo de dado>

FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 7

Domnios so alterados por intermdio da instruo ALTER DOMAIN. Sintaxe:
ALTER DOMAIN <nome do domnio> TYPE <tipo de dado>

Exemplo:
ALTER DOMAIN dendereco TYPE VARCHAR (50);
Altera o domnio dendereco para o tipo VARCHAR com 50 posies.

Como excluir domnios
Do mesmo modo que voc altera domnios, tambm pode exclui-los de um banco de dados por
intermdio da instruo DROP. Sintaxe:
DROP DOMAIN <nome do domnio>

Exemplo:
DROP DOMAIN demail;

Como criar tabelas

Na linguagem SQL, tabelas so criadas por intermdio da instruo CREATE TABLE. Sintaxe
simplificada:
CREATE TABLE <nome da tabela>
<nome do campo> <tipo de dado>
[NOT NULL]
[DEFAULT <valor default>]
[CHECK (condio)]
[CONSTRAINT <nome da constraint> PRIMARY KEY <nome do campo>]
[CONSTRAINT <nome da constraint> FOREIGN KEY <nome do campo>
REFERENCES <nome da tabela pai> (<campo da tabela pai) ]:
[ON UPDATE {CASCADE l NO ACTION}]
[ON DELETE {CASCADE l NO ACTION}]
Em que:
Nome da tabela: (uso obrigatrio) contendo no mximo 128 caracteres. Use sempre uma
letra par o primeiro caractere, sendo que a partir do segundo caractere podem ser usados
nmeros, letras, underscore (_), arroba (@) ou cifro ($). No permitido o uso de
palavras reservadas do SQL.
Nome do campo: (uso obrigatrio) respeite as mesmas regras pra o nome de tabelas.
Tipo de dado: (uso obrigatrio) respeite as regras definidas para os tipos de dados.

FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 8

NOT NULL: (uso facultativo) indica que o campo deve ser obrigatoriamente preenchido.
DEFAULT: (uso facultativo) define um valor padro (default) inserido automaticamente no
campo, quando nenhum outro valor for digitado.
CHECK: (uso facultativo) define uma regra para limitar valores digitados em um campo.
CONSTRAINT: (uso facultativo) define restries impostas tabela, garantindo sua
integridade.
PRIMARY KEY: (uso facultativo) define o campo que conter a chave primria de uma
tabela.
FOREIGN KEY: (uso facultativo) define se um determinado campo uma chave
estrangeira.
REFERENCES: (uso obrigatrio se FOREIGN for utilizado) estabelece o relacionamento
do campo com a tabela pai.
ON UPDATE: (uso facultativo se FOREIGN for utilizado) atualiza automaticamente os
valores contidos no campo, caso o valor do campo relacionado com tabela pai seja
alterado. A clusula NO ACTION (default) impede que esta atualizao seja feita
automaticamente. Por ser uma clusula default, voc no obrigado a escrev-la.
ON DELETE: ( de uso facultativo se FOREIGN for utilizado) exclui automaticamente os
valores contidos no campo, caso o valor do campo relacionado com a tabela pai seja
Excludo. A clusula NO ACTION (default) impede que esta excluso seja feita
automaticamente. Por ser uma clusula default, voc no obrigado a escrev-la.




FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 9

Como alterar tabelas
Quando uma tabela j estiver em seu banco de dados, qualquer alterao em sua estrutura deve
ser executada por intermdio da instruo ALTER TABLE, sendo as seguintes alteraes
possveis:
Alterar nomes de campos;
Adicionar novos campos;
Excluir campos;
Inserir novas restries ou alterar restries j existentes.

Para alterar a estrutura de uma tabela, a seguinte sintaxe simplificada deve ser usada:
ALTER TABLE <nome da tabela>
[ADD <nome do novo campo> <tipo do campo>] [NOT NULL]
[ALTER <nome do campo> TYPE <tipo do campo>]
[ALTER <nome do campo> TO <novo nome do campo>]
[DROP <nome do campo a excluir>]

Em que:
ADD: Adiciona um novo campo tabela;
ALTER...TYPE: Altera o tipo de um campo;
ALTER...TO: Altera o nome de um campo;
DROP: Exclui um campo da tabela.

Exemplos:
ALTER TABLE clientes ADD cpf CHAR (14) NOT NULL
Insere na tabela clientes o campo de nome cpf do tipo CHAR de 14 posies, sendo que seus
valores no podem ser nulos.

ALTER TABLE clientes DROP cpf
Exclui o campo cpf da tabela.

ALTER TABLE fornecedores ALTER valor TYPE decimal (10,2)
Altera o tipo do campo de nome valor para decimal (10,4)

ALTER TABLE fornecedores ALTER end TO endfor
Altera o nome do campo end para endfor.


FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 10

Como excluir tabelas

Caso uma tabela no seja mais til ao banco de dados, ela pode ser excluda por intermdio da
instruo DROP TABLE.

Sintaxe: DROP TABLE <nome da tabela>

Exemplo: DROP TABLE fornecedores
Elimina a tabela fornecedores do banco de dados. Uma vez excluda uma tabela, voc no pode
mais pode recuper-la, a menos que recupere o backup (cpia de segurana). Este assunto ser
tratado oportunamente.


FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 11

Criao de Tabelas
Abrir o IB Expert e criar as tabelas listadas abaixo:

Tabela ufs


Tabela atividades


Tabela areas


Tabela clientes




FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 12


Sintaxe:
CREATE TABLE <nome da tabela> <nome do campo> <tipo de dado>
[NOT NULL]
[DEFAULT <valor default>]
[CHECK (condio)]
[CONSTRAINT <nome da constraint> PRIMARY KEY <nome do campo>]
[CONSTRAINT <nome da constraint> FOREIGN KEY <nome do campo>
REFERENCES <nome da tabela pai> (<campo da tabela pai) ]:

FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 13

Instrues DML da Linguagem SQL

As instrues DML permitem manipular dados contidos nas diversas tabelas que compem um
banco de dados. Tais instrues se dividem em trs grupos, a saber:
INSERT: permite inserir registros em uma tabela;
UPDATE: efetua alteraes de dados em registros j existentes de uma tabela;
DELETE: exclui registros de uma tabela.

A instruo Insert

Essa instruo tem por objetivo adicionar um registro a uma determinada tabela de um banco de
dados, uma rotina largamente empregada na manuteno de qualquer base de dados. Imagine
novos livros sendo inseridos ao acervo de uma editora, o cadastramento de novos clientes e
fornecedores, etc. Sintaxe simplificada:
INSERT INTO <nome_da_tabela> (campo_1, campo_2, ..., campo_n)
VALUES (valor_campo_1, valor_campo_2, ..., valor_campo_n)

Em que:
Campo_1, campo_2, campo_n correspondem aos nomes dos campos aos quais os dados
sero acrescentados.
valor_campo_1, valor_campo_2, valor_campo_n correspondem aos valores a serem
inseridos nos campos especficos do novo registro. Cada valor inserido no campo que
corresponde posio do valor na lista: valor_campo_ 1 inserido no campo_1 do novo
registro, valor_campo_2 no campo_2I e assim sucessivamente. Voc deve separar os
valores com uma vrgula e colocar os campos do tipo texto e data entre apstrofos ( ).

Exemplo:
INSERT INTO Categorias (categoria) VALUES (Literatura)
Insere na tabela Categorias um novo registro em que o campo categoria recebe o nome de
Literatura. Para que um registro possa ser inserido em uma tabela, necessrio que o banco de
dados esteja conectado.





FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 14

A instruo Update

Sintaxe:
UPDATE <nome_da_tabela> SET <nome do campo> = <valor do campo> [WHERE condio]

Exemplos:
UPDATE clientes SET fone = 1111-2432 WHERE idcli = 5612
Atualiza o telefone do cliente de nmero 5612 para 1111-2432

UPDATE funcionarios SET salrio = 7500.00 WHERE codcli = 5612
Atualiza o salrio do funcionrio de cdigo nmero 5612 para 7500.00, na tabela funcionrios.
Em ambos os casos descritos, apenas um registro foi alvo do UPDATE.
A instruo update tambm pode ser utilizada para alterar mais de um campo simultaneamente.

Sintaxe:
UPDATE <nome_da_tabela>
SET <nome do campo_1> = <valor_1>,[<nome do campo_2> = <valor_2>,]
[<nome do campo_n> = <valor_n>]
[WHERE condio]
Mais de um registro tambm pode ser alterado simultaneamente:
UPDATE clientes SET tiprua = Avenida WHERE tiprua = Av.

A instruo Delete

Sintaxe: DELETE FROM <nome_da_tabela> [WHERE condio]

Exemplos:
DELETE FROM clientes exclui todos os registros da tabela clientes.

Instrues DQL (Linguagem de Consulta de Dados)

Sintaxe:
SELECT * FROM <nome da tabela>
Exemplo: SELECT * FROM Livros;
SELECT <nome campo_1, nome campo_2, nome campo_n> FROM <nome da tabela>

FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 15

Exemplos: SELECT ttulo, autor, preco FROM Livros;

A clusula where

SELECT titulo, autor, preco FROM livros WHERE autor = Carlos Antonio;

LIKE

SELECT titulo, autor, preco FROM Livros WHERE titulo LIKE %SITE%;
Retorna para a consulta os campos titulo, autor e preo, que contenham no ttulo a palavra SITE.
SELECT titulo, autor, preco FROM livros WHERE titulo = Windows 2000;
Retorna para a consulta os campos titulo, autor e preo, cujo ttulo seja igual a Windows 2000.

BETWEEN

SELECT titulo, autor, preo FROM livros WHERE preco BETWEEN 20.00 AND 50.00;
Retorna para a consulta os campos titulo, autor e preo, cujo campo preco contenha valores
compreendidos entre 20.00 e 50.00.
Os seguintes operadores tambm podem ser utilizados em uma consulta: > (maior que), >= (maior
ou igual a), < (menor que), <= (menor ou igual a), = (igual a) e <> (diferente).

Operadores lgicos:

SELECT titulo, autor, preo FROM Livros WHERE dtlanc >= 01/01/1980
Retorna para a consulta apenas os registros cujo campo dtlanc seja maior ou igual a 01/01/1980.
SELECT titulo, autor, preo FROM Livros WHERE datapedido <> 05/03/2002
Retorna para a consulta apenas os registros cujo campo dataPedido seja diferente de 05/03/2002.
Os operadores lgicos AND, OR, etc. tambm podem ser usados com a clusula WHERE.

UPPER

SELECT idcli, nomecli, telefone FROM clientes WHERE UPPER(nomecli) = UPPER (carlos
pangratti) o WHERE case-sensitive, o que pode resultar em pesquisas incorretas pois voc
nunca sabe exatamente como um determinado valor foi digitado. Para contornar este problema,

FACULDADE DE COMPUTAO DE MONTES CLAROS
Professora: Nayara Mura de Souza - nayamsouza@gmail.com



Apostila Banco de Dados 16

podemos usar a funo UPPER, que tem por objetivo converter todos os caracteres minsculos
em maisculos.

A clusula ORDER BY
Exemplos:
SELECT titulo, autor, preco FROM ivros ORDER BY preco asc

Vous aimerez peut-être aussi