Nothing Special   »   [go: up one dir, main page]

Banco de Dados PDF

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 22

Sumrio

1.

CONCEITO DE BANCO DE DADOS ..........................................................................................................5


1.1 Sistema de Gerenciamento de Banco de Dados: ............................................................................. 5
1.1.1 MySQL:................................................................................................................................. 5
1.1.2 Tipos de Dados: ................................................................................................................... 5

2.

SQL: ..................................................................................................................................................6
2.1 DDL: .................................................................................................................................................. 7
2.1.1 Create: ................................................................................................................................. 7
2.1.2 USE:...................................................................................................................................... 7
2.1.3 DROP: ................................................................................................................................... 7
2.1.4 SELECT DATABASE() ............................................................................................................. 7
2.1.5 Show Databases: ................................................................................................................. 8
2.1.6 Criando uma tabela: ............................................................................................................ 8
2.1.7 DROP TABLE: ...................................................................................................................... 12
2.1.8 ALTER: ................................................................................................................................ 12
2.2 DML: ............................................................................................................................................... 13
2.2.1 INSERT: .............................................................................................................................. 13
2.2.2 Consultas no SQL: .............................................................................................................. 14
2.2.3 UPDATE: ............................................................................................................................. 14
2.2.4 ELETE: ................................................................................................................................ 15
2.2.5 Comandos para Leitura de Dados: .................................................................................... 16
2.3 Stored Procedured: ........................................................................................................................ 18
2.3.1 Criando uma Stored Procedure: ........................................................................................ 20

1.

CONCEITO DE BANCO DE DADOS

Um banco de dados pode ser compreendido como uma coleo de dados que esto relacionados e
so manipulados pelo SGBD (Sistema de Gerenciamento de banco de dados). Um Sistema Gerenciador de
Banco de Dados (SGBD) uma coleo de programas que habilitam usurios para criar e manter um Banco
de Dados. O SGBD um software de finalidade geral que facilita o processo de definio, construo e
manipulao de bancos de dados.
So conceitos de Banco de Dados:
WIEDERHOLD - Um Banco de Dados uma coleo de dados mutuamente relacionados.
CHU - Um Banco de Dados um conjunto de dados relacionados entre si.
DATE - Um Banco de Dados uma coleo de dados operacionais armazenados usados pelos
sistemas de uma determinada aplicao.
KORTH - Um Banco de Dados uma coleo de dados que contm informao de um particular
empreendimento.
ELMASRI & NAVATHE - Um Banco de Dados uma coleo de dados relacionados.
ENGLES - Um Banco de Dados uma coleo de dados operacionais usados pelo sistema de
aplicaes de uma empresa.
1.1

Sistema de Gerenciamento de Banco de Dados:

Um Banco de Dados armazenado e gerenciado por um Sistema Gerenciador de Banco de Dados


(SGBD). Esse sistema tem o objetivo de permitir a definio da sua estrutura de dados, isto , tabelas e
relacionamentos, e gerenciar o acesso a essas informaes. O SGBD possui mecanismos de consultas que
possibilitam a insero, alterao, excluso e listagem das informaes armazenadas por ele.
Para ilustrar todos os aspectos prticos de um sistema de Banco de Dados, ser utilizado o MySQL.
A escolha do SGBD se d pelo fato de o mesmo ser distribudo gratuitamente, pela simplicidade e facilidade
de uso. Esse sistema pode ser obtido a partir do site http://www.mysql.com/downloads.

1.1.1

MySQL:

Para manipular o SGBD faz-se necessrio iniciar uma conexo com o mesmo. Essa conexo
estabelece a ligao entre o SGBD e a aplicao que manipular os dados. Vale ressaltar que o SGBD pode
estar em uma mquina colocada em qualquer lugar do planeta, e ainda assim ser acessada remotamente
pela aplicao.
Para estabelecer a conexo precisa-se de um usurio e uma senha para realizar o acesso. Esse
sistema possui um usurio padro chamado root e que no possui senha, no necessrio fornecer uma
senha para efetuar a conexo com o servidor. O usurio root o administrador do Banco de Dados e possui
autorizao para realizar qualquer operao dentro do MySQL. Este diferente do root do Linux, que o
responsvel pela administrao do sistema operacional. Possivelmente o acesso ao Linux durante o curso
no ser feito atravs desse usurio. Porm, como existe o administrador do banco, que por coincidncia
se chama root, ser possvel realizar qualquer operao no MySQL, mesmo no tendo acesso de
administrador no Linux.
Para estabelecer essa conexo, primeiro deve-se executar um terminal no Linux. Nesse ambiente
existem aplicaes grficas, contendo janelas, cones, imagens, etc. Por outro lado existem aplicaes que
no apresentam esses elementos grficos e, portanto, so executadas a partir de um terminal.

1.1.2

Tipos de Dados:

O MySQL apresenta um vasto conjunto de dados que permite a representao das mais variadas
informaes existentes no mundo real. Por exemplo, possvel criar uma coluna para armazenar uma
msica, um vdeo ou at mesmo uma imagem. Alm de dados mais comuns, tais como datas, nmeros,
letras e textos, dentre outros.

