Sie sind auf Seite 1von 34

1

Fatec So Bernado



Banco de Dados II



Linguagens de Definio e Manipulao de
Dados



Profa. Ms. Sueli A. Loddi
2
Linguagem de Definio e Mapeamento de Dados


1. A Arquitetura dos Sistemas de Banco de Dados

De acordo com Date(2003), no ano de 1972 foi criado um grupo de estudos para definir uma
arquitetura padro para um sistema de banco de dados, que atendesse s demandas tericas. O nome
desse grupo foi ANSI/X3/SPARC Study Group on Data Base Management Systems, e a arquitetura passou
a ser conhecida como ANSI/SPARC.
O autor ressalta que, segundo essa arquitetura, um sistema de banco de dados pode possui trs
nveis:
Nvel Interno Responsvel pelo armazenamento dos dados;
Nvel Conceitual Serve de interface entre o primeiro e o terceiro nveis;
Nvel Externo Responsvel pela visualizao dos dados por parte do usurio.

A Figura 1, a seguir ilustra a dinmica desta arquitetura.

Figura 1 Os trs nveis da arquitetura de banco de dados
Fonte: Adaptado de Elmasri e Navathe (2005, p.7) e Date (2003, p.29)

3
O nvel interno ou esquema interno descreve a estrutura de armazenamento fsico do banco de
dados Esse esquema utiliza um modelo de dados fsico e descreve, com detalhes completos o
armazenamento de dados e caminhos de acesso ao banco de dados. (ELMASRI, NAVATHE, 2005).

O nvel conceitual ou esquema conceitual descreve a estrutura de todo o banco de dados para a
comunidade de usurios. O esquema conceitual oculta os detalhes das estruturas de armazenamento
fsico e se concentra na descrio de entidades, tipos de dados, conexes, operaes e restries dos
usurio. Geralmente um modelo de dados representacional usado para descrever o modelo conceitual
quando o sistema de banco de dados for implementado. (ELMASRI, NAVATHE, 2005).

O nvel externo ou viso externa constitui-se da viso que o usurio tem do banco de dados;
como os dados so visualizados por ele. Dessa forma, haver tantas dessas vises quantas forem as
formas distintas que os dados podem ser visualizados (usurios diferentes, aplicaes diferentes, entre
outras) (ELMASRI, NAVATHE, 2005).

Por usurio, podemos entender tanto os desenvolvedores de aplicaes, quanto um usurio final.
Porm, observemos ao usurio final s interessa uma determinada parte do banco de dados e, do seu
ponto de vista, essa viso o banco de dados completo. (DATE,2003).

A viso externa poder ser acessada de diversas formas, inclusive por meio de ferramentas
bastante amigveis, muitas vezes visuais (normalmente voltadas para o usurio final). Ibid. (2003)

O desenvolvedor, entretanto, utilizar uma linguagem de alto nvel para produzir o aplicativo
desejado. As linguagens para desenvolvimento de aplicaes normalmente utilizaro um subconjunto de
comandos para acessar e manipular o banco de dados. Ibid. (2003)

Chamamos a esse subconjunto de sublinguagem de dados e linguagem de alto nvel que o
utiliza, de linguagem hospedeira. Dessa forma, enquanto a linguagem hospedeira responsvel pelos
recursos de programao (como variveis, estruturas de deciso e repetio), a sublinguagem de dados
responsabiliza-se pelo acesso ao banco de dados. Atualmente, a sublinguagem de dados mais utilizada
a SQL. Ibid. (2003)

4
Date (2003), de Elmasri e Navathe (2005), Silberschatz et. al (1999) e Motneiro(2004) dividem a
sublinguagem de dados em pelo menos duas partes:

Linguagem de Definio de Dados ( DDL - Data Definition Language ) Instrues para
definio de estruturas, esquemas e vises no banco de dados;
Linguagem de Manipulao de Dados (DML - Data Manipulation Language) Instrues para
manipulao dos dados no banco de dados, permitindo incluso, alterao, excluso e
consulta a esses dados.
A seguir estudaremos as linguagens de definio e Manipulao de Dados.

2. Structured Query Language (SQL)

A Structured Query Language conhecida como simplesmente Linguagem SQL uma das principais
razes do sucesso dos bancos relacionais em ambientes comerciais. Uma vez que se o usurio no esteja
satisfeito com o Sistema Gerenciador de Banco de Dados (SGBD) escolhido para sua aplicao, ele
pode migrar para outro SGBD, a um baixo custo de tempo e pouco dispndio de mo-de-obra, visto
que, todos os fabricantes de SGBDs devem seguir um mesmo padro na linguagem SQL.
(ELMASRI, NAVATHE, 2005)

A linguagem SQL foi criada pela International Business Machines (IBM ) na dcada de 1970,
em seus laboratrios de pesquisa de San Jos, nos Estados Unidos. Inicialmente nomeada como
Structured Query English Language, ou Sequel, esta linguagem tinha como objetivo servir como interface
para um sistema de banco de dados relacional denominado Sistema R. (ELMASRI,NAVATHE,2005;
DATE, 2004; SILBERSCHATZ et. al ,1999)

Com o passar do tempo a linguagem evoluiu e passou a se chamar SQL, tornando-se uma
linguagem-padro para SGBD relacionais comerciais. Buscando a padronizao da linguagem a
Amercian National Standards Institute (ANSI) e a International Standard Organization (ISO) no ano de 1986
criou a primeira verso padronizada da linguagem SQL, conhecida como SQL-86 ou SQL1. Uma
segunda verso foi lanada no ano de 1992 a SQL2. Sete anos mais tarde, no ano de 1999, a terceira
verso foi lanada, inicialmente chamada de SQL3, ou SQL99. Esta a verso atual em vigor
(ELMASRI,NAVATHE,2005; DATE, 2004; SILBERSCHATZ et. al ,1999)


5
As especificaes do padro SQL99 foi divididas em duas partes: ncleo (core) e os pacotes
(packages). Os fabricantes de SGBDs devem inclui as especificaes do ncleo obrigatoriamente em seus
produtos. J o pacotes so encarados como mdulos opcionais, cuja falta no compromete o
funcionamento do SGBD relacional. So exemplos de mdulos opcionais: data minig , datsa warehaousing,
processamento analtico on-line (OLAP), entre outros. (ELMASRI,NAVATHE,2005)

A linguagem SQL abrangente, possuindo suporte para comandos de definio de dados,
consultas, vises e atualizaes. Desta forma ela possui a DDL e a DML, que estudaremos a seguir.
(ELMASRI,NAVATHE,2005;MOREIRA, 2004)

3. Linguagem de Definio Dados (DDL)
A coleo de informaes armazenadas na base de dados, em um particular instante chamada
de instncia da base de dados. J a concepo global da base de dados chamada de esquema da base de
dados. As base de dados mudam com o tempo na medida em que informaes (instncias) so inseridas
e removidas; por outro lado, esquemas no so mudados freqentemente.(SILBERSCHATZ et. al ,1999)
Existem diversos esquemas na base de dados, divididos de acordo com os nveis de abstrao:
esquema fsico (nvel fsico de abstrao), esquema conceitual (nvel conceitual de abstrao) e
subesquema (nvel de abstrao de viso). (SILBERSCHATZ et. al ,1999)
Um esquema de base de dados especificado por um conjunto de definies, expressas em
uma linguagem especial chamada linguagem de definio de dados. O resultado da compilao de
instrues desta linguagem um conjunto de estruturas armazenadas num arquivo especial chamado
dicionrio (ou diretrio) de dados. Este contm metadados (dados acerca dos dados) e
consultado antes dos dados propriamente ditos serem lidos ou modificados no sistema da base de
dados. A estrutura de armazenamento e os mtodos de acesso usados pelo sistema de base de dados
so especificados por um conjunto de definies em um tipo especial de linguagem de definio de
dados chamado linguagem de definio de dados e memria. (SILBERSCHATZ et. al ,1999)
Em SQL a linguagem de definio de dados permite a especificao de um conjunto de relaes
e a especificao de informaes de cada relao, incluindo:
O esquema de cada relao;
6
O domnio dos valores associados a cada atributo;
As regras de integridade;
O conjunto de ndices para manuteno de cada relao;
Informaes sobre a segurana e autoridade sobre cada relao;
A estrutura de armazenamento fsico de cada relao no disco.

3.1. Definio de dados e tipos de dados SQL

Silberschatz et. al (1999) afirmam que o SQL usa os termos tabela, linha e coluna, em vez de
relao, tupla e atributo, do modelo relacional formal, respectivamente. O principal comando para a
definio de dados o CREATE, que pode ser usado para criar: Esquemas,Tabelas (Relaes) e
Domnios.

3.2. Esquemas e Catlogos em SQL

As primeiras verses do SQL no possuam o conceito de esquema de uma banco de dados.
Todas as tabela(Relaes) eram consideradas parte do mesmo esquema. A partir da verso SQL2, este
conceito foi introduzido, de modo a agrupar as tabelas e outros construtores que pertencem mesma
aplicao de um banco de dados. (ELMASRI,NAVATHE,2005) Forma geral de criao de um esquema
encontra-se ilustrada na figura 2.

Figura 2 Forma geral da criao de um esquema
USE [nome_bancodados]
CREATE SHEMA [nome_esquema] AUTHORIZATION [usurio]
Fonte: Silberschatz et. al (1999, p. 139)

A figura 3 ilustra um exemplo em linguagem SQL para o esquema delivery no banco de dados
AdventureWorks, para o usurio dbo.

Figura 3 Exemplo da criao de um esquema
USE [AdventureWorks]
CREATE SCHEMA [delivery] AUTHORIZATION [dbo]
Fonte: elaborado pela autora com base na bibliografia.
7
Outro conceito importante introduzido pelo SQL2 foi o catlogo, que consiste em uma coleo
de esquemas em um ambiente SQL, que recebe um nome. Entende-se por ambiente SQL uma
instalao de um SGBD relacional padro. Ou seja, o conjunto de esquema de um banco de dados
chamado de catlogo. Cada catlogo deve incluir um esquema especial chamado INFORMATION
SCHEMA, que fornece informaes sobre todos os esquemas do catlogo.
(ELMASRI,NAVATHE,2005)

A figura 4 a seguir ilustra o exemplo de um catlogo no SGBD SQL Server 2005. Nele
observamos um catlogo ( banco de dados ) AdventureWorks. Nele encontramos trs diferente
esquemas de dados que subdividem as tabelas do banco em: HumanResources, Person e Production.
Observe que os esquemas so formas de organizar as tabelas dentro do banco de dados.

Figura 4 Exemplo de um catlogo e seus esquemas

Fonte: elaborado pela autora com base na bibliografia.
8
Ainda no SGBD SQL Server 2005 para visualizar os esquema, deve-se, no contexto do banco
desejado acessar security/schemas. Com um click do boto direito do mouse possvel abrir a manuteno
dos esquemas do banco. A figura 5 ilustra esta viso.

Figura 5 Visualizao dos esquemas de um banco

Fonte: elaborado pela autora com base na bibliografia.
9
Ainda no contexto do SGBD SQL Server 2005, para visualizar os Information_Schemas, deve-
se dentro do contexto do banco desejado, navegar por views/system Views. A figura 6 a seguir traz o
exemplo do Information Schema do banco AdventureWorks, com detalhe para o esquema de tabelas.

Figura 6 Viso dos INFORMATION_SCHEMAS

Fonte: elaborado pela autora com base na bibliografia.




10
3.3. Tipos de Dados de Atributos e Domnios em SQL

Os tipos de dados bsicos para atributos so numricos, cadeia de caracteres, cadeia de bits,
Lgicos, data e horrio. (ELMASRI,NAVATHE,2005; DATE, 2004; SILBERSCHATZ et. al ,1999). O
quandro 1, a seguir, ilustra cada tipo.

Quadro1 Tipo de Dados da linguagem SQL
Tipo Subtipo SQL
Inteiros INT
SMALLINT
Reais ou ponto
flutuante
FLOAT
REAL
DOUBLE PRECISION
Numricos
Nmeros formatados DECIMAL(i,j) ou DEC(i,j)
NUMERIC(i,j)
Onde: i = preciso ( parte inteira) e j = a escala ( parte decimal)
Cadeia de
caracteres
De tamanho Fixo CHAR(n) ou CHARACTER(n)
Onde n= tamanho.
Nas cadeias de tamanho fixo o tamanho ser apropriado no
banco, sendo ou no usado. Exemplo: um campo nome com
char(10) que recebeu Jos no banco ocupar Jos .
De tamanho varivel VARCHAR(n) ou CHAR VARYNG(n) ou
CHARACTER VARYNG (n)
Onde n= tamanho.
Nas cadeias de tamanho varivel o tamanho ser apropriado no
banco ser otimizado, sendo que os Brancos a direita sero
desprezados. Exemplo: um campo nome com char(10) que
recebeu Jos no banco ocupar Jos.
Lgicos Booleano
Obs. A nomenclatura
deste tipo varia de
acordo com o SGBD
Possui dois valores: Verdadeiro (TRUE) e Falso(FALSE). Em
SQL, dada a presena dos valores nulos ( NULL), os lgicos
assumem um terceiro valor (UNKNOWN).
11
Cadeia de
bits
Bit-strings BIT (n) para cadeias de tamanho fixo ou BIT VARYNG (n)
para tamanho varivel
Data DATE
Contm no mnimo 10 posies e deve contemplar o formato
YYYY-MM-DD. Onde YYYY = ano, MM-Ms e DD = dia
Data e
hora
Hora TIME
Contm no mnimo 8 posies e deve contemplar o formato
HH:MM:SS. Onde HH= hora, MM-minuto e SS = segundo.
TimeStamp TimeStamp

Engloba os campos Date e Time juntos fornecendo um um
formato YYYY-MM-DD HH:MM-SS +MS
Onde o MS = seis casa decimais para registrar os milsimos de
segundo.
Fonte: Adaptado de Elmasri e Navathe (2005, p.7)

3.4. Comando CREATE TABLE
O comando CREATE usado para criar uma nova relao, designando-lhe um nome e
especificando seus atributos e especificaes iniciais (SILBERSCHATZ et. al ,1999). A forma geral est
expressa na figura 7 a seguir.

Figura 7 Exemplo forma geral da instruo CREATE TABLE
CREATE TABLE r (A1 D1, A2 D2, A3 D3, ... , An Dn,
<regras de integridade 1>
<regras de integridade 2>
....
<regras de integridade n> )
Onde:
r = nome da relao
A = o nome do atributo no esquema da relao
D = o tipo de dado do atributo
<regras de integridade> = so as regras de restries de chave para integridade referencial
Estudadas a seguir.
Fonte: Silberschatz et. al (1999, p. 139)
12
A seguir a figura 8 ilustra a criao de duas relao a empregado e a departamento.

Figura 8 Exemplo instruo CREATE TABLE
CREATE TABLE empregado
(EmpPrimeiroNome VARCHAR(20) NOT NULL,
EmpUltimoNome VARCHAR(15) NOT NULL,
EmpDataNascimento DATE NOT NULL,
EmpSexo CHAR(1) NOT NULL,
EmpID INT NOT NULL,
EmpSupervisorID INT,
DepID INT NOT NULL,
Salario DEC(10,2),
PRIMARY KEY (EmpID),
FOREIGN KEY (DepartamentoEmpregado) REFERENCES departamento (DepID),
FOREIGN KEY (EmpregadoEmpregado) REFERENCES empregado (EmpID));

CREATE TABLE departamento
(DepNome VARCHAR(15) NOT NULL,
DepID INT NOT NULL,
DepGerenteID INT NOT NULL,
PRIMARY KEY (DepID),
UNIQUE (DepNome),
FOREIGN KEY (EmpregadoDepartamentoSup) REFERENCES empregado (EmpID));
Fonte: elaborado pela autora com base na bibliografia.

As regras de integridade so responsveis pela manuteno da integridade referencial, no
exemplo acima temos a especificao da PRIMARY KEY e da FOREIGN KEY, que devem ser
especificadas dentro do comando CREATE TABLE. (SILBERSCHATZ et. al ,1999)

A clusula PRIMARY KEY especifica um ou mais atributos que definem a chave primria da
relao. Se a chave primria tiver um atributo nico, a clusula pode seguir o atributo diretamente ao
13
invs da representao do exemplo anterior. (SILBERSCHATZ et. al ,1999) A Figura 9 a seguir
exemplifica esta notao na relao departamento.

Figura 9 Exemplo instruo PRIMARY KEY
CREATE TABLE departamento
(DepNome VARCHAR(15) NOT NULL,
DepID INT NOT NULL PRIMARY KEY,
DepGerenteID INT NOT NULL,
(DepID),
UNIQUE (DepNome),
FOREIGN KEY (DepGerente) REFERENCES EMPREGADO (EmpID));
Fonte: elaborado pela autora com base na bibliografia.

A clusula UNIQUE define as chaves alternativas (ou secundrias), conforme ilustrado nas
figuras 8 e 9 com o campo DepNome.

A integridade referencial expressa pela clusula FOREIGN KEY (chave estrangeira),
conforme pode ser observado nas figuras 8 e 9. Uma restrio de integridade referencial pode ser
violada quando as tuplas so inseridas, alteradas ou excludas, ou ainda quando os valores das
chaves primrias e/ou estrangeiras passarem pelo mesmo processo. Neste caso a ao padro do
SQL rejeita-las. As clusulas PRIMARY KEY E FOREIGN KEY fazem a marcao para o SGBD
tomar estas aes. (SILBERSCHATZ et. al ,1999)

Outro recurso til para a documentao e melhor compreenso das relaes criadas, utilizar a
nomes para as restries, com a palavra CONSTRAINT. Cada nome de relao deve ser nico e
identifica-la de forma a auxiliar na localizao e manuteno do modelo gerado. (SILBERSCHATZ et.
al ,1999). A figura 10 ilustra o exemplo da figura 8 reescrito com este recurso.





14
Figura 10 Exemplo instruo CREATE TABLE em SQL99
CREATE TABLE empregado
(EmpPrimeiroNome VARCHAR(20) NOT NULL,
EmpUltimoNome VARCHAR(15) NOT NULL,
EmpDataNascimento DATE NOT NULL,
EmpSexo CHAR(1) NOT NULL,
EmpID INT NOT NULL,
EmpSupervisorID INT,
DepID INT NOT NULL,
Salario DEC(10,2) NOT NULL,
CONSTRAINT (empregadoPK)
PRIMARY KEY (EmpID),
CONSTRAINT (EmpregadoDepartamento_FK)
FOREIGN KEY (EmpregadoDepartamento) REFERENCES departamento (DepID),
CONSTRAINT (EmpregadoEmpregado_FK)
FOREIGN KEY (EmpregadoEmpregado) REFERENCES empregado (EmpID));

CREATE TABLE departamento
(DepNome VARCHAR(15) NOT NULL,
DepID INT NOT NULL,
DepGerenteID INT NOT NULL,
CONSTRAINT (DepartamentoPK)
PRIMARY KEY (DepID),
UNIQUE (DepNome),
CONSTRAINT (EmpregadoDepartamentoSup_FK)
FOREIGN KEY (EmpregadoDepartamentoSup) REFERENCES empregado (EmpID));
Fonte: elaborado pela autora com base na bibliografia.

Cada fabricante de SGBD tem sua verso de Linguagem SQL, e cada um faz sua adaptao do
padro SQL99. A figura 11 ilustra a criao da tabela empregado no SGBD da MicroSoft SQL Server
2005. Note algumas diferenas, primeiramente no tipo de dados date, no SQL Server 2005 ele
datetime.
15
Figura 11 Exemplo instruo CREATE TABLE em SQL Server 2005
USE [Empresa]
GO
CREATE TABLE [dbo].[empregado](
[empID] [int] NOT NULL,
[empPriNome] [varchar](20) NOT NULL,
[empUltNome] [varchar](20) NOT NULL,
[empSexo] [bit] NOT NULL
[empDtNasc] [datetime] NOT NULL,
[empDepID] [int] NOT NULL,
[empSupervisorID] [int] NOT NULL,
[empDtInicio] [datetime] NOT NULL,
[empSalario] [decimal](10, 2) NOT NULL,
CONSTRAINT [empregado_PK] PRIMARY KEY CLUSTERED
( [empID] ASC ))
GO

ALTER TABLE [dbo].[empregado] ADD CONSTRAINT [FK_empregado_Departamento]
FOREIGN KEY([empDepID])
REFERENCES [dbo].[Departamento] ([depID])
GO
ALTER TABLE [dbo].[empregado] ADD CONSTRAINT [FK_empregado_empregado] FOREIGN
KEY([empSupervisorID])
REFERENCES [dbo].[empregado] ([empID])
Fonte: Elaborado pela autora com base na bibliografia

Outra diferena est na opo CLUSTERED na declarao do ndice primrio empregado_PK.
Esta instruo indica que a organizao lgica das tuplas da relao sero este ndice. A instruo ASC
ao lado do campo empID no ndice primrio indica a organizao ascendente. Outra opo seria DESC
de descendente.
Cada GO declarado na script de criao indica o termino de instruo e inicio de outra. Note
que logo a criao da tabela e seu ndice primrio, esto declaradas duas instrues de alterao da
mesma tabela, desta vez adicionando as chaves estrangeiras de departamento e o auto relacionamento de
empregado para a superviso.

Outra restrio que pode ser especificada no comando CREATE TABLE a clusula
CHECK, tambm conhecida como procedimento de restrio com base em tupla, visto que aplica a
cada tupla individualmente, sendo verificado sempre que uma tupla for inserida Por exemplo,
suponhamos que sempre que a tupla de empregado for inserida, desejemos checar que o salrio no
dever ser inferior a 400,00, teramos que ao final do comando inserir a linha: CHECK (salrio >= 400)
(ELMASRI,NAVATHE,2005). A figura 12 ilustra a incluso deste comando criao desta relao.

16
Figura 12 Exemplo instruo CREATE TABLE
CREATE TABLE empregado
(EmpPrimeiroNome VARCHAR(20) NOT NULL,
EmpUltimoNome VARCHAR(15) NOT NULL,
EmpDataNascimento DATE NOT NULL,
EmpSexo CHAR(1) NOT NULL,
EmpID INT NOT NULL,
EmpSupervisorID INT,
DepID INT NOT NULL,
Salario DEC(10,2) NOT NULL,
CONSTRAINT (empregadoPK)
PRIMARY KEY (EmpID),
CONSTRAINT (EmpregadoDepartamento_FK)
FOREIGN KEY (EmpregadoDepartamento) REFERENCES departamento (DepID),
CONSTRAINT (EmpregadoEmpregado_FK)
FOREIGN KEY (EmpregadoEmpregado) REFERENCES empregado (EmpID)
CHECK (salrio>=400));

Fonte: elaborado pela autora com base na bibliografia.

Existem ainda forma mais sofisticadas de CHECK utilizando consultas em outras relaes (
SELECT), que estudaremos a seguir.

3.5. Comando DROP

O comando DROP pode ser usado para eliminar os elementos de esquemas nomeados, como
tabelas, domnios ou restries, como tambm esquemas (ELMASRI,NAVATHE,2005). Sua forma
geral encontra-se expressa na figura 13, a seguir.




17
Figura 13 Forma Geral da instruo DROP TABLE
DROP <tipo_elemento> <nome_relao>
Onde:
O tipo do elemento = tipo do elemento do banco tais como: TABLE, SCHEMA, CONSTRAINT,
entre outros.
Fonte: elaborado pela autora com base na bibliografia

O tipo do elemento especifica o que ser excludo, como por exemplo um tabela ou um esquema.
Exemplos: DROP TABLE empregado;
DROP SCHEMA empresa;

Silberschatz et. al (1999) ressaltam que, a instruo DROP drstica e excluir totalmente a
relao do banco de dados. Caso se deseja simplesmente excluir apenas suas tuplas e manter a relao
deve-se utilizar o comando DELETE FROM nome_relao.

3.6. Comando ALTER

O comando ALTER permite a manuteno de uma relao ou de quaisquer elementos do
esquema que possurem denominao. Para as relaes(tabela) as operaes permitidas so: adicionar
ou eliminar colunas(atributos), alterar a definio de uma coluna e adicionar ou eliminar restries de
uma coluna. (ELMASRI,NAVATHE,2005). A figura 14 a seguir, ilustra a forma geral da instruo
ALTER.

Figura 14 Forma Geral da instruo ALTER
ALTER <tipo_elemento> <nome_relao> <ao> <objeto_da_ao>
Onde:
O tipo do elemento = tipo do elemento do banco, tais como: TABLE, SCHEMA, CONSTRAINT,
entre outros.
ao = so trs possveis: ADD para adicionar; DROP para excluir e ALTER para modificar.
Objeto da ao = cada ao deve especificar a coluna que ir ser o objeto da ao e o que se deseja
altera/adicionar nela.
Fonte: elaborado pela autora com base na bibliografia
18
Exemplos:
Incluindo o campo funo em empregado sendo um cadeia de caracteres varivel de 15
posies:
o ALTER TABLE empregado ADD EmpFuncao VARCHAR (15);

Modificando o campo funo em empregado sendo um cadeia de caracteres fixo de 12
posies:
o ALTER TABLE empregado ALTER EmpFuncao CHAR (12);

Excluindo o campo funo em empregado:
o ALTER TABLE empregado DROP EmpFuncao;

Excluindo um CONSTRAINT de empregado
o ALTER TABLE empregado DROP CONSTRAINT EmpregadoEmpregado_FK;

4. Linguagens de Manipulao de Dados (DML)
Nveis de abstrao aplicam-se no somente definio ou estrutura de dados, mas tambm
manipulao de dados (recuperao, insero ou remoo de informaes da base de dados). Em
nveis mais altos de abstrao, a nfase est na facilidade do uso. Para permitir aos usurios acessar
ou manipular dados organizados por um modelo de dados apropriado, emprega-se uma linguagem de
manipulao de dados. (SILBERSCHATZ et. al ,1999)
H dois tipos bsicos de linguagens de manipulao de dados: no-procedimental (requer do
usurio especificao de quais dados so desejados e como chegar at eles) e procedimental (requer do
usurio especificao de quais dados so desejados, sem especificar como chegar at eles). Estas so
geralmente mais fceis de aprender e usar do que aquelas, mas podem gerar um cdigo que no seja to
eficiente quanto aquele produzido pelas linguagens procedimentais (o que sanado pelo uso de tcnicas
de otimizao). (SILBERSCHATZ et. al ,1999)


19
4.1. Consultas (QUERY)

As consultas em SQL so efetuadas pelo comando SELECT. Um outro nome para uma
consulta em SQL Query. (MONTEIRO, 2004). A figura 15 ilustra a forma geral da instruo
SELECT.

Figura 15 Forma Geral da instruo SELECT
SELECT <listra de atributos>
FROM <lista de tabelas>
WHERE <condio>;

Onde:
lista de atributos: a lista dos atributos que sero recuperados pela consulta;
lista de tabelas: a lista de relaes necessrias para o processamento da consulta;
condio: uma restrio condicional(booleana) que identifica as tuplas que sero recuperadas na
consulta.

Fonte: Adaptado de Elmasri e Navathe (2005, P. 157)

O quadro 2 a seguir elenca os operadores lgicos suportados pelo SQL nas condies.

Quadro 2 Operadores Lgicos bsicos do SQL
Operador Significado
= Igual a
< Menor que
> Maior que
<= Menor ou igual a
>= Maior ou igual a
<> Diferente (no igual)
Fonte: Adaptado de Elmasri e Navathe (2005, P. 157)


20

4.1.1. Consultas Simples sem condies

O resultado de uma consulta um relao. A forma mais simples de executar uma consulta
solicitar todas as suas colunas ( uma, alguma ou ainda todas) sem nenhuma condio de filtro.
Considerando nossa relao empregado de teste, a figura 16, ilustra este conceito.

Figura 16 Exemplo de Consulta simples

Fonte: elaborado pela autora com base na bibliografia

Caso se deseje obter todos as colunas, no necessrio relacion-las, basta usar um asterisco (*).
A figura 17 ilustra este exemplo.

Figura 17 Exemplo de Consulta simples usando asterisco

Fonte: elaborado pela autora com base na bibliografia


21

4.1.2. As opes distinct e all

A opo distinct em um consulta, indica ao SGBD que ele deve eliminar as duplicidades do
campo que ele precede. Por outro lado, o SQL permite que o programador deixe explicito que
deseja que as duplicidades sejam exibidas na consulta. O padro do SQL apresentar as
duplicidades (SILBERSCHATZ et. al ,1999). A Figura 18, a seguir, ilustra a mesma consulta em
trs formas diferentes:a primeira sem as opes; a segunda com a opo all, note que o resultado
igual primeira consulta; finalmente temos a terceira com um distinct, onde as duplicidades so
eliminadas.
Figura 18 Exemplos da aplicao das opes all e distinct
Sem as opes Com opo all Com opo distinct

Fonte: elaborado pela autora com base na bibliografia

4.1.3. Comandos Aritmticos nas consultas
A Clusula SELECT tambm suporta expresses aritmticas envolvendo os operadores de
soma(=), subtrao(-), diviso(/) e multiplicao (*). Ele tambm aceita expresses constantes ou
atributos das tuplas. (SILBERSCHATZ et. al ,1999). A figura 19, a seguir, exemplifica esta aplicao.
Outro conceito, exemplificado na figura 19, o alias ( apelido ou nome amigvel) aplicado a
cada coluna. Ele especificado incluindo logo aps a coluna um as e entre aspas simples o alias
desejado. No exemplo, a coluna empSalario/2 recebe o alias de Salrio em US$.
22
Figura 19 Exemplo do uso de comando aritmticos em uma consulta.

Fonte: elaborado pela autora com base na bibliografia

4.1.4. Consultas com condies a clusula WHERE

A clusula where, especifica uma condio para filtrar a relao que ser apresentada por uma
consulta. (SILBERSCHATZ et. al ,1999). A figura 20, a seguir , lustra uma aplicao de where: nela
temos uma consulta que retorna todos os funcionrio que recebem um salrio abaixo de R$ 1500.

Figura 20 - Exemplo da aplicao da clusula where

Fonte: elaborado pela autora com base na bibliografia


23
A linguagem SQL suporta os conectores lgicos AND, OR E NOT, que podem ser usado em
conjunto com os operadores lgicos de comparao (vide quadro 2) (SILBERSCHATZ et. al ,1999)..
No exemplo expresso na figura 21, tempos um consulta com duas relaes.

Figura 21: Exemplo aplicao da clusula where com duas tabelas.


Fonte: elaborado pela autora com base na bibliografia

Inicialmente so apresentadas duas consultas gerais das relaes departamento e empregado,
para demonstrar a restrio que a clusula where surtir. Note que temos 5 departamentos e o ID 1
corresponde ao departamento de compras. Em empregados, temos 11 empregados onde apenas 2
24
peretencem ao departamento com ID = 1 ( compras ). Para localizar os empregados do departamento
de compras a seleo utilizou duas relaes empregados e departamentos ( as duas relaes encontram-
se declaradas na instruo FROM) . Por convenso a leitura da clusula WHERE deve ser interpretada
do final para o inicio, logo temos que, a seleo comeou em departamento com depNome =
Compras. Ao localizar esta tupla, o SGBD tem todas as suas colunas. Logo ele usa o depID para
buscar em empregados os campos empDepID correspondentes, localizando assim, todas as tuplas de
empregados desejadas.

Para demonstrar que a tupla de departamento est diponvel, inclumos em um novo exemplo, o
nome do departamento, conforme ilustra a figura 22.

Figura 22: Exemplo 2 de aplicao da clusula where com duas tabelas.

Fonte: elaborado pela autora com base na bibliografia

4.1.5. Variveis de Tuplas

A clusula as alm de servir para dar alias para campos em uma consulta, pode criar alias para as
tuplas envolvidas em uma consulta. Retornando ao exemplo anterior temos duas tuplas envolvidas,
para melhor organizar o cdigo podemos designar alias para cada uma, e usar seus correspondentes para
identificar suas coluna (SILBERSCHATZ et. al ,1999). A figura 23 ilustra este conceito.Note como o
cdigo da consulta fica mais claro e organizado.


25

Figura 23 Exemplo da aplicao de variveis de tuplas

Fonte: elaborado pela autora com base na bibliografia

4.1.6. Operador de comparao between

O operador de comparao between tem por funo simplificar a clusula where onde se faz
necessrio o uso de uma comparao em intervalos, onde o inicio deve ser igual o inferior a um valor de
referencia e menor ou igual a mesmo valor (SILBERSCHATZ et. al ,1999).

A figura 24 ilustra um exemplo da aplicao deste operador. Voltado ao exemplo anterior, agora
desejamos selecionar todas as tuplas onde o salrio esteja entre R$ 500,00 e R$ 2000,00 e pertenam ao
departamento de logstica. Para mostrar que o operador funciona da mesma forma que os operadores
lgicos igual ou maior e menor ou igual, o exemplo com o between foi implementado juntamente com
eles. Note que o resultado das duas consultas o mesmo.






26
Figura 24 Exemplo do operador clusula between

Fonte: elaborado pela autora com base na bibliografia


4.1.7. Operaes com String

As operaes com strings mais comuns so as verificaes de coincidncias de pares. Para tanto
usamos o operador like. Para auxiliar o processo de comparao, a linguagem SQL oferece dois
caracteres especiais: Porcentagem (%) que compara qualquer substring (conjunto de caracteres) e o
Sublinhado (_) que compara qualquer caractere (SILBERSCHATZ et. al ,1999).
27
Comparaes de strings so casesensitive, ou seja, sensveis a letras maisculas e letras minsculas.
Sendo assim a e A so letras diferentes (SILBERSCHATZ et. al ,1999). Veja os exemplos de
aplicao:
Laura% igual a Laura Laranjeira;
laura% diferente de Laura Laranjeira;
Joo Silva _____ ( e sublinhados) igual a Joo Silva Lopes;
Joo Silva% igual a Joo Silva Lopes;
%Silva Lopes_ igual a Joo Silva Lopes.

A figura 25 exemplifica trs aplicaes deste operados.

Figura 25 Exemplo da clusula like

Fonte: Elaborado pela autora com base na bibliografia
28

4.1.8. Ordenao e Apresentao de Tuplas

A Linguagem SQL disponibiliza ao usurio algum controle sobre a ordenao em que as tuplas
de uma pesquisa sero apresentadas. A clusula order by, faz com que as tuplas selecionadas em
consulta sejam apresentadas em ordem crescente ou decrescente. Ressaltasse que o padro da clusula
a ordem crescente. (SILBERSCHATZ et. al ,1999). A figura 26, a seguir, ilustra trs exemplos de
aplicao desta clusula.

Figura 26 Exemplo de aplicao da clusula ORDER BY

Fonte: Elaborado pela autora com base na bibliografia

29

No primeiro consulta do exemplo a ordenao das tuplas est como crescente por
empUltNome; na segunda temos a mesma consulta porm ordenada de forma descendente; e na
terceira temos duas colunas uma desentende e outra ascendente.

4.2. Incluses

A instruo para inserir tuplas nas relaes o INSERT. (SILBERSCHATZ et. al ,1999). Sua
forma geral encontra-se expressa na figura 27, a seguir.

Figura 27 Forma geral do comando INSERT
INSERT INTO <nome_relao>
<lista das colunas>
VALUES
<lista do contedo a ser inserido nas colunas na mesma ordem da lista anterior >
Fonte: elaborado pela autora com base na bibliografia

A seguir, a figura 28 ilustra a incluso de registros na relao empregado. Note que todos os
colunas da tupla esto listadas na primeira lista. Na segundo temos a lista de contedos.

Figura 28 Exemplo do comando INSERT EM SQL Server 2005
INSERT INTO [empregado]
([empID]
,[empPriNome]
,[empUltNome]
,[empSexo]
,[empDtNasc]
,[empDepID]
,[empSupervisorID]
,[empDtInicio]
,[empSalario])
VALUES
(3
,'Carlos Onofre'
,'Souza'
,0
,'1970-01-01'
,4
,1
,'2000-05-10'
,3000)
Fonte: elaborado pela autora com base na bibliografia
30
Uma opo oferecida, mas no recomendada, no declarar a lista de colunas da tuplas, porm
o programador deve tomar o cuidado de declarar todos as colunas, na ordem que estiverem dispostas na
tupla. Este exemplo encontra-se ilustrado na figura 29.

Figura 29 Exemplo do comando INSERT EM SQL Server 2005
INSERT INTO [empregado] VALUES
(3
,'Carlos Onofre'
,'Souza'
,0
,'1970-01-01'
,4
,1
,'2000-05-10'
,3000)
Fonte: elaborado pela autora com base na bibliografia

Em casos de coluna que admitam a incluso de campos nulos, estes podem ser omitidos das
listas. Neste caso, eles sero inseridos com valor nulo.

Um opo para inserir tuplas em um tabela utilizar a clusula SELECT para selecionar tuplas
desejadas de outras relaes. Para tanto a lista de campo do INSERT deve ter uma lista correspondente
de colunas na lista de colunas que o SELECT retornar. Ressaltasse que as colunas devem ter tipos de
dados correspondentes (SILBERSCHATZ et. al ,1999). A figura 30 ilustra um exemplo.

Figura 30 Exemplo do comando INSERT EM SQL Server 2005 com SELECT

Fonte: elaborado pela autora com base na bibliografia
31
4.3. Alteraes
Para efetuar manutenes nos dados das relaes, a linguagem SQL disponibiliza a clusula
UPDATE. Com ela possvel atualizar algumas colunas das tuplas de forma pontual. Para especificar
as tuplas que deve ser alteradas deve-se utilizar a clusula WHERE para limitar uma condio, da
mesma forma que ela utilizada no SELECT . Caso uma condio no seja utilizada, a alterao se d
em todas as tuplas que o UPDATE tiver acesso (SILBERSCHATZ et. al ,1999). A figura 31 ilustra a
forma geral da clusula.

Figura 31 Forma Geral clusula UPDATE
UPDATE <relao>
SET <coluna> = <valor a ser alterado>
WHERE <condio>
Fonte: SILBERSCHATZ et. al (1999).
A figura 32 ilustra a aplicao desta clusula. Nela temos duas atualizaes: na primeira os
salrios dos empregados entre R$ 2.500,00 e R$ 20.000,00 recebem um reajuste de salrio de 10%; na
segunda os e R$ 500 e 2.499,99 recebem um reajuste de 20%.

Figura 32 Exemplo de aplicao da clusula UPDATE

Fonte: elaborado pela autora com base na bibliografia

32
4.4. Remoes

Um pedido de remoo ou excluso de tuplas, obtido com a clusula DELETE. Ela tambm
utiliza a clusula WHERE para selecionar as tuplas das relaes que ir excluir. Da mesma forma que na
clusula UPDADE, o WHERE opcional (SILBERSCHATZ et. al ,1999). A figura 33 ilustra a
forma geral desta clusula.

Figura 33 Forma Geral clusula DELETE
DELETE FROM <relao>
WHERE <condio>
Fonte: SILBERSCHATZ et. al (1999).
A Figura 34 ilustra um exemplo de aplicao da clusula.
Figura 34 Exemplo de aplicao clusula DELETE

Fonte: elaborado pela autora com base na bibliografia
33
No exemplo da figura 34 temos um SELECT geral antes e depois da execuo do DELETE.
Antes pode-se observar que o empID = 8 se encontra na seleo de tuplas, porm aps o DELETE, ele
no aparece mais.

5. Resumo

A Arquitetura dos Sistemas de Banco de Dados ANSI/SPARC. possui trs nveis:
Nvel Interno ou Fsico Responsvel pelo armazenamento dos dados.
Nvel Conceitual ou Lgico Comunitrio Serve de interface entre o primeiro e o terceiro
nveis.
Nvel Externo ou Lgico do Usurio Responsvel pela visualizao dos dados por parte do
usurio.
O foco do estudo desta aula encontra-se no nvel externo, no subconjunto de sublinguagem de
dados e linguagem de alto nvel que o utilizam, de linguagem hospedeira. Dessa forma, enquanto a
linguagem hospedeira responsvel pelos recursos de programao (como variveis, estruturas de
deciso e repetio), a sublinguagem de dados responsabiliza-se pelo acesso ao banco de dados.
Atualmente a sublinguagem de dados mais utilizada a SQL. A sublinguagem de dados pode ser
dividida em pelo menos duas partes:
Linguagem de Definio de Dados ( DDL - Data Definition Language ) Instrues para
definio de estruturas, esquemas e vises no banco de dados. Principais clusulas da
linguagem de definio de dados: CREATE, DROP, ALTER.

Linguagem de Manipulao de Dados (DML - Data Manipulation Language) Instrues para
manipulao dos dados no banco de dados, permitindo incluso, alterao, excluso e
consulta a esses dados. Principais clusulas da linguagem de Manipulao de dados:
SELECT, INSERT, UPDATE e DELETE.






34
6. Bibliografia

DATE, C. J. Introduo a sistemas de bancos de dados. 8 Edio. Rio de Janeiro:Elsevier:2003.

ELMASRI, Ramirez; NAVATHEM, Shamkant B. Sistema de Banco de Dados. 4 Edio. So
Paulo:Perarson Addison Wesley, 2005.

MONTEIRO, Emiliano Soares. Projeto de sistemas de banco de dados. Rio de Janeiro: Brasport,
2004.

SILBERSCHATZ, Abrahan; KORTH, Henry F.; SUDARSHAN, S. Sistema de Banco de Dados.
3 Edio. So Paulo:Makron Books, 1999.

Das könnte Ihnen auch gefallen