Você está na página 1de 17

FACULDADE DE COMPUTAO DE MONTES CLAROS

Apostila 1 Banco de Dados


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

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.

Nunca use acentos ou cedilhas em seus nomes, exemplo: no lugar de ttulo, endereo, use: titulo, endereco (sem acento e sem cedilha).

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.

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.

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.

Apostila Banco de Dados

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

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.

Apostila Banco de Dados

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

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.

Apostila Banco de Dados

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

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.

Apostila Banco de Dados

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

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)

Apostila Banco de Dados

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

Abrir o IB Expert e criar os domnios listados abaixo:

Nome

Tipo

Tamanho Restries

Comentrios Usado para o armazenamento de cdigos de clientes, produtos, fornecedores, etc. Os nmeros inseridos neste campo no podem conter valores nulos.

dcodigo

Integer

NOT NULL

dnome

Varchar

70

Usado para nome de clientes, fornecedores, ttulos de livros, etc. Usado para armazenar nmeros de CPF com pontos e hfen. Usado para armazenar o tipo do logradouro, exemplo: Rua, Av, Prac, etc. Usado para armazenar o nome do logradouro. Usado para armazenar o nmero. Usado para armazenar nomes de cidades. Usado para armazenar unidades federativas. Usado no armazenamento de nomes de estados. Usado para armazenar CEPs. Usado para armazenar o DDD de um telefone. Usado para armazenar nmeros de telefones. Usado para armazenar e-mails. Usado para armazenar datas. Usado no armazenamento de datas atuais, como, now

dcpf

Char

14

dtiporua

Varchar

4 30 6 30 2 30 9 3 13 60

dnomerua Varchar dnum dcidade duf destado dcep dddd dfone demail ddata Varchar Varchar Char Varchar Char Char Char Varchar Date

ddtatual

Date

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>
Apostila Banco de Dados 6

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

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.
7

Apostila Banco de Dados

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

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.

Apostila Banco de Dados

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

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.

Apostila Banco de Dados

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

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.

Apostila Banco de Dados

10

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

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


Tabela ufs

Tabela atividades

Tabela areas

Tabela clientes

Apostila Banco de Dados

11

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

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) ]:

Apostila Banco de Dados

12

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

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.

Apostila Banco de Dados

13

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

A instruo Update

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

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

UPDATE funcionarios SET salrio = 7500.00 WERE 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>
Apostila Banco de Dados 14

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

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,

Apostila Banco de Dados

15

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

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

Apostila Banco de Dados

16

Você também pode gostar