Para simplificar a discusso, sero descritos aqui apenas os tipos de dados relevantes para a
soluo do problema proposto no incio do captulo. Portanto, nem todos os tipos de dados existentes no
DBDesigner4, e por consequncia no MySQL, sero descritos aqui. Maiores informaes sobre todos os
tipos
de
dados
existentes
no
MySQL
podem
ser
encontradas
no
site
http://www.mysql.com/documentation.
Os tipos de dados podem ser agrupados em trs grandes grupos que so os textos e datas,
nmeros e horas. A Tabela abaixo apresenta um resumo dos tipos de atributos que sero utilizados no
modelo proposto.
CATEGORIA

TIPO
Integer
Double
Int

Nmeros
Decimal

Texto
Data / hora

Char(x)
Varchar(x)
Date
Time
Datetime

DESCRIO
Nmeros inteiros
Nmeros reais ou ponto-flutuante
Nmeros inteiros
Decimal(t,d)
T = tamanho nmeros com preciso fixa tais como moeda,
D = nmero lembrando que o ponto o separador da de casas decimais
Parte fracionria ou centavos
Texto com tamanho mximo de x caracteres
Data no formato aaaa-mm-dd
Hora no formato hh:mm:ss
Data e hora. Exibido como yyyy-mm-dd hh:mm:ss

Ao inserir uma linha ou registro em uma tabela deve-se informar um valor para cada coluna,
respeitando o tipo de dados definido para aquele atributo. Existem situaes em que o valor a ser colocado
em uma coluna no conhecido no momento da incluso dos dados. Por exemplo, se existir uma coluna
que armazena a data de falecimento dos funcionrios, essa data em geral no conhecida no momento da
incluso do registro.
Para contornar a situao existe um valor especial conhecido como NULL que denota o fato de que
a informao no conhecida. No caso da data de falecimento, pode-se utilizar o valor NULL para os
funcionrios que ainda esto vivos. possvel definir no momento da criao da tabela se as colunas
aceitam ou no este valor especial. Isso feito atravs da clusula NOT NULL, que deve ser colocada nas
colunas que no aceitaro o NULL, lembrando que por padro, qualquer coluna aceita o NULL.
importante lembrar que colunas de qualquer tipo podem receber o valor NULL.
2.

SQL:

uma linguagem procedural fundamentada no modelo relacional que responsvel por manipular
e criar Banco de Dados utilizando um SGBD. A linguagem SQL foi definida no ano de 1974 pela IBM. Sua
primeira verso teve o nome de SEQUEL Structured English Query Language. fundamentada no modelo
relacional.
Um Banco de Dados entendido como uma coleo de tabelas. De fato uma forma de se
organizar as informaes dentro do SGBD, isto , cada aplicao pode ter o seu prprio banco de dados,
onde estaro apenas as tabelas que fazem parte daquele problema.
A linguagem SQL dividida em duas partes: Linguagem para Definio de Dados (DDL Data
Definition Language), e Linguagem para Manipulao de Dados (DML Data Manipulation Language). Na
DDL encontram-se comandos para a criao e alterao de dados, tais como bancos de dados e tabelas,
permitindo, por exemplo, a definio de uma nova tabela ou at mesmo a incluso de uma coluna em uma
tabela j existente. J a DML apresenta os comandos para a insero, alterao, excluso e leitura dos
dados contidos nessas tabelas.

2.1

DDL:

DDL (Data Definition Language) - Linguagem para Definio de Dados contm os comandos para a
criao de Bancos de Dados, tabelas, bem como a alterao e excluso dos mesmos. So exemplos de
comandos DDL:
CREATE DATABASE/SCHEMA, TABLE, VIEW, FUNCTION, INDEX
DROP DATABASE/SCHEMA, TABLE, VIEW, INDEX
TRUNCATE TABLE
ALTER DATABASE/SCHEMA, TABLE, VIEW
MSCK REPAIR TABLE (or ALTER TABLE RECOVER PARTITIONS)
SHOW DATABASES/SCHEMAS, TABLES, TBLPROPERTIES, PARTITIONS, FUNCTIONS, INDEX[ES],
COLUMNS, CREATE TABLE
DESCRIBE DATABASE, table_name, view_name
2.1.1

Create:
O primeiro passo para se trabalhar com um Banco de Dados cri-lo utilizando a seguinte sintaxe:
CREATE DATABASE <nomedobanco>;
Observe o exemplo a seguir:

Figura 1 Criao do banco de dado


Observe que aps o comando de criao utiliza-se o ; para encerr-lo.
Depois de realizada a criao da base de dados indispensvel dizer ao SGBD qual base ser
utilizada j que possvel ter vrias bases em um nico SGBD. Para isso, utilize a sintaxe a seguir:

2.1.2

USE:
USE < nomedobanco> ;

Figura 2 Utilizando a base de dados criada


Uma vez selecionado o Banco e Dados, pode-se manipular as tabelas contidas nele, ou at mesmo
criar novas tabelas dentro dele mesmo. Para remover um Banco de Dados e todo o seu contedo, o
comando DROP DATABASE deve ser utilizado.

2.1.3

DROP:

DROP DATABASE nome_do_banco


2.1.4

SELECT DATABASE()

O comando Select exibe o database atual o qual est se trabalhando. Para exibir o banco unepi, o
qual foi criado anteriormente, basta seguir a sintaxe abaixo:

SELECT DATABASE ();


7

Figura 3 Utilizando o Select Database

2.1.5

Show Databases:
Para exibir os Bancos de Dados criados no SGBD, basta seguir o seguinte comando:

SHOW DATABASES ;

Figura 4 - Banco de dados presentes no MySQL

2.1.6

Criando uma tabela:

Para criar uma tabela imprescindvel identificar, inicialmente, os atributos e seus tipos de dados,
bem como as restries em relao ao valor NULL, isto , se havero colunas com valores indefinidos. Alm
disso, necessrio identificar a chave primria da tabela, que o conjunto de colunas que referenciam de
forma nica cada registro da tabela.
Finalmente, para as tabelas que participam de algum relacionamento necessrio determinar as
chaves estrangeiras e as restries que se aplicam sobre elas. Nesse caso, o objetivo da chave estrangeira
identificar os registros que participam da relao e impor as regras de integridade que regem o
relacionamento. Por exemplo, em um relacionamento entre funcionrios e equipes, deve-se garantir que
no haver um membro da equipe que no esteja cadastrado na tabela de funcionrios. Ou em um
relacionamento entre pais e filhos deve-se garantir que no haver um filho sem um pai.
Para criar a tabela no MySQL desse exemplo utiliza-se o comando CREATE TABLE. Observe a seguir:
CREATE TABLE nome_da_tabela (
Coluna1 TIPO_COLUNA_1,
Coluna 2 TIPO_COLUNA_1,
...
Coluna N TIPO_COLUNA_N,
PRIMARY KEY (colunas),
[FOREIGN KEY (colunas) RESTRIES]
) [ENGINE=tipo];
Um modelo relacional composto por tabelas onde, individualmente, cada uma possui um nome.
Cada tabela formada por linhas e colunas. Uma linha composta por um conjunto de campos ou
atributos (Linha: Tupla, Registro). Cada campo identificado com um nome.
Um BD relacional composto por chaves que servem para identificar e estabelecer relaes entre
linhas de uma tabela. Os tipos de Chaves so:
Chave Primria: uma coluna ou atributo que identifica unicamente cada linha da tabela.

Chave Estrangeira: Coluna ou combinao de colunas que aparecem na chave primria de outra
tabela.
Como descrito na listagem anterior, para criar uma tabela deve-se especificar o nome de cada
coluna ou atributo que a constitui, seus tipos e a sua chave primria. Nota-se que a chave estrangeira
opcional, portanto, aparece entre colchetes ([FOREIGN KEY]).
No MySQL possvel escolher o tipo de tabela a ser criado (ENGINE), nessa apostila ser sempre
utilizado o InnoDB, que possui suporte ao conceito de restries de chaves estrangeiras.
Exemplo:

CREATE TABLE cargos (


codigo integer unsigned NOT NULL auto_increment,
nome char(50) NOT NULL,
PRIMARY KEY (codigo))
ENGINE=InnoDB;
CREATE TABLE empresa (
codigo integer unsigned NOT NULL auto_increment,
nome char(60) NOT NULL,
cnpj char(20) NOT NULL,
telefone char(20) NOT NULL,
PRIMARY KEY (codigo))
ENGINE=InnoDB;
CREATE TABLE equipes (
codigo integer unsigned NOT NULL auto_increment,
nome char(60) NOT NULL,
PRIMARY KEY (codigo))
ENGINE=InnoDB;
No exemplo, todas as colunas foram criadas com a opo NOT NULL, isto , no possvel informar
o valor NULL para nenhuma das colunas. Todas as tabelas tm uma coluna-cdigo que a chave primria
da tabela. Isso significa dizer que no h nessas tabelas dois registros com o mesmo cdigo, caso contrrio
no seria possvel encontrar um determinado registro na base de dados devido ambigidade. Caso ocorra
uma tentativa de inserir dois registros com o mesmo cdigo numrico, o SGBD emitir uma mensagem de
chave duplicada (Duplicate key entry), e inibir a insero do mesmo.
A Figura 5 ilustra a situao onde feita a tentativa de inserir o cargo de pedreiro utilizando o
cdigo idntico ao do cargo de arquiteto. Percebe-se, em destaque na figura, a mensagem de erro emitida
pelo SGBD ao tentar executar a insero atravs do acionamento do boto Apply Changes (Aplicar
alteraes).

Figura 5 Criando uma tabela


Na definio dos cdigos foi utilizado o atributo AUTO_INCREMENT, cuja funo gerar um
nmero sequencial automtico. Isso significa dizer que durante a insero, se o cdigo for omitido o SGBD
criar um cdigo a partir do maior cdigo cadastrado, acrescido de um. Ou seja, se o maior cdigo de
cargos o valor dois, a prxima insero de cargos gerar o cdigo trs, e assim sucessivamente. Isso reduz
a possibilidade de erros devido a chaves duplicadas, j que o cdigo ser gerado automaticamente pelo
sistema e nunca se repetir.
Para utilizar o recurso do AUTO_INCREMENT, a coluna deve ser declarada como do tipo inteiro e
dever ser a chave primria da tabela. Caso contrrio, o sistema no permitir a sua criao.
Primary key: indica o tipo da chave que ser utilizada como chave primria no Banco de Dados.
Unique: uma restrio de integridade que indica que um campo no poder receber valores
repetidos na tabela, ou seja, dois registros no podem ter o mesmo valor para esse campo.
Para conferir se de fato a tabela foi criada conforme o previsto, basta seguir o exemplo:

Describe <nomedatabela>;

Figura 6 Descrevendo uma tabela

10

As demais tabelas do banco curso apresentam relacionamentos entre elas, obedecendo as regras
de integridade definidas pelo modelo lgico da aplicao.
CREATE TABLE funcionarios (
cpf char(20) NOT NULL,
Cargos_codigo int(10) unsigned NOT NULL,
nome char(60) NOT NULL,
nascimento date NOT NULL,
telefone char(20) NOT NULL,
PRIMARY KEY (cpf),
FOREIGN KEY (Cargos_codigo) REFERENCES cargos (codigo))
ENGINE=InnoDB;
CREATE TABLE obras (
codigo int(10) unsigned NOT NULL auto_increment,
Empresa_codigo int(10) unsigned NOT NULL,
nome char(50) NOT NULL,
inicio date NOT NULL,
termino date NOT NULL,
PRIMARY KEY (codigo),
FOREIGN KEY (Empresa_codigo) REFERENCES empresa (codigo) ON DELETE
CASCADE ON UPDATE CASCADE)
ENGINE=InnoDB;
CREATE TABLE obras_tem_equipes (
Obras_codigo int(10) unsigned NOT NULL,
Equipes_codigo int(10) unsigned NOT NULL,
PRIMARY KEY (Obras_codigo,Equipes_codigo),
FOREIGN KEY (Obras_codigo) REFERENCES obras (codigo) ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (Equipes_codigo) REFERENCES equipes (codigo) ON DELETE
CASCADE ON UPDATE CASCADE)
ENGINE=InnoDB;
Percebe-se que nessas tabelas existe, alm da chave primria, a definio de chaves estrangeiras, j
que estas tabelas participam de relacionamentos. No caso da tabela de funcionrios, os registros desta
esto associados aos registros existentes na tabela de cargos. Ou seja, todo funcionrio tem um cargo,
onde esta relao salientada pela coluna Cargos_codigo da tabela de funcionrios.
Uma chave estrangeira nada mais que a chave primria de uma tabela colocada em outra tabela
para identificar a relao entre elas. Para cri-la deve-se indicar qual o conjunto de colunas que a compe,
bem como a tabela e coluna que ela referencia.
No exemplo tem-se FOREIGN KEY (Cargos_codigo) REFERENCES cargos (codigo). Significa dizer que
os valores armazenados na coluna Cargos_codigo da tabela de funcionrios, deve ser um valor contido na
coluna cdigo da tabela de cargos. Dessa forma, o SGBD assegura que nenhum funcionrio ter um cargo
que no esteja cadastrado na tabela de cargos.
Existe ainda a situao onde uma alterao ou excluso de um cargo pode levar a uma
inconsistncia de dados na tabela de funcionrios. No caso de uma remoo ou modificao de um cargo
para o qual existam funcionrios cadastrados, deve-se garantir que o funcionrio no ficar com um cargo
invlido.
Para isso, foram especificadas as restries de chave estrangeira ON UPDATE CASCADE e ON
DELETE RESTRICT. Isto , quando o cdigo de um cargo for alterado o SGBD propagar automaticamente a
modificao para todos os funcionrios que estejam cadastrados com esse cargo (CASCADE). J no caso da
remoo, o sistema no permitir a excluso de cargos que apresentem funcionrios associados a ele
(RESTRICT). Vale ressaltar que a opo CASCADE ou RESTRICT pode ser aplicada s clusulas UPDATE e
DELETE, de acordo com a restrio imposta pelo modelo.

11

Para ilustrar a utilizao das clusulas RESTRICT e CASCADE, considere um cadastro de funcionrios
e os seus dependentes ou filhos. Se o CPF do funcionrio, que a chave primria for alterado necessrio
alterar o CPF na tabela de filhos, pois ao contrrio, a relao entre as duas entidades se perderia, j que o
filho estaria associado com um CPF de um funcionrio inexistente. Dessa forma, pode-se inibir a alterao
do CPF do pai durante um UPDATE, empregando a clusula RESTRICT. Pode-se tambm, possibilitar a
alterao automtica do CPF em ambas as tabelas atravs do CASCADE.
O mesmo raciocnio se aplicaria no momento da excluso de um funcionrio, isto , no comando
DELETE. Ao excluir um funcionrio no se pode manter os registros e seus eventuais dependentes, pois
dessa forma teramos registros rfos na tabela de dependentes. Portanto, pode-se inibir a remoo dos
funcionrios que tenham filhos com o RESTRICT, ou forar a excluso dos filhos com a opo CASCADE.
Todo esse mecanismo visa manuteno da consistncia das informaes.
Uma nica tabela pode conter mais de uma chave estrangeira, dependendo de como esto
organizados os relacionamentos entre elas. Isto o que ocorre no caso da tabela obras_tem_equipes, que
se relaciona com as tabelas obras e equipes, simultaneamente. Por isso apresenta duas chaves
estrangeiras, referenciando a chave primria de cada tabela. O grande benefcio das chaves estrangeiras
o fato de que o prprio SGBD assegura que as restries de integridade pertinentes ao modelo sero
aplicadas, mesmo que o usurio do banco desconhea as regras.

2.1.7

DROP TABLE:
Para remover uma tabela, utiliza-se o comando DROP TABLE conforme sintaxe abaixo:

DROP TABLE nome_da_tabela


Ao executar esse comando, a tabela ser apagada por completo, juntamente com os dados que,
por ventura, estejam armazenados nela. Portanto, deve-se ter bastante cuidado na utilizao do mesmo
para evitar resultados indesejados.
Outra situao comum no dia a dia da utilizao de um sistema de Banco de Dados a necessidade
de alterar a estrutura de uma tabela j existente. Por exemplo, supondo uma alterao no modelo lgico da
aplicao de forma que se tenha que armazenar a data de entrada do funcionrio na empresa, o que no
era necessrio anteriormente.

2.1.8

ALTER:

Para contemplar essa situao seria necessria a incluso de uma nova coluna do tipo data tabela
de funcionrios, previamente criada. Em outro cenrio pode-se remover uma coluna, alterar o seu nome,
ou at mesmo o tipo de dados que ela armazena. Imaginando que o nome do funcionrio tenha sido
definido inicialmente com tamanho mximo de 15 caracteres ou letras, e surgiu um novo funcionrio com
um nome extenso e que requer mais que 15 caracteres para ser armazenado. Neste caso, o tipo do dado
dever ser alterado para satisfazer esta nova condio. O comando para modificar a estrutura de tabelas
o ALTER TABLE, que pode ser utilizado para os propsitos apresentados anteriormente.
Para a utilizao do comando ALTER TABLE, observe a sintaxe abaixo:

ALTER TABLE nome_da_tabela ADD nome_da_coluna TIPO;


ALTER TABLE nome_da_tabela DROP nome_da_coluna;
ALTER TABLE nome_da_tabela MODIFY nome_da_coluna TIPO;
ALTER TABLE nome_da_tabela CHANGE coluna_antiga coluna_nova TIPO;
Assim, finaliza-se a descrio da parte de definio de dados da linguagem SQL, tornando possvel o
entendimento e aplicao dos mecanismos para a construo de bases de dados reais.

12

Figura 7 Inserindo uma coluna na tabela


2.2

DML:

A segunda parte da SQL que se refere manipulao de dados, conhecida como DML (Data
Manipulation Language), significa Linguagem para Manipulao de Dados. Essa linguagem permite
basicamente a insero, alterao, excluso e leitura das informaes mantidas nas diversas tabelas de um
Banco de Dados. Vale ressaltar que a DML apresenta comandos para a escrita e alterao de dados, bem
como para a leitura de informaes. Desse modo, inicialmente sero discutidos os comandos para a escrita
de dados, permitindo preencher o Banco de Dados, e posteriormente, ser apresentado o comando para
ler as informaes previamente armazenadas.

2.2.1

INSERT:

O comando INSERT consiste em informar o nome da tabela que se deseja inserir os dados, uma lista
com o nome das colunas dessa tabela para as quais sero informados os dados, e finalmente, os dados para
cada coluna informada anteriormente, deve coincidir com o nmero de valores informados. Caso contrrio,
o sistema emitir uma mensagem de erro e no executar a insero. Para incluir dados utiliza-se o
comando INSERT, cuja sintaxe :
INSERT INTO nome_data_tabela (lista_de_colunas) VALUES (lista_de_valores)
Exemplos:
INSERT INTO `empresa` VALUES (1,'Empresa de banco LTDA',
'888.888.8888-0001/88', '(31)3333-4444');
INSERT INTO `empresa` VALUES (2,'Empresa do curso LTDA',
'999.999.9999-0001/88', '(31)4444-55555');
INSERT INTO equipes (codigo, nome) VALUES (1, 'Equipe engenheiro');
INSERT INTO equipes (codigo, nome) VALUES (2, 'Equipe pedreiros');
INSERT INTO equipes (codigo, nome) VALUES (3, 'Equipe arquitetos');
INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone,Codigo_equipe) VALUES
('111.111.111-11', 1, '1970-10-12', 'Jos de Alencar', '(31)3333-3333', 1);
INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES
('222.222.222-22', 3, '1967-11-21', 'Paulo Goulart', '(31)4444-44444', 2);
INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES
('333.333.333-33', 3, '1987-11-21', 'Antnio Pereira','', 2);
INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe) VALUES
('444.444.444-44', 3, '1975-12-10', 'Carlos de Nbrega, '(31)5555-5544', 2);
INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe)
VALUES ('555.555.555-55', 2, '1977-06-23', 'Maria de Souza Melo, '(31)7777-5544', 3);

13

INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe)


VALUES ('666.666.666-66', 2, '1975-01-03', 'Antnio Csar,'(31)9999-5544', 3);
INSERT INTO funcionarios (cpf, Cargos_codigo, nascimento, nome, telefone, Codigo_equipe)
VALUES ('777.777.777-77', 4, '1970-05-15', 'Carlos de Castro Silva, '(31)4567-8901', 2);

2.2.2

Consultas no SQL:

Os mecanismos de consultas de um Sistema de Banco de Dados so concebidos de forma a


possibilitar a criao da estrutura de dados, bem como o preenchimento e a manipulao das informaes
contidas nele. Anteriormente, foi introduzida a linguagem SQL, mais especificamente a parte para a
definio de dados (DDL). Assim, foram apresentados os comandos para a criao de Bancos de Dados,
tabelas, alm dos comandos para a alterao da estrutura de uma tabela.
Entretanto, existe a segunda parte da SQL que se refere manipulao de dados, conhecida como
DML (Data Manipulation Language), que significa Linguagem para Manipulao de Dados. Basicamente
essa linguagem permite a insero, alterao, excluso e leitura das informaes mantidas nas diversas
tabelas de um Banco de Dados. Utilizando a ferramenta de consulta MySQL Query Browser possvel
realizar essas operaes de forma a no utilizar comandos SQL explicitamente, j que o sistema constri
automaticamente os comandos SQL relacionados a cada tarefa. Dessa forma, os detalhes da sintaxe da
linguagem ficam escondidos dos usurios e facilitam o acesso aos dados, uma vez que no necessrio
entender profundamente a estrutura desta linguagem.
Nessa seo sero apresentados e discutidos todos os comandos que compem a DML. Para
facilitar o entendimento dos comandos ser utilizado o Banco de Dados curso, construdo anteriormente.
Assim, o objetivo final introduzir conceitos sobre a base de dados e alguns relatrios bsicos empregando
a linguagem SQL. Mais adiante, sero discutidos os relatrios avanados, bem como os comandos
avanados para a manipulao de dados, tais como JOINs e sub-consultas, ou seja, como extrair dados em
vrias tabelas.
Vale ressaltar que a DML apresenta comandos para a escrita e alterao de dados, assim como para
a leitura de informaes. Inicialmente sero discutidos os comandos para a escrita de dados, permitindo
preencher o Banco de Dados, e posteriormente, ser apresentado o comando para ler as informaes
previamente armazenadas.
A linguagem SQL apresenta basicamente trs comandos para alterao de dados, que permitem
realizar as tarefas de incluso, modificao e excluso de dados em uma tabela qualquer. Nessa seo
sero ilustradas a sintaxe e exemplos de cada um deles.

2.2.3

UPDATE:

Existem situaes em que h necessidade de modificar uma informao armazenada na tabela, por
exemplo, considera-se a alterao de telefone de um determinado funcionrio, ou ainda a mudana na
data de trmino de uma determinada obra.

O UPDATE permite fazer atualizaes dos valores dos atributos das nossas tabelas. No nosso
exemplo inserimos na tabela a cliente cujo nome Marina Pereira. Para mudar o nome da cliente
utilizaremos o UPDATE.
Sintaxe:
UPDATE tabela
SET atributo=novo_valor
Where atributo =valor_antigo

14

Exemplo:

Figura 8- Exemplo utilizando o UPDATE


Observe a alterao realizada na tabela logo em seguida ao ser realizado o update.

2.2.4

ELETE:

Finalmente, os dados armazenados em uma base de dados podem ser excludos por vrias razes.
Por exemplo, a sada de um funcionrio da empresa deve eliminar o registro dele da tabela de funcionrios.
Outra situao seria a sada de uma equipe da execuo de uma determinada obra, isto , o registro que
relata esse fato deve ser eliminado da tabela Obras_tem_equipes. Para a excluso de linhas de uma tabela
utiliza-se o comando DELETE, cuja sintaxe :

DELETE FROM nome_data_tabela


[WHERE critrio_de_seleo]
Assim, para a execuo do comando DELETE deve-se informar o nome da tabela cujos registros
sero eliminados e, opcionalmente, o critrio de seleo de linhas, de forma a excluir apenas aquelas que
atendam a um determinado requisito. Vale ressaltar que na omisso do WHERE sero retirados todos os
registros da tabela.
Exemplo:

Figura 9 Utilizando o delete.


A clusula WHERE do comando DELETE opcional. Caso no seja informado, ele ir apagar os
dados em toda a tabela. NO EXCLUI A TABELA E SIM OS DADOS DA TABELA.

15

2.2.5

Comandos para Leitura de Dados:

A consulta em Bancos de Dados efetuada atravs do comando SELECT. Uma sintaxe simplificada
para esse comando :

SELECT lista-de-dados
FROM lista-de-tabelas
WHERE condio-de-seleo
Onde:
lista-de-dados = refere-se s colunas que existiro no conjunto resposta da consulta.
lista-de-tabelas = refere-se s tabelas que sero utilizadas como fonte de dados para a
consulta.
condio-de-seleo = ser utilizada para a seleo de linhas da(s) tabela(s) consultada(s).
O uso de * (asterisco) aps a clusula SELECT implica dizer que alteraes na estrutura de uma
tabela podem modificar o resultado da consulta; por exemplo, se uma nova coluna includa em uma
tabela, o resultado da consulta ir incluir a nova coluna.
Para selecionar todas as linhas da tabela alunos:

Figura 10 Dados da tabela alunos


possvel selecionar apenas uma coluna da tabela. A figura a seguir ilustra essa situao.

Figura 11 Selecionar uma coluna de uma determinada tabela.

Figura 12 Seleciona todos os dados da tabela aluno onde o nome esteja igual Marina Pereira
SELECT lista_de_colunas
FROM nome_da_tabela
WHERE critrio_de_seleo
GROUP BY lista_de_colunas
HAVING critrio_de_seleo_no_resultado
ORDER BY lista_de_colunas
Clusulas adicionais:
INTO: especifica uma nova tabela que conter o resultado da consulta;
ORDER BY: classifica o resultado da consulta;

16

GROUP BY: agrupa as linhas das consultas com base nos valores de uma ou mais colunas;
HAVING: especifica as condies usadas para filtrar agrupamento de dados no resultado da
consulta. S deve ser usado com o GROUP BY.

Quando se realiza uma seleo, os dados recuperados no esto ordenados. O SQL prev a clusula
ORDER BY para realizar uma ordenao dos dados selecionados.

SELECT <NOME(S) DA(S) COLUNA(S)> FROM <TABELA>


WHERE <RESTRIES>
ORDER BY <NOME DA(S) COLUNA(S)> ASC |
ORDER BY <NMERO DA(S) COLUNA(S)> DESC
A informao <nmero da coluna> refere-se posio relativa das colunas quando for apresentado
o resultado da consulta, e no posio na tabela original, contada da esquerda para a direita. As palavras
ASC e DESC significam, respectivamente, ascendente e descendente. A forma ascendente de ordenao
assumida como padro.
Observe este exemplo:

Create database loja;


Use loja;
CREATE TABLE VENDEDOR (
CODIGO_VENDEDOR SMALLINT NOT NULL UNIQUE,
NOME_VENDEDOR CHAR(20),
SALARIO_FIXO numeric(9,2),
FAIXA_COMISSAO CHAR(1),
PRIMARY KEY (CODIGO_VENDEDOR));

Mostrar em ordem alfabtica a lista de vendedores e seus respectivos salrios fixos:


SELECT NOME_VENDEDOR, SALARIO_FIXO
FROM VENDEDOR
ORDER BY NOME_VENDEDOR
Normalmente, vrios registros dentro de uma tabela podem conter os mesmos valores, com
exceo da chave primria. Com isso, muitas consultas podem trazer informaes erradas. A clusula
DISTINCT, aplicada em uma consulta, foi criada para no permitir que certas redundncias, obviamente
necessrias, causem problemas.

Quais so as unidades de produtos, diferentes, na tabela produto?


SELECT DISTINCT UNIDADE FROM PRODUTO
O MySQL possui algumas funes que podem ser muito teis no processamento dos dados. Abaixo,
podemos ver uma tabela com algumas dessas funes:
FUNO
AVG(coluna)
COUNT(item)

DESCRIO
retorna a mdia dos valores da coluna
se item for uma coluna, ser retornado o nmero de valores no NULL nessa
coluna.
Se a palavra-chave DISTINCT for colocada na frente do nome da coluna, ser

17

MIN(coluna)
MAX(coluna)
SDT(coluna)
SDTDEV(coluna)
SUM(coluna)

retornado
o
nmero
de
valores
distintos
nessa
coluna.
Se for passado COUNT(*), ser retornado o nmero total de registros
independente de quantos tenham valor NULL.
retorna o valor mnimo da coluna
retorna o valor mximo da coluna
retorna o desvio padro dos valores da coluna
o mesmo que SDT(coluna)
retorna a soma dos valores da coluna

Operadores para trabalhar na Pesquisa:


OPERADOR
=
>
<
<=
!= ou < >
is not null
is null
Between
In
not in
Like
not like
Regexp

DESCRIO
Testa se dois valores so iguais
Testa se um valor maior que outro
Testa se um valor menor que outro
Testa se um valor menor ou igual a outro
Testa se dois valores so diferentes
Testa se um campo no est vazio
Testa se um campo est vazio(nulo, ou seja, nada foi inserido nele, nem um espao em
branco)
Testa se um valor est entre um valor mnimo(inclusive) e um valor mximo (inclusive)
Testa se um valor pertence a um conjunto
Testa se um valor no pertence a um conjunto
Testa se um valor corresponde a um padro (% equivale ao conhecido *, o curinga)
Testa se um valor no corresponde a um padro ( _ equivale ao curinga que
corresponde a um caracter)
Testa se um valor corresponde a uma expresso regular

Para especificar mais de uma condio para a pesquisa use as palavras and e or:
Se quiser selecionar registros que atendam a CONDIO1 e a CONDIO2, faa assim:

select CAMPOS
from TABELA
where CONDIO1 and CONDIO2;
Se quiser selecionar registros que atendam a CONDIO1 ou a CONDIO2, faa assim:

select CAMPOS
from TABELA
where CONDIO1 or CONDIO2;
2.3

Stored Procedured:

Para a elaborao de um sistema baseado em um Banco de Dados relacional preciso passar por
vrias etapas a fim de se determinar qual a estrutura final do mesmo. Primeiramente, foram apresentadas
as questes ligadas modelagem de dados. Nessa etapa foram definidas as entidades que compem o
sistema, bem como os seus atributos e as regras de integridade que se aplicam aos dados. O produto final
da etapa de modelagem o modelo lgico do Banco de Dados conhecido como modelo EntidadeRelacionamento, ou somente modelo ER. Essa uma forma de representar o Banco de Dados graficamente
permitindo a documentao do sistema.

18

A segunda etapa do processo se refere construo do Banco de Dados utilizando um Sistema


Gerenciador de Banco de Dados (SGBD), nos exemplos apresentado nessa apostila utilizado o MYSQL
como referncia de SGBD.
Essa definio do banco de dados foi elaborada a partir do modelo ER, e foi empregada a
ferramenta DBDesigner4 para essa tarefa, mas poder ser uilizadas outras ferramentas disponveis na
internet.
Uma vez construdo um Banco de Dados exemplo, denominado, foram apresentadas as tcnicas de
consulta s informaes. Para efeito prtico a linguagem SQL foi introduzida, sendo exibida a sua
Linguagem de Definio de Dados (DDL), e a Linguagem para Manipulao de Dados (DML). A linguagem de
consulta uma ferramenta que permite manipular as informaes contidas no Banco de Dados. Desse
modo, vrios exemplos de relatrios bsicos e avanados foram ilustrados, permitindo o entendimento da
mesma. Vale lembrar, que o MySQL Query Browser foi introduzido possibilitando a sua utilizao para a
extrao de dados do MySQL, sem a utilizao do SQL explicitamente.
Um sistema de Banco de Dados mantido pelo SGBD, e algumas tarefas tm que ser executadas
periodicamente a fim de se garantir o funcionamento adequado do sistema. Para isso, foram discutidas as
principais tcnicas de administrao de um sistema dessa natureza, alm de apresentar a ferramenta
MySQL Administrator como um mecanismo eficiente para a execuo dessas operaes.
Nesse ponto, todos os aspectos importantes relativos utilizao de um Sistema de Banco de
Dados j foram conceituados e exemplificados, possibilitando a sua aplicao em um sistema real. No
entanto, as aplicaes reais operam em um contexto onde h uma grande complexidade nos dados, bem
como nas regras de utilizao dos mesmos.
Outro problema comum so as falhas que podem ocorrer durante uma operao, isto , pode
haver uma queda de energia durante a manipulao das informaes e isso poderia levar a uma
inconsistncia nos dados. No entanto, para contornar essas dificuldades um SGBD prov mtodos para
controlar o acesso simultneo aos dados, bem como eliminar inconsistncias de informaes devido s
falhas de sistema ou at mesmo de usurios.
Existem ainda as aplicaes que exigem que o Banco de Dados esteja disponvel o tempo todo, ou
seja, 24 horas por dia e sete dias por semana. Esse o caso de um sistema bancrio, que deve permitir que
os seus correntistas tenham acesso s suas movimentaes ou recursos financeiros a qualquer hora do dia.
Esses tipos de aplicao exigem uma alta disponibilidade dos dados, e para isso existem alguns recursos
presentes no SGBD para fornecer o nvel de confiabilidade.
Finalmente, a maioria dos SGBD permitem a definio de rotinas que ficam armazenadas dentro
deles e que podem ser acessadas a qualquer momento pelos usurios do sistema. Essas rotinas, conhecidas
como Stored Procedure (Procedimentos armazenados), so como pequenos programas que podem ser
construdos de forma a realizar uma manipulao complexa sobre os dados, e garantir a obedincia s
regras de negcios da aplicao.
Um Stored Procedure um conjunto de comandos SQL que so compilados e armazenados no
servidor, mas podem ser armazenados no Banco de Dados e acionados por qualquer programa aplicativo
que tenha autorizao para execuo.
A stored procedure pode ser classificada em:
Stored Procedure: definidas pelo usurio
System Stored Procedure: disponibilizadas pelo Sistema de Banco de Dados para execuo de
tarefas administrativas. Podem ser executadas em qualquer banco e esto armazenadas no Banco de
Dados Master. Todas as stored procedures iniciam por sp_
Por todas essas e outras funcionalidades que as stored procedures so de extrema importncia
para os DBAs e desenvolvedores.
H 5 Procedimentos (Procedures) bsicos que podemos criar:
Procedimentos Locais - So criados a partir de um banco de dados do prprio usurio;
Procedimentos Temporrios - Existem dois tipos de procedimentos temporrios:
Locais, que devem comear com # e Globais, que devem comear com ##;
Procedimentos de Sistema - Armazenados no Banco de Dados padro do SQL Server (Master),
podemos identific-los com as siglas sp, que se origina de stored procedure. Tais procedures
executam as tarefas administrativas que podem ser feitas a partir de qualquer banco de dados.

19

Procedimentos Remotos - Podemos usar Queries Distribudas para tais procedures. So


utilizadas apenas para compatibilidade.
Procedimentos Estendidos - Diferente dos procedimentos j citados, esse tipo de
procedimento recebe a extenso .dll e so executadas fora do SGBD SQL Server. So
identificadas com o prefixo xp.

Quando utilizar procedures


Quando temos vrias aplicaes escritas em diferentes linguagens, ou rodam em plataformas
diferentes, porm executam a mesma funo;
Quando damos prioridade consistncia e segurana.
Os bancos (Ita, Bradesco, Real, etc), por exemplo, em geral, utilizam stored procedures para todas
as operaes em comum. Os procedimentos podem assegurar que as operaes sejam registradas de
forma correta e segura.
Por que mais seguro?
Seguindo a linha de raciocnio dos bancos, utilizando stored procedures outras aplicaes e
usurios, no conseguiriam nenhum tipo de acesso s tabelas do banco de dados de forma direta.
Eles poderiam apenas executar as stored procedures, que rodam aes especficas e determinadas
pelos DBAs e desenvolvedores.

2.3.1

Criando uma Stored Procedure:

Sintaxe:

CREATE PROCEDURE <nome> [parmetro]


AS <instruo SQL>
As Regras so:
O nome da procedure deve seguir as regras para criao de identificadores;
Nome do parmetro deve iniciar por @ e deve ser nico na lista de argumentos, seguido do
seu tipo @mes int, @ano int, @nome varchar;
Todos os parmetros so considerados de entrada, exceto se houver OUTPUT aps sua
definio
Para executar uma Stored Procedure necessrio fazer uma chamada ao comando EXECUTE

EXEC[UTE] <nome da sp> [valor do parmetro]

20

Você também pode gostar