Buscar

apostila bd

Prévia do material em texto

Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 1 
 
 
 
 
1 – INTRODUÇÃO 
 
Neste curso estaremos estudando conceitos e práticas normalmente utilizadas quando projetamos em 
banco de dados relacionais. 
 
Vamos utilizar neste curso o Sistema Gerenciador de Banco de Dado (SGBD) SQL-Server 2005 
Express Edition. Vale ressaltar que no mercado existem vários softwares desenvolvidos para gerenciar banco 
de dados, tais como: 
• Access 
• MySQL 
• Postgree (gratuito) 
• Oracle 
• Paradox 
• Firebird (gratuito) 
• Etc... 
 
O SQL-Server 2005 Express Edition é um software oferecido gratuitamente no site da Microsoft. Você 
poderá baixá-lo diretamente do seguinte endereço: 
http://www.microsoft.com/downloads/details.aspx?familyid=4C6BA9FD-319A-4887-BC75-3B02B5E48A40&displaylang=en 
 
Cuidado, pois existem outros pacotes do SQL-SERVER 2005 EXPRESS, porém não oferecem 
ADVANCED SERVICES (serviços avançados). Estes serviços nos permitem manter os bancos de dados 
armazenados em um servidor. 
 
Esta versão será usada neste módulo do curso, pois, trata-se de um software LIVRE, ou seja, você não 
precisará ter uma licença para usá-lo em seu computador. 
 
Antes de falarmos do SGBD SQL-Server, temos que revisar vários conceitos relevantes sobre banco 
de dados. 
 
Um banco de dados relacional, gerado por um SGBD, possui várias TABELAS que se relacionam entre 
si, através de CAMPOS. Daí se origina o nome dado a este tipo de banco de dados, RELACIONAL. 
 
Os CAMPOS das tabelas serão utilizados para armazenar REGISTROS. Vale dizer que cada registro é 
composto por CARACTERES. 
 
O esquema abaixo ilustra os conceitos abordados acima: 
Banco de Dados � Tabelas � Campos � Registros � Caracteres 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 2 
2 – VOCABULÁRIOS USADOS EM BANCO DE DADOS 
 
Quando consultamos qualquer bibliografia de banco de dados, o vocabulário utilizado pelos autores 
são os seguintes: 
 
ENTIDADES � São as tabelas do banco de dados; 
ATRIBUTOS � São os campos das entidades; 
DOMÍNIOS � São todos os valores possíveis de dados armazenados em um atributo. Exemplo: Todos os 
códigos de peças armazenados no atributo CODPEÇA. 
TUPLA � Cada registro armazenado numa entidade; Lembre-se que um registro refere-se ao conjunto de 
dados armazenados em todas os atributos de uma tabela. 
CHAVE PRIMÁRIA � um ou mais atributos, usados para identificar e unificar as tuplas armazenadas; 
CHAVE ESTRANGEIRA � atributo existente em uma entidade filho, ou seja, entidade que recebe dados de 
outra entidade em um relacionamento. A entidade FILHO, no relacionamento, deve possuir os mesmos 
atributos da chave primária da tabela PAI, e estes devem ser do mesmo tipo e tamanho, a fim de tornar 
possível o relacionamento entre as tabelas. 
 
 
3 – POR QUE USAR UM SISTEMA GERENCIADOR DE BANCO DE DADOS? 
 
 A resposta para essa pergunta pode ser dada baseada nas seguintes vantagens: 
• É compacto � Não há necessidade de arquivos de papéis; 
• Acesso rápido � Os computadores podem acessar rapidamente qualquer informação 
armazenada num Banco de dados (B.D.). 
• Menos trabalho braçal � Os funcionários de empresas não precisam preocupar-se 
com o arquivamento de fichas, pois o computador é responsável por fazê-lo. 
• Fluxo corrente � informações certas e atualizadas a qualquer momento, basta pedir. 
 
 
4 – VANTAGENS EM USARMOS BANCO DE DADOS RELACIONAIS 
 
 Um banco de dados deve oferecer para empresas algumas vantagens. Estas vantagens facilitarão a 
tomada de decisões e permitirão a armazenagem de dados confiáveis. Veja as vantagens: 
• Redução na redundância de dados � eliminar repetições DESNECESSÁRIAS em 
atributos das entidades. 
• Compartilhamento de dados pelas aplicações novas e as já existentes; 
• Padronização de padrões � esta tarefa refere-se à padronização de dados e 
documentos dentro da empresa, para facilitar o compartilhamento e a compreensão de 
dados; 
• Restrições de segurança � referem-se aos controles de acessos aos usuários do 
banco de dados (pessoas ou aplicações). 
• Manter a integridade de dados � possuir nas entidades do banco de dados 
informações atualizadas e consistentes, para tomada de decisões dentro da empresa. 
 
 
5 – NORMALIZAÇÕES DE ENTIDADES DO BANCO DE DADOS 
 
 Quando estamos criando as tabelas de um banco de dados, devemos tomar o cuidado de retirarmos 
dessas os campos que armazenarão registros redundantes desnecessários. A esse processo damos o nome 
de NORMALIZAÇÃO. Em alguns momentos a redundância de dados torna-se necessária, como veremos 
adiante. 
 
 Normalizar, diante do que foi descrito acima, nada mais é do que: 
A) MINIMIZAR REDUNDÂNCIAS e INCONSISTÊNCIAS de dados; 
B) FACILITAR A MANIPULAÇÃO DO BANCO DE DADOS; 
C) FACILITAR A MANUTENÇÃO DOS DADOS NO BANCO DE DADOS. 
 
Antes de normalizarmos as ENTIDADES de um banco de dados relacional, devemos identificar as 
ANOMALIAS NELAS EXISTENTES. 
 
 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 3 
5.1 – ANOMALIAS DE ENTIDADES DE BANCO DE DADOS 
 
As anomalias mais comuns existentes em ENTIDADES de um banco de dados são as seguintes: 
• Anomalia da INCLUSÃO; 
• Anomalia da INCONSISTÊNCIA; 
• Anomalia da ALTERAÇÃO (atualização); 
• Anomalia da EXCLUSÃO; 
 
Vamos ilustrar as situações de anomalias de entidades. Com isso será possível sabermos quando 
devemos normalizar a ENTIDADE. Observe a entidade abaixo: 
 Pedidos_Pecas 
Num_pedido Data Num_peça Descricao Quantidade Preco 
1000 14/11/98 Ax12 Bicicleta 3 90,00 
1020 15/11/98 BT04 Tv 10 400,00 
1030 15/11/98 BZ66 Bola 300 5,00 
1040 16/11/98 BT04 Tv 4 160,00 
1050 17/11/98 CB03 Vidro 5 25,00 
1070 20/11/98 BT04 Bola 2 80 
 
5.1.1 – Anomalia de INCLUSÃO 
 
Repare na entidade Pedidos_pecas, mostrada no capítulo 5.1 desta apostila, que para trabalhar com 
uma nova peça no banco de dados, o usuário será obrigado fazer um pedido da mesma, visto que não é 
possível somente cadastrar dados da peça. Este é um exemplo prático de uma anomalia de INCLUSÃO. 
 
 
5.1.2 – Anomalia de ALTERAÇÃO (atualização) 
 
Repare na entidade Pedidos_pecas, mostrada no capítulo 5.1 desta apostila, que ao efetuar UMA 
alteração na peça BT04, essa se fará necessária em várias outras tuplas da entidade, visto que vários pedidos 
desta mesma peça foram cadastrados na entidade. Este é um exemplo prático de uma anomalia de 
ALTERAÇÃO. 
 
 
5.1.3 – Anomalia de EXCLUSÃO 
 
Repare na entidade Pedidos_pecas, mostrada no capítulo 5.1 desta apostila, que ao excluirmos o 
pedido 1000 perderemos também qualquer referência da peça AX12, pois esta foi requisitada somente em um 
pedido. Imagine o que aconteceria se esta peça fosse vendida para algum cliente! Este é um exemplo prático 
de uma anomalia de EXCLUSÃO. 
 
 
5.1.4 – Anomalia de INCONSISTÊNCIA 
 
Repare na entidade Pedidos_pecas, mostrada no capítulo 5.1 desta apostila, que não há nada que 
impeça que a peça BT04 seja cadastrada com várias descrições diferentes. Isso seria uma catástrofe no 
momento de uma venda! Este é um exemplo prático de uma anomalia de INCONSISTÊNCIA. 
 
 Diante das anomalias exemplificadas anteriormente iremos falar neste ponto das normalizações de 
entidades de um banco de dados. Existem 6 formasde normalizarmos uma entidade, segundo CODD, a saber: 
• 1NF � primeira forma normal; 
• 2NF � segunda forma normal; 
• 3NF � terceira forma normal; 
• BCNF � Forma normal de Boyce Codd; 
• 4NF � quarta forma normal; 
• 5NF � quinta forma normal; 
 
 
 
 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 4 
5.2 – 1NF (PRIMEIRA FORMA NORMAL) 
 
Uma relação está na 1FN, se somente todos os domínios básicos (CONTEÚDOS DE CADA CAMPO) 
contiverem somente valores atômicos (não repetidos). Para atingir esta forma normal devemos eliminar os 
grupos de registros repetidos. Como? 
 
Procedimentos: 
a) Identificar a chave primária da entidade; 
b) Identificar o grupo de atributos que causam a repetição de registros e excluí-lo da entidade; 
c) Criar uma nova entidade com a chave primária da entidade anterior e o grupo de atributos que causavam a 
repetição. 
 
A chave primária da nova entidade será obtida pela concatenação da chave primária da entidade 
inicial e a chave primária do grupo repetitivo. 
 
 
 
Figura 1 
 
A ENTIDADE ACIMA NÃO ESTÁ NORMALIZADA, PORTANTO DEVEMOS NORMALIZÁ-LA PARA A 1NF, 
pois apresenta as seguintes ANOMALIAS: 
 
a) Para toda nota fiscal cadastrada, há necessidade de informarmos o código, a descrição e o 
preco de venda de CADA mercadoria da nota. Desta forma, corremos o risco de 
cadastrarmos uma descrição ou preço, de uma MESMA MERCADORIA, de diferentes 
formas. 
b) Caso seja necessário alterar a descrição ou preço de venda de uma mercadoria, 
correríamos o risco de alterar somente em uma tupla da entidade. 
c) Se quisermos excluir uma determinada mercadoria da entidade, deveremos procurá-la 
tupla a tupla, o que tornaria uma tarefa trabalhosa. 
d) Caso excluíssemos da entidade uma mercadoria que fosse cadastrada uma única vez, 
perderemos as informações dessas para consultas futuras. 
 
Para solução das anomalias acima, deveremos normalizar a tabela notafiscal para a 1NF, conforme 
figura abaixo: 
 
 
 
 
 Figura 2 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 5 
OBSERVAÇÃO IMPORTANTE: Na nova entidade “Vendas”, ilustrada na figura anterior, note que a 
chave primária é composta pela chave da tabela NotaFiscal (NumeroNotaFiscal) e CódigoMercadoria. 
 
5.3- 2NF (SEGUNDA FORMA NORMAL) 
Uma relação está na 2FN, se e somente se, ela estiver na 1NF e todos os atributos não chave forem 
totalmente dependentes da chave primária (dependente de toda a chave e não apenas de parte dela). 
Procedimentos: 
a) Identificar os atributos que não são funcionalmente dependentes de toda a chave primária. 
b) Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles. 
 
A chave primária da nova entidade será o atributo nos quais os atributos removidos são funcionalmente 
dependentes. 
Exemplo: Vejamos as entidades a seguir: 
Notas Fiscais: 
(Num. NF, Série, Código do Cliente, Nome do cliente, Endereço do cliente, Total Geral da Nota) 
Arquivo de Vendas: 
 (Num. NF, Código da Mercadoria, Descrição da Mercadoria, Quantidade vendida, Preço de venda e Total da 
Venda) 
 
 
Figura 3 
 
AS ENTIDADES ACIMA NÃO ESTÃO NA SEGUNDA FORMA NORMAL, 
MAS SIM NA PRIMEIRA FORMA NORMAL 
 
Normalizando para segunda forma normal (2FN): 
Arquivo de Notas Fiscais (Num. NF, Série, Código do Cliente, Nome do cliente, Endereço do cliente, Total 
Geral da Nota) 
Arquivo de Vendas (Num. NF, Código da Mercadoria, Quantidade vendida e Total da Venda) 
Arquivo de Mercadorias (Código da Mercadoria, Descrição da Mercadoria, Preço de venda) 
 
 
Figura 4 
Como resultado desta etapa, houve um desdobramento do arquivo de Vendas (a ENTIDADE 
NOTAFISCAL, não foi alterada, por não possuir chave composta) em duas estruturas, a saber: 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 6 
Primeira estrutura (Arquivo de Vendas): Contêm os atributos originais, sendo excluídos os dados que 
são dependentes apenas do campo Código da Mercadoria. 
Segundo estrutura (Arquivo de Mercadorias): Contém os elementos que são identificados apenas 
pelo Código da Mercadoria, ou seja, independentemente da Nota Fiscal, a descrição e o preço de venda serão 
constantes. 
 
 
5.4- 3FN (Terceira Forma Normal) 
Uma relação está na 3FN se somente estiver na 2FN e todos os atributos não chave forem 
dependentes não transitivos da chave primária (cada atributo for funcionalmente dependente apenas dos 
atributos componentes da chave primária, ou se, todos os seus atributos não chave forem independentes entre 
si). 
Procedimentos: 
a) Identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave; 
b) Removê-los e criar uma nova entidade com os mesmos. 
 
A chave primária da nova entidade será o atributo nos quais os atributos removidos são funcionalmente 
dependentes. 
Estrutura na segunda forma normal (2FN): Observem as entidades abaixo: 
Notas Fiscais: 
(Num. NF, Série, Data emissão, Código do Cliente, Nome do cliente, Endereço do cliente, Total Geral da Nota) 
Vendas: 
(Num. NF, Código da Mercadoria, Quantidade vendida e Total da venda desta mercadoria) 
Mercadorias: 
(Código da Mercadoria, Descrição da Mercadoria, Preço de venda) 
 
Estrutura na terceira forma normal (3FN): Observem as entidades abaixo: 
Notas Fiscais: 
(Num. NF, Série, Data emissão, Código do Cliente e Total Geral da Nota) 
Vendas: 
(Num. NF, Código da Mercadoria, Quantidade vendida e Total da venda desta mercadoria) 
Mercadorias: 
(Código da Mercadoria, Descrição da Mercadoria, Preço de venda) 
Clientes: 
(Código do Cliente, Nome do cliente, Endereço do cliente) 
 
Como resultado desta etapa, houve um desdobramento do arquivo de Notas Fiscais, por ser o único que 
possuía campos que não eram dependentes da chave principal (Num. NF), uma vez que independente da Nota 
Fiscal, o Nome, Endereço são inalterados. Este procedimento permite evitar inconsistência nos dados dos 
arquivos e economizar espaço, por eliminar o armazenamento freqüente e repetidas vezes destes dados. A 
cada nota fiscal comprada pelo cliente, haverá o armazenamento destes dados e poderá ocorrer divergência 
entre eles. 
 
As estruturas alteradas e o motivo das alterações: 
- Primeira estrutura (Notas Fiscais): Contêm os elementos originais, sendo excluído os dados que são 
dependentes apenas do campo Código do Cliente (informações referentes ao cliente). 
- Segundo estrutura (Clientes): Contém os elementos que são identificados apenas pelo Código do Cliente, ou 
seja, independente da Nota Fiscal, o Nome, Endereço serão constantes. 
 
Após a normalização, as estruturas dos dados estão projetadas para eliminar as inconsistências e 
redundâncias dos dados, eliminando desta forma qualquer problema de atualização e operacionalização do 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 7 
sistema. A versão final dos dados poderá sofrer alguma alteração, para atender as necessidades específicas 
do sistema, a critério do analista, durante a fase de desenvolvimento do projeto físico do sistema. 
 
 
5.5- BCNF ou NFBC (Forma Normal de BOYCE CODD) / 4FN (Quarta Forma Normal)e 5FN(Quinta Forma 
Normal) 
 A BCNF, a 4FN e a 5FN não serão abordadas neste curso. Ressalta-se que estas normalizações 
existem e devem ser tratadas em cursos que abordam a fundo as teorias de banco de dados. Vale dizer 
também, que o objetivo desse curso é aprofundarmos na linguagem Transact-SQL e conhecer a ferramenta 
SQL-SERVER, o que faz necessário termos noções básicas de normalizações e relacionamentos entre 
entidades de um banco de dados relacional. 
Antes de normalizarmos as tabelas de um banco de dados devemos passar por etapas de modelagem 
de dados. As etapas envolvidas na construção de modelos de dados são: 
• Modelo Conceitual 
• Modelo Lógico 
• Modelo Físico 
 
 – MODELO CONCEITUAL 
 Nesta etapa da modelagem de dados o DBA deve: 
• Conhecer o negócio 
• Rascunhar as principais entidades do BD. e seus principais atributos. 
• Não se preocupar com os relacionamentos n : n. 
 
 – MODELO LÓGICO 
 Nesta etapa da modelagem de dados o DBA deve: 
• Representar o negócio. 
• Criar as entidades de relacionamentos para substituir os relacionamentos n:n. 
• Definir as chaves primárias de cada entidade. 
• Normalizar as tabelas. 
• Adequar aos padrões do banco de dados escolhido, neste caso, ao padrão do SQL 
SERVER. 
• Documentar as entidades e seus atributos. 
 
 – MODELO FÍSICO 
 Nesta etapa da modelagem de dados o DBA deve: 
• Tomar ciência das limitações do banco de dados, neste caso, o SQL-SERVER. 
• Considerar os requisitos dos softwares que farão acesso ao banco de dados. 
• Criar fisicamente as entidades, relacionamentos, chaves, índices, definir níveis de 
acessos entre outros, ou seja, criar fisicamente o banco de dados projetado nas etapas 
anteriores. 
 
 
6 – SQL-SERVER 
 
 De agora para frente iremos abordar assuntos relativos à ferramenta SQL-SERVER 2005 Express 
Edition. 
 
Comparando o SQL-SERVER com o ACCESS, podemos destacar principalmente entre as diferenças, 
a capacidade de armazenamento, visto que o ACCESS manipula no MÁXIMO 2GB de registros distribuídos 
entre as entidade de um banco de dados. Já o SQL-SERVER é capaz de manipular registros desde que haja 
espaço no HD. Porém, esta versão que estamos usando, 2005 EXPRESS EDITION, permite manipularmos em 
cada arquivo de banco de dados no máximo de 4 GB. 
 
 Outra grande vantagem do SQL-SERVER refere-se ao fato do mesmo trabalhar com arquitetura 
cliente-servidor. Com isso, todos os bancos de dados criados no SQL poderão ser acessados pelo cliente, no 
servidor. 
 
 Um Servidor SQL pode conter vários bancos de dados, que por sua vez são acessados por vários 
usuários. 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 8 
 Num banco de dados criado no SQL-SERVER, poderemos limitar os acessos ao próprio banco, como 
também às entidades e até mesmo seus atributos. Tarefas como leitura, gravação, exclusão e consulta à tuplas 
também podem ser limitadas para determinados usuários. 
 
 
6.1 – COMPONENTES DO SQL-SERVER 2005 Express Edition 
 
 Os principais componentes do SQL-SERVER são os seguintes: 
• Banco de dados 
• Tabelas 
• Diagrams 
• Visões 
• Stored Procedures 
• Triggers 
• Etc.. 
A seguir veremos com mais detalhes cada componente de um banco de dados do SQL. 
 
6.1.1 – BANCO DE DADOS 
 
 Um banco de dados é composto por: 
• Tabelas; 
• Visões; 
• Triggers; 
• Stored Procedures; 
• E outros; 
 
Como dito anteriormente o SQL Server 2005 Express Edition pode manter vários bancos de dados. 
 
Cada novo banco de dados criado possuirá os componentes citados acima. A figura abaixo ilustra os 
componentes dos bancos de dados criados no servidor SQL: 
 
 
 
Figura 5 
 
Repare que o banco de dados MASTER possui seus componentes: Tables, Views, Stored Procedures 
e etc. Perceba que no banco de dados NORTWIND, estes mesmos componentes estão presentes. 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 10 
6.1.6 – TRIGGERS 
 
 Uma trigger nada mais é do que uma rotina de programação que é disparada (executada) 
automaticamente, diante de um cadastro, alteração e/ou exclusão de registros em uma tabela. 
 
 Quando criamos a trigger informamos em que momento ela será disparada. 
 
 Nas triggers são utilizados comandos da linguagem Transact-SQL. 
 
 
7 – O AMBIENTE DO SQL-SERVER 2005 EXPRESS EDITION 
 
 Para acessarmos o SQL-Server 2005 Express Edition, devemos acessá-lo no grupo de programas do 
SQL, conforme mostrado abaixo: 
 
 
 
Figura 7 
 
 Ao clicar na opção “SQL Server Management Studio Express”, surgirá então a seguinte tela: 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 11 
 
 
Figura 8 
 
 Na tela acima, na janela “Connect to Server”, não se esqueça de informar o conteúdo para o campo 
“Server name”, pois esta informação refere-se ao nome do servidor SQL instalado no seu computador. 
Inclusive o nome que aparece no exemplo acima, com certeza será diferente no seu computador. 
 Por fim, para efetuar a conexão com o servidor SQL, clique no botão “Connect”. Surgirá então as 
seguintes áreas do ambiente do SQL-SERVER: 
 
 
 
Figura 9 
 
 
 
 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 12 
7.1 – ASSISTENTE DE CRIAÇÃO DE BANCO DE DADOS NO SQL-SERVER 
 
 
 
Figura 10 
 
 Para criação de um novo banco de dados basta: 
• Clicarmos com botão direito do mouse sobre “Databases” 
• No menu que surgir (mostrado na figura acima) clique na opção “New Database” 
• Na tela que surgir, indique o nome do banco de dados que será criado. Digite o nome do banco 
no campo “Database Name”, conforme ilustra a figura abaixo: 
 
 
 
Figura 11 
 
• O arquivo do banco de dados será gravado na pasta do servidor SQL-SERVER, localizada 
em “C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data”. 
 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 13 
• Para concluir a criação física do arquivo de banco de dados, basta clicar no botão “OK”. 
 
Após seguir os passos descritos anteriormente, seu banco de dados será mostrado como nos 
exemplos abaixo, indicados pelas setas: 
 
 
 
Figura 12 
 
 
7.2 – ATTACH DATABASE 
 
 Este recurso é utilizado para acessarmos um banco de dados no SQL-SERVER. 
 
Quando houver necessidade de copiarmos um banco de dados para outro servidor SQL, devemos 
“atachá-lo” neste servidor. Os arquivos de log (.ldf), e do banco de dados (.mdf) devem ser copiados para o 
computador, NA PASTA “C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data”, onde se encontra o 
servidor SQL. 
 
Em seguida, na janela “Object Explorer” siga os passos abaixo: 
• Clique com o botão direito do mouse sobre o componente “Databases”; 
• Escolha a opção “Attach...”; 
 
A figura abaixo ilustra os passos acima: 
 
 
 
Figura 13 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson WanderPágina: 14 
 Surgirá então a seguinte janela: 
 
 
 
Figura 14 
 
 Siga os passos abaixo, a partir da janela mostrada acima, para “atachar” (puxar/fixar/carregar) o banco 
de dados copiado anteriormente para a pasta do servidor SQL. 
 
• Na janela acima, dê um clique no botão “Add...”. 
• Surgirá a janela “Locate Database Files”, mostrada abaixo: 
 
 
 
Figura 15 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 15 
 Obs.: Repare que a janela da mostrada, mostra todos os bancos de dados (arquivos .mdf), existentes 
na pasta do servidor. 
 
• Basta, então, selecionar o nome do banco de dados desejado e clicar no botão “OK”. Desta 
forma o banco de dados aparecerá na janela “Object Explorer”. 
 
 
7.3 – CRIAÇÃO DE TABELAS NO BANCO DE DADOS 
 
 Para criação de tabelas em um banco de dados é necessário abri-lo primeiramente. Faça isso clicando 
no nome do banco de dados, mostrado na janela “Object Explorer”, conforme exemplo abaixo: 
 
 Para criar uma nova tabela em um banco de dados, siga os passos a seguir: 
• clique com o botão direito do mouse no objeto “Table”; 
• Surgirá um submenu, neste selecione a opção “New Table...”, conforme figura abaixo: 
 
 
 
Figura 16 
 
• Surgirá então as seguintes áreas, apontadas pelas setas: 
 
 
 
Figura 17 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 16 
 
 A área mostrada é usada para criar uma nova tabela. Nela indique: 
 
 Column Name: Nesta coluna você deve indicar os nomes dos atributos da entidade (Campos da 
tabela) que serão criados. 
 
 Data Type: Indique o tipo de dado de cada atributo criado. 
 Allow Nulls: Quando esta coluna apresentar uma marca de checagem indicará que o 
atributo em questão aceitará gravação registros sem que o usuário tenha informado um dado qualquer para o 
referido campo. 
 Para criar fisicamente a tabela, basta clicar no botão e indicar o nome da tabela na janela que 
surgirá. 
 
 Após criar a tabela, quando necessário, será possível alterá-la. Para isto, basta clicar com o botão 
direito do mouse sobre o nome da tabela, estando com a árvore de objetos “Table” aberta, no banco de dados 
onde a mesma se encontra, conforme a figura abaixo: 
 
 
 
Figura 18 
 
 Ao clicar na opção “Design” no submenu mostrado, a área estrutura da tabela será novamente 
mostrada, para que se possa incluir, alterar ou excluir campos. 
 
 
7.4 – CRIAÇÃO DE CHAVE PRIMÁRIA PARA TABELAS 
 
 Para criação de chaves primárias siga os passos abaixo: 
• Selecione o(s) atributos (s) que irão compor a chave primária; 
• Clique no botão , mostrado na figura a seguir. 
 
Veja o exemplo abaixo: 
 
 
 
Figura 19 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 17 
 
 Na figura, foram selecionados para chave primária os atributos: “codigo" e “cpf”. Em seguida, foi clicado 
no botão da chave, disposto na barra de ferramentas. Esses processos fizeram dos atributos indicados, chave 
primária COMPOSTA da tabela. 
 
 Para exemplificar, vamos excluir alguns atributos da entidade “professores”. Veja como ficará o layout 
da tabela: 
 
 
 
Figura 20 
 
 Para excluir um atributo da tabela selecione-o e pressione o botão “Delete”. 
 
 
7.5 – RELACIONANDO TABELAS(ENTIDADES) 
 
 O relacionamento entre tabelas normalizadas é outra importante operação disponível nos SGBD’s. No 
SQL-SERVER, utilizaremos inicialmente o objeto “DIAGRAMS” para relacionar as tabelas do banco de dados. 
 
 Antes, porém, é importante citarmos os tipos de relacionamentos existentes entre tabelas de um banco 
de dados, a saber: 
 
1. 1..N: Um único registro da tabela PAI pode se relacionar com vários registros na tabela filho; 
2. 1..1: Um único registro da tabela PAI pode se relacionar com um único registro na tabela filho; 
3. N..N: Vários registros da tabela PAI poderão se relacionar com vários registros na tabela filho. 
É importante ressaltar que este tipo de relacionamento não deve existir num banco de dados. 
Para isso, devemos criar uma tabela de entidade de relacionamento, que fará com que a 
relação se torne 1..n. Veremos a solução prática para este exemplo mais a frente; 
 
 
IMPORTANTE: 
 
1. PARA RELACIONAR DUAS OU MAIS TABELAS, NÃO DEVEM EXISTIR REGISTROS CADASTRADOS 
NAS MESMAS. 
 
2. Os campos envolvidos no relacionamento (chave(s) primária(s) e chave(s) estrangeira(s) devem ser 
do MESMO TIPO E TAMANHO). OS NOMES DE TAIS CHAVES NÃO PRECISAM SER O MESMO. 
 
 
 
 
7.5.1 – RELACIONAMENTO 1..N 
 
 Conforme descrito anteriormente, este tipo de relacionamento faz com que 1 registro da tabela Pai se 
relacione com vários outros na tabela FILHO. Vejamos o exemplo na figura a seguir: 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 18 
 
 
 Figura 21 
 
 Reparem na figura que foram criadas as tabelas “professores” e “telefonesprofessor”. 
 
 Analise as seguintes observações: 
1. Na tabela “professores”, verifique que o campo “codigoprofessor” é chave primária. Isso fará com 
que exista somente UM professor com um código específico. 
2. Na tabela “telefonesprofessor”, veja que existe uma chave primária COMPOSTA pelos campos 
“codprofessor” (também conhecida como chave estrangeira) e “telefoneprofessor”. Isso possibilitará 
o cadastro de vários telefones para um professor. Por exemplo: 
 
 
 
Figura 22 
 
3. Se relacionamos as duas tabelas, veremos que o tipo de relacionamento será 1..N, conforme 
mostrado na figura abaixo: 
 
 
 
 
 
 
Figura 23 
 
4. Na tabela FILHO, SE O CAMPO “CodProfessor” não fizesse parte da chave primária, o tipo de 
relacionamento ainda sim seria 1..N. Conforme ilustra a figura abaixo: 
 
 
 
Figura 24 
 
7.5.2 – RELACIONAMENTO 1..1 
 
 Neste tipo de relacionamento teremos o campo chave primária da tabela PAI sendo também sendo o 
campo chave da tabela FILHO, ou seja, o mesmo campo chave primária nas tabelas envolvidas no 
1 
N 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 19 
relacionamento. Por esse motivo temos um único registro cadastrado somente uma vez em ambas as tabelas, 
o que torna o relacionamento 1..1. Veja o exemplo mostrado na figura abaixo: 
 
 
 
 
 
Figura 25 
 
Analise a seguintes observação: 
• A figura acima mostra que para cada professor cadastrado na tabela “professores”, poderemos 
ter SOMENTE UM telefone cadastrado na tabela “telefoneprofessor”, ISTO PORQUE somente 
o campo “codprofessor” é chave primária e estrangeira nesta tabela. 
 
 
7.5.3 – RELACIONAMENTO N..N 
 
 Este tipo de relacionamento não deve aparecer em banco de dados. Eles são “excluídos” devido à 
necessidade de criação de uma tabela chamada “entidade de relacionamento”. 
 
 Uma entidade de relacionamento deve conter os campos chaves das tabelas que possuem o tipo de 
relacionamento N..N. Com isso, relacionam-se as tabelas PAI e FILHO com esta entidadede relacionamento. 
 
Veja a figura abaixo, ela representa a situação descrita acima: 
 
 
 
Figura 26 
 
 
 
 
 
1 1 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 20 
 Se relacionarmos as tabelas criadas teremos: 
 
 
 
 
 
Figura 27 
 
 Analisemos o relacionamento acima: 
1. Com o relacionamento acima, tornamos possível que um professor tenha vários telefones e que um 
mesmo telefone pertença a mais de um professor. Um exemplo típico para esta situação é a de 
professores casados que tenham os mesmos telefones de contato. 
2. A tabela “TelefonesProfessores” foi criada para solucionarmos o tipo de relacionamento N..N. 
Portanto esta tabela é chamada de “entidade de relacionamento” entre as tabelas “professores” e 
“telefones”. 
 
 
7.5.4 – CRIAÇÃO DE RELACIONAMENTOS PELO OBJETO DATABASE DIAGRAMS 
 
 Como visto anteriormente, o objeto “DATABASE DIAGRAMS” é utilizado para criarmos os 
relacionamentos entre tabelas de um banco de dados. 
 
 Utilize os passos abaixo para relacionar as tabelas de um banco de dados: 
1. Clique com o botão direito do mouse sobre o objeto “Database Diagrams”, disposto na árvore 
de objetos do banco de dados em aberto; 
2. No menu que irá surgir, clique sobre “New Database Diagram”, conforme ilustra a figura a 
seguir: 
 
 
 
Figura 28 
 
 Após seguir os passos acima, veremos a janela do assistente de criação de relacionamentos, chamada 
“Add Table”, conforme ilustra a próxima figura: 
 
 
 
 
 
 
 
 
 
1 
1 
N 
N 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 21 
 
 
 
Figura 29 
 
 Usando a janela “Add Table” clique no botão “Add” para incluir as tabelas que serão relacionadas, 
neste exemplo serão relacionadas todas as tabelas. Após adicionar todas as tabelas que serão relacionadas 
entre si, basta clicar no botão “Close”, para fechar a janela “Add Table”. Veja o resultado na figura abaixo: 
 
 
 
Figura 30 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 22 
Se você notar que se esqueceu de relacionar uma tabela qualquer na área acima, clique com o botão 
direito do mouse sobre a área onde as tabelas estão sendo mostradas, e em seguida clique na opção “Add 
Table...”. Com isso você poderá inserir outras tabelas na área de diagramas acima. 
 
Para relacionarmos as tabelas mostradas na área de diagramas, devemos arrastar O(S) CAMPO(S) 
DA CHAVE PRIMÁRIA, DA TABELA PAI, para cima do(s) CAMPO(S) CHAVE ESTRANGEIRA na tabela 
FILHO. Quando este processo for feito, surgirá a tela “Tables and Columns”, para definições gerais do 
relacionamento que será criado: 
 
 
 
 
Figura 31 
 
Na janela acima, temos: 
 
Primary Key Table: Indica o nome da tabela PAI onde está a chave primária; 
Foreign Key Table: Indica o nome da tabela FILHO onde se encontra a chave estrangeira; 
 
: Indicam quais os campos serão relacionados. 
Caso algum campo não esteja relacionado, basta clicar na linha e seleciona-lo na caixa que será aberta. 
 
Ao termino da indicação dos campos que serão relacionados, clique no botão “OK”. A janela será 
fechada e a seguinte janela será mostrada: 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 23 
 
 
Figura 32 
 
 
Na janela acima observe as seguintes opções: 
 
 
 
Figura 33 
 
Delete Rule: Com a opção “Cascade” selecionada, as exclusões de registros na tabela “PAI” excluirão 
automaticamente registros relacionados na tabela “FILHO”. 
 
Update Rule: Com a opção “Cascade” selecionada, as alterações em registros na tabela “PAI” alterarão 
automaticamente registros relacionados na tabela “FILHO”. 
 
O botão “OK”: este botão criará o relacionamento físico entre as tabelas PAI e FILHO. O tipo do 
relacionamento será indicado AUTOMATICAMENTE, diante das definições de chave primária e estrangeiras, 
nas tabelas PAI e FILHO. 
 
Após o término das definições dos relacionamentos, criamos um relacionamento físico entre as tabelas, 
conforme ilustra a próxima figura: 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 24 
 
 
Figura 34 
 
IMPORTANTE: 
 
Tabela PAI: Refere-se à tabela que ENVIA dados para outra tabela da relação; 
 
Tabela FILHO: Refere-se à tabela que RECEBE dados da tabela pai da relação; 
 
 
Vale dizer que TODOS os relacionamentos devem ser criados, antes de gravá-los. No exemplo acima 
criamos somente a relação entre as tabelas “professores” e “telefoneprofessor”. Poderíamos relacionar também 
a tabela “univap” com a tabela “telefoneprofessor”. 
 
Para gravar os relacionamentos criados, basta clicar no botão , disponível na barra de ferramentas 
do SQL-SERVER. Dê o nome que desejar para os relacionamentos criados. 
 
 
8 – MANIPULANDO TUPLAS EM UMA ENTIDADE 
 
 Depois de criados os relacionamentos entre as tabelas do banco de dados, você poderá gravar e 
manipular registros nessas. 
 
 LEMBRETE: NÃO GRAVE REGISTROS NAS TABELAS ANTES DE RELACIONÁ-LAS. Se as 
tabelas possuírem registros, você não conseguirá criar os relacionamentos, pois o SGBD irá verificar se 
existem registros que farão com que se perca a integridade de dados, ou seja, por exemplo: a tabela FILHO 
possua registros não cadastrados anteriormente na tabela PAI. 
 
 Para cadastrar registros É NECESSÁRIO FAZÊ-LO PRIMEIRAMENTE NA TABELA PAI. 
 
 Baseado nas últimas tabelas, mostradas anteriormente nesta apostila, vamos cadastrar registros na 
tabela “professores”, para isso siga os passos a seguir: 
• Clique no objeto “Tables”, na árvore de objetos do SQL-SERVER, para que o SQL mostre 
a árvore com nomes de todas as tabelas existentes no banco de dados desejado; 
• Clique com o botão direito do mouse sobre o nome da tabela desejada; 
• No submenu, clique sobre “Open Table...”, conforme ilustrado na figura abaixo: 
 
 
 
Figura 35 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 25 
 Seguidos os passos acima, surgirá a seguinte tela de edição de registros do SQL-SERVER: 
 
 
 
Figura 36 
 
 Para CADASTRAR um registro, basta começar a digitar o “codigoprofessor” , o “nomeprofessor” e 
“idadeprofessor”. Após a digitação da idade do professor, basta pressionar <enter>, para o registro ser gravado 
na tabela. 
 
 Para ALTERAR um registro, basta clicar no campo do registro desejado e redigitar o dado. O simples 
fato de passar para um próximo registro, fará com que a alteração seja concretizada. 
 Para EXCLUIR um registro, basta clicar na seta que aponta para o registro corrente e 
pressionar a tecla “Delete”, no teclado do computador. Este processo irá excluir o registro da tabela. 
 
 
9 – TESTES DE INTEGRIDADE DE DADOS 
 
 Os testes de integridade de dados podem ser feitos em váriosmomentos, a saber: 
• Na INCLUSÃO de registros nas tabelas FILHO; 
• Na EXCLUSÃO e ALTERAÇÃO de registros nas tabelas PAIS. 
 
Vamos esclarecer melhor os testes citados acima. Vamos observar os seguintes relacionamentos entre 
as tabelas : 
 
 
Figura 37 
 
Agora vamos explicar na prática os testes de integridade, diante dos relacionamentos mostrados na 
figura acima: 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 26 
 
 INCLUSÃO: Na tabela “TelefonesProfessores” só será permito o cadastro de novos registros se, e 
somente se, existirem professores e telefones cadastrados nas tabelas “professores” e “telefone”, 
respectivamente. 
 
 EXCLUSÃO ou ALTERAÇÃO: Se no momento da criação dos relacionamentos acima, o DBA NÃO 
OPTOU por EXCLUSÃO e/ou ALTERAÇÃO EM CASCATA, e tentarmos excluir, ou alterar registros de 
“professores” e/ou “telefones” que estão diretamente ligados a registros na tabela “TelefonesProfessores”, o 
SQL-SERVER exibirá uma mensagem de alerta, indicando que a operação escolhida não será concretizada, 
isso para não ocorrer falha na integridade de dados. Na prática, imagine se conseguíssemos excluirmos um 
professor cujo código, por exemplo, fosse 100, da tabela “professores” e existissem telefones do mesmo, 
cadastrados na entidade de relacionamento “TelefonesProfessores”. Diante deste exemplo prático, não 
saberíamos dizer qual o nome e/ou idade do professor que possui os telefones existentes na entidade de 
relacionamento “TelefoneProfessores”, pois o excluímos da tabela PAI (“professores”). O mesmo controle vale 
para a operação de Alteração. 
 
 
10 – VISÕES 
 
 Como dito anteriormente, cada banco de dados possui o objeto “VIEWS”. Esse objeto deve ser usado 
para criarmos consultas a registros de uma tabela, utilizando a instrução “SELECT” da Transact-SQL. 
 
 O objeto VIEWS de um banco de dados, cria uma tabela TEMPORÁRIA, cujos registros armazenados 
serão filtrados de tabela(s) do banco em uso. 
 
 No SQL-SERVER, poderemos usar o assistente de criações de visão. Para isso, devemos abrir o 
banco de dados desejado. Em seguida, siga os passos ilustrados a seguir: 
 
 
 
 
Figura 38 
 
 
 Surgirá então a seguinte tela: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 27 
 
 
 
Figura 39 
 
 
Onde: 
 
- Usado para gravar as INSTRUÇÕES que geraram uma consulta; 
 
 - Estes botões farão fechar ou mostrar, os painéis da área de trabalho mostrado na 
figura; 
 
 - Executa uma consulta criada; 
 
 - Analisa uma consulta SQL criada. 
 
- Faz uso da cláusula Group...By (será abordada posteriormente), na consulta SQL criada; 
 
- Este botão é o mais importante da janela acima, pois ele permitirá escolhermos quais tabelas 
físicas serão usadas para criação das consultas de registros. 
 
 Para ilustrar uma consulta criada pelo objeto VIEWS, vamos indicar uma tabela qualquer de um banco 
de dados, por exemplo a tabela “professores”. Para isso, basta selecionarmos o nome da tabela na janela “Add 
Table” e clicar no botão “Add”, conforme a figura a seguir: 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 28 
 
 
Figura 40 
 
 Quando clicarmos no botão , a janela “Add Table” surgirá novamente, se estiver fechada. Então, 
selecione o nome da tabela desejada e clique novamente no botão “Add”. 
 
No exemplo acima, foi escolhida a tabela “professores”. Quando o botão “Add” foi clicado, a tabela foi 
inserida na área de criação da visão, disposta atrás da “Add Table”. Caso necessário, você poderá utilizar, 
numa só consulta, várias tabelas. Veremos mais adiante a utilidade de usarmos numa consulta várias tabelas. 
 
 Depois de inserida a tabela escolhida para consultas, podemos fechar a janela “Add Table” e 
definirmos, por exemplo, quais os campos serão mostrados na consulta sql, bem como quais serão os critérios 
de filtro de registros na tabela. Veja o exemplo a seguir: 
 
 
 
Figura 41 
 
No exemplo acima, indicamos na coluna “COLUMN”, quais os dados deveriam ser mostrados de cada 
professor gravado, no caso: codigoprofessor e nomeprofessor. Isto pode ser feito clicando na caixa localizada 
ao lado do nome do campo, na tabela exibida ( ). 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 29 
 Você deve ter reparado também, que após indicar cada campo na coluna “Column”, uma instrução 
“Select” ia sendo criada automaticamente pelo SGBD. 
 
 Para executarmos o comando “SELECT codigoprofessor, nomeprofessor FROM dbo.professores”, 
basta clicar no botão . Desta forma, foram mostrados todos os códigos e nomes de professores gravados 
na tabela professores. O resultado pode ser visualizado numa tabela, disposta após a linha de código gerada 
pelo assistente de “visão”. 
 
 
11 – CRIANDO E EXECUTANDO QUERY COM O BOTÃO “New Query” 
 
 Podemos criar banco de dados, tabelas e manusear registros utilizando linhas de comandos da 
linguagem Transact-SQL. Tudo que foi mostrado até este ponto, nesta apostila, podemos fazer por meio de 
comandos. 
 
 Vale dizer que no SQL-SERVER, assim como a maioria dos SGBD’s existentes, a linguagem usada 
para criar banco de dados e tabelas, bem como manusear registros nessas estruturas é a SQL (Structured 
Query Language). 
 
 Os comandos da SQL são divididos em cinco grupos, a saber: 
 
1º) DML - Linguagem de Manipulação de Dados 
Primeiro há os elementos da DML (Data Manipulation Language - Linguagem de Manipulação 
de Dados). A DML é um subconjunto da linguagem usada para inserir, atualizar e apagar dados. 
• INSERT é usada para inserir um registro (formalmente uma tupla) a uma tabela 
existente. 
• UPDATE para mudar os valores de dados em uma ou mais linhas da tabela 
existente. 
• DELETE permite remover linhas existentes de uma tabela. 
 
2º) DDL - Linguagem de Definição de Dados 
O segundo grupo é a DDL (Data Definition Language - Linguagem de Definição de Dados). 
Uma DDL permite ao utilizador definir tabelas novas e elementos associados. A maioria dos bancos de 
dados de SQL comerciais tem extensões proprietárias no DDL. 
 
Os comandos básicos da DDL são poucos 
• CREATE cria um objeto (uma Tabela, por exemplo) dentro da base de dados. 
• DROP apaga um objeto do banco de dados. 
 
Alguns sistemas de banco de dados usam o comando ALTER, que permite ao usuário alterar 
um objeto, por exemplo, adicionando uma coluna a uma tabela existente. 
 
Outros comandos DDL: 
• ALTER TABLE 
• CREATE INDEX 
• ALTER INDEX 
• DROP INDEX 
• CREATE VIEW 
• DROP VIEW 
 
3º) DCL - Linguagem de Controle de Dados 
O terceiro grupo é o DCL (Data Control Language - Linguagem de Controle de Dados). DCL 
controla os aspectos de autorização de dados e licenças de usuários para controlar quem tem acesso 
para ver ou manipular dados dentro do banco de dados. 
 
Duas palavras-chaves da DCL: 
• GRANT - autoriza ao usuário executar ou setar operações. 
• REVOKE - remove ou restringe a capacidade de um usuário de executar 
operações. 
 
 
Banco de DadosUNIVAP - CTI 
Professor: Alberson Wander Página: 30 
Outros comandos DCL: 
• ALTER PASSWORD 
• CREATE SYNONYM 
 
4º) DTL - Linguagem de Transação de Dados 
• BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) pode ser usado 
para marcar o começo de uma transação de banco de dados que pode ser completada ou 
não. 
• COMMIT envia todos os dados das mudanças permanentemente. 
• ROLLBACK faz com que as mudanças nos dados existentes desde que o último COMMIT 
ou ROLLBACK sejam descartadas. 
 
COMMIT e ROLLBACK interagem com áreas de controle como transação e locação. Ambos 
terminam qualquer transação aberta e liberam qualquer cadeado ligado a dados. Na ausência de um 
BEGIN WORK ou uma declaração semelhante, a semântica de SQL é dependente da implementação. 
 
5º) DQL - Linguagem de Consulta de Dados 
Embora tenha apenas um comando, a DQL é a parte da SQL mais utilizada. O comando 
SELECT permite ao usuário especificar uma consulta ("query") como uma descrição do resultado 
desejado. Esse comando é composto de várias cláusulas e opções, possibilitando elaborar consultas 
das mais simples às mais elaboradas. 
 
Antes de abordar comandos da linguagem TRANSACT-SQL, vamos conhecer o ambiente do SQL 
Server que será utilizado para digitar os comandos da DDL e da DML. Para isso, basta clicar no botão “New 
Query” disposto na barra de ferramentas, mostrado abaixo: 
 
 
 
Figura 42 
 
Repare que ao clicar no botão “New Query”, foi aberta uma janela, mostrada acima pela seta em 
vermelho. 
 
Novos botões foram criados na barra de ferramentas, a fim de possibilitar a criação/uso de instruções 
da Transact-SQL: 
 
 - Botão “Parse”: Usado para analisar a falta ou não de parâmetros de um comando SQL digitado; 
 
 - Botão “Execute” – Usado para executar as instruções SQL digitadas ou selecionadas; 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 33 
 
 
Figura 45 
 
Quando a sintaxe digitada estiver correta e o botão “Execute” for pressionado, a mensagem 
“Command(s) completed successfully” aparecerá no painel de resultados, conforme visto na figura acima. 
 
 Podemos alterar ou excluir uma visão criada, para isso devemos usar os comandos Alter View ou Drop 
View, respectivamente. 
 
 No comando Alter View, deveremos digitar novamente todos os comandos que irão compor a “Visão”. 
Para isto usaremos a seguinte sintaxe: 
 
Alter View <nome_da_visão_criada> 
As 
 <NOVO Comando SELECT> 
 
Baseado no exemplo da última figura se desejasse alterar a visão criada, por exemplo, para 
selecionarmos todos os dados de professores que tivessem idade INFERIOR a 30 anos, escreveríamos o 
seguinte comando: 
 
Alter view mostratodos 
As 
 Select * from professores 
 Where idadeprofessor < 30 
 
Após pressionar o botão , você verá novamente a mensagem “Command(s) completed 
successfully”, que indicará que a sua “View” foi alterada corretamente. 
 
Para excluir uma visão por meio de comando, basta usar a seguinte sintaxe: 
 
 Drop View <nome_da_visão_criada> 
 
Se desejarmos apagar, por exemplo, a “View” criada nos exemplos anteriores, basta digitarmos: 
 
Drop view mostratodos 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 34 
Em seguida, pressione o botão . Se não ocorrer algo errado, novamente a mensagem 
“Command(s) completed successfully” aparecerá no painel de resultados. 
 
 Para visualizarmos os registros filtrados por uma visão anteriormente criada, basta seguir os passos 
ilustrados na figura a seguir: 
 
 
 
Figura 46 
 
 Serão mostrados os registros filtrados pela instrução SELECT criada dentro da View, conforme mostra 
a seta na figura acima. 
 
O resultado exibido na figura anterior pode ser gravado da mesma forma que um resultado de 
instruções digitadas na área de edição de comandos. Para isso, siga os passos descritos no item 11.1 desta 
apostila. 
 
 Podemos usar os assistentes para criar, alterar e excluir “Visões”, como vimos anteriormente. 
 
 
12 – TRANSACT SQL (DDL) 
 
 No SQL-SERVER é possível criar banco de dados, tabelas, relacionamentos entre as mesmas, gravar 
registros, excluí-los, alterá-los e consultá-los, tudo através de instruções a linguagem SQL ((Structured Query 
Language), conhecida como TRANSACT SQL. 
 
Como citado anteriormente, os comandos da Transact SQL são divididos em grupos, conhecidos como 
DDL (DATA DEFINITION LANGUAGE) e DML (DATA MANIPULATION LANGUAGE). 
 
 Vamos conhecer os principais comandos da DDL e da DML. 
 
 
12.1 – CRIANDO BANCO DE DADOS (DDL) 
 
 Para criarmos um banco de dados no SQL, usamos a seguinte sintaxe: 
 
CREATE DATABASE <nome_do_banco_dados> 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 35 
 Exemplo: 
 Create database LOJA 
 
 Quando for executado o comando acima, serão criados fisicamente os arquivos .MDF e .LOG, 
referentes ao banco de dados LOJA. Os arquivos serão criados automaticamente, pelo SQL SERVER, na 
pasta do servidor. Após a execução do comando acima será exibida a seguinte mensagem: 
 
 
Command(s) completed successfully. 
 
 
12.2 – EXCLUINDO BANCO DE DADOS (DDL) 
 
 Quando necessário, podemos utilizar o comando DROP DATABASE, para excluir fisicamente um 
banco de dados existente. 
 
 Sintaxe: 
 
DROP DATABASE <nome_do_banco_dados> 
 
 Exemplo: 
 Drop database loja 
 
 È importante salientar que ao excluir um banco de dados, todo seu conteúdo também será excluído, ou 
seja, tabelas, registros, visões, stored procedures, triggers e etc, serão perdidos com a exclusão. 
 
 
12.3 – CRIAÇÃO DE TABELAS NUM BANCO DE DADOS (DDL) 
 
 Para criação de tabela em um banco de dados usamos o comando Create Table. 
 
 Sintaxe: 
 
CREATE TABLE <nome_da_tabela) 
( 
 <campo1> <tipo_campo> [primary key] [ not null ] , 
 ...... 
 <campon> <tipo_campo> [not null] 
) 
 
 Exemplo 1: 
 Create table cliente 
 ( 
 Codcli int primary key not null, 
 Nomecli char(30) not null, 
 Endcli varchar(40), 
 Telcli varchar(25) 
 ) 
 
 No exemplo acima está sendo criada a tabela cliente. Os campos desta tabela serão: Codcli do tipo 
inteiro, será chave primária e exigirá dados no momento do cadastro de um registro; Nomecli do tipo caracter, 
armazenará 40 dígitos, também exigirá dados no momento da gravação do registro; endcli do tipo varchar, 
capaz de armazenar no máximo 40 dígitos no momento da gravação de um registro, porém, não é um campo 
de preenchimento obrigatório; telcli do tipo varchar, capaz de armazenar no máximo 25 caracteres no momento 
da gravação de um registro, porém, não é um campo de preenchimento obrigatório. 
 
 IMPORTANTE: no exemplo acima somente o campo codcli é chave primária da tabela cliente. 
 
 
 
 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 36 
 Exemplo 2: 
 Create table depentedentecliente 
 ( 
 Codcli int not null, 
 Coddependente int not null, 
 Nomedep char(40), 
 Idadedep int, 
 Primary key (codcli, coddependente)) 
 
 IMPORTANTE: no exemplo acima, repare que os campos codcli E coddependente compõem a chave 
primária desta tabela. As demais definições são as mesmas do exemplo 1. Portanto, sempre que uma tabela 
possuir mais de um campo compondo a chave primária, a definição deve ser feita como no exemplo acima. 
 
 
12.4 –ALTERAÇÃO DE ESTRUTURA DE TABELA DE UM BANCO DE DADOS (DDL) 
 
 Para alterarmos a estrutura de uma tabela criada usaremos o comando ALTER TABLE. 
 
 Sintaxe: 
 Para excluir um campo de uma tabela: 
 ALTER TABLE <nome_da_tabela_existente> 
 DROP COLUMN <nome_campo> 
 
OU 
 Sintaxe: 
 Para adicionar um campo na tabela: 
ALTER TABLE <nome_da_tabela_existente> 
 ADD <nome_campo> <tipo_dado> 
 
OU 
 Sintaxe: 
 Para alterar o TIPO DE DADO de um campo da tabela 
 ALTER TABLE <nome_da_tabela_existente> 
 ALTER COLUMN <nome_campo> <tipo_dado> 
 
OU 
 Sintaxe: 
 Para renomear um campo da tabela usa-se o MÉTODO SP_RENAME: 
 SP_RENAME ‘<nome_tabela>.<nome_antigo_campo>’ , <novo_nome_campo> 
 
OU 
 Sintaxe: 
 Para inserir uma chave primária numa tabela criada anteriormente: 
 ALTER TABLE <nome_da_tabela_existente> 
ADD CONSTRAINT <nome_chave> PRIMARY KEY (<nome_campo>) 
 
OU 
 Sintaxe: 
 Para excluir uma chave primária numa tabela criada anteriormente: 
 ALTER TABLE <nome_da_tabela_existente> 
DROP CONSTRAINT <nome_chave> 
 
OU 
 Sintaxe: 
 Para inserir uma chave estrangeira numa tabela criada anteriormente: 
 ALTER TABLE <nome_da_tabela_filho_jacriada > 
ADD FOREIGN KEY (<nome_campo_chaveestrangeira>) 
REFERENCES <nome_tabela_pai> ( <chave_primaria_tabela_pai> ) 
ON DELETE CASCADE 
ON UPDATE CASCADE 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 37 
 Exemplo 1: 
 Alter table cliente 
 drop column telcli 
 
 Neste exemplo está sendo excluído o campo telcli da tabela cliente 
 
 Exemplo 2: 
 Alter table cliente 
 add telefonedocli varchar(25) 
 
 Neste exemplo está sendo adicionado na tabela cliente o campo chamado telefonedocli, tipo varchar 
de 25, 
 
 Exemplo 3: 
 alter table cliente 
 alter column telcli varchar(20) 
 
 Neste exemplo está sendo alterado o tipo de dado do campo telcli para varchar(20) 
 
 Exemplo 4: 
 SP_RENAME 'CLIENTE.telcli' , telefonecli 
 
 Neste exemplo está sendo renomeado o campo telcli, da tabela cliente, para telefonecli. Neste caso 
repare que não foi usada a instrução alter table, mas sim o MÉTODO SP_RENAME. 
 
 Exemplo 5: 
 alter table Vendas 
add constraint chave PRIMARY KEY (nvenda, codcli) 
 
 Neste exemplo está sendo criado na tabela copiavendas a chave primaria composta chamada “chave”, 
pois os campos nvenda e codcli compõem a chave primária. OBS: PARA O COMANDO ACIMA FUNCIONAR, 
OS CAMPOS NVENDA e CODCLI DEVEM TER SIDO CRIADO ANTERIORMENTE COM A PROPRIEDADE 
NOT NULL. 
 
 Exemplo 6: 
 alter table Vendas 
drop constraint chave 
 
 Neste exemplo está sendo excluída a chave primária que foi criada no exemplo anterior. A chave 
primária possui o nome “chave”. 
 
 Exemplo 7: 
alter table vendas 
add foreign key (codcli) references cliente(codcli) 
 on delete cascade on update cascade 
 Neste exemplo está sendo criada uma chave estrangeira para a tabela vendas e relacionando-a com a 
tabela cliente. As cláusulas “on delete cascade” e “on update cascade” são opcionais. 
 
 
12.5 – EXCLUSÃO DE TABELA DE UM BANCO DE DADOS (DDL) 
 
 Para exclusão de uma tabela de um banco de dados usamos o comando Drop table. 
 
 Sintaxe: 
 
DROP TABLE <nome_tabela> 
 
 Exemplo: 
 Drop table cliente 
 
 No exemplo acima a tabela cliente está sendo excluída de um banco de dados em uso. 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 38 
12.6 – RELACIONANDO TABELAS DO BANCO DE DADOS (DDL) 
 
 No momento da criação de uma tabela FILHO, em uma relação, poderemos definir o relacionamento 
dessa com a tabela pai. Para isso usamos a seguinte cláusula no comando create table: 
 
 Sintaxe: 
 
CREATE TABLE <nome_da_tabela) 
( 
 <campo1> <tipo_campo> [primary key] [ not null ] , 
 ...... 
 <campon> <tipo_campo> [not null] , 
 
 FOREIGN KEY <campo_chave_estrangeira_desta_tabela) 
REFERENCES <nome_tabela_pai> ( <campo_chaveprimaria_tabela_pai> 
ON DELETE CASCADE 
ON UPDATE CASCADE 
) 
 
 Para criar uma tabela FILHO numa relação, É NECESSÁRIO CRIAR ANTES A TABELA PAI, pois, 
como é percebido na sintaxe, será necessário referenciar a tabela pai criada anteriormente. 
 
 Exemplo 1: 
Create table cliente 
( 
 Codcli int primary key not null, 
 Nomecli char(30) not null, 
 Endcli varchar(40), 
 Telcli varchar(25) 
) 
 
create table produtos 
( 
 codproduto int primary key, 
 nomeproduto char(30) 
) 
 
create table produtoscliente 
( 
 codcliente int, 
 codproduto int, 
 primary key (codcliente, codproduto), 
 foreign key (codcliente) references cliente(codcli) 
 on delete cascade 
 on update cascade, 
 foreign key (codproduto) references produtos(codproduto) 
 on delete cascade 
 on update cascade 
) 
 
 NO EXEMPLO ACIMA, PERCEBA QUE: 
1) AS TABELAS cliente E produtos FORAM CRIADAS ANTES DA TABELA produtoscliente. 
2) Após a indicação da primeira chave estrangeira da tabela produtoscliente (codcliente), indicou-se 
que exclusões e atualizações de registros na tabelas pai (cliente) reproduzirão o efeito cascata na 
tabela produtoscliente. Em seguida, DEVE SER COLOCADA UMA VÍRGULA (,) para indicarmos a 
segunda chave estrangeira (codproduto) 
 
Para visualizarmos o relacionamento criado entre as tabelas criadas acima, deveremos abrir o banco 
de dados e o diagrama. Você irá perceber que ao abrir o objeto “diagrams” no banco de dados, não existirá 
nenhum diagrama de relacionamento disponível. PORÉM, faça uso dos passos indicados no item 7.5.4 desta 
apostila, para visualizar as tabelas já relacionadas. Após adicionar as tabelas na área de relacionamento você 
irá visualizar o relacionamento. Em seguida, basta gravá-lo fisicamente. Se tudo der certo você verá o seguinte 
resultado: 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 39 
 
 
 
Figura 47 
 
 
Exemplo 2: Neste exemplo, vamos incluir uma nova tabela no relacionamento feito no exemplo 1. A 
tabela abaixo irá receber dados da tabela produtoscliente. Pelo fato da tabela produtoscliente possuir uma 
chave primária COMPOSTA, a tabela filho, que será criada com o comando mostrado abaixo, deve referenciar 
a chave composta da tabela pai. Vejamos: 
 
create table datacomprasprodutos 
( 
 datacompra datetime not null, 
 codclien int not null, 
 codprod int not null, 
 primary key (datacompra, codclien, codprod), 
 foreign key(codclien, codprod) references produtoscliente(codcliente, codproduto) 
 on delete cascade 
 on update cascade 
) 
 
 
OBSERVAÇÃO: LEMBRE-SE QUE VOCÊ DEVERÁ ADICIONAR ESTA ÚLTIMA TABELA NO DIAGRAMA JÁ 
CRIADO. Para isso, primeiramente abra novamente a área “Database Diagrams” do banco de dados. Em 
seguida, pressione o BOTÃO DIREITO DO MOUSE sobre qualquer local da área que exibe as tabelas já 
relacionadas. No submenu que irá surgir, selecione a opção “Add Table...”, conforme figura a seguir: 
 
 
Banco de DadosUNIVAP - CTI 
Professor: Alberson Wander Página: 40 
 
 
Figura 48 
 
Surgirá a janela “Add Table”. Se a janela não exibir o nome da última tabela criada, pressione o botão 
“Refresh”. A janela deverá ter a seguinte aparência: 
 
 
 
Figura 49 
 
Após clicar no botão “Add” o diagrama de relacionamento deverá ser atualizado, conforme a figura a 
sseguir: 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 41 
 
Figura 50 
 
 
12.7 – CRIAÇÃO DE CAMPO AUTONUMERAÇÃO (INCREMENTO AUTOMÁTICO) (DDL) 
 
Para criação de um campo de incremento automático em uma tabela, usaremos a PROPRIEDADE 
IDENTITY vinculado ao mesmo, no momento da criação da tabela. 
 
Quando a PROPRIEDADE IDENTITY for utilizada em uma tabela, saiba que: 
• Os registros para o campo definido com IDENTITY são gerados pelo sistema de forma seqüencial; 
• É permitido somente um único campo IDENTITY por tabela; 
• O campo não pode ser alterado por um comando UPDATE; 
• Deve ser usado somente para campos do tipo: tinyint, smallint, int, numeric, decimal 
 
Sintaxe: 
 
IDENTITY [(valor_inicial, incremento)] 
 
Onde: 
 Valor_inicial: indica o valor para o primeiro registro gravado; 
 Incremento: indica qual o valor será acrescido para cada registro gravado 
 
Exemplo: No exemplo abaixo indicamos que no campo aluno_id iniciará com 1, quando o primeiro 
registro for gravado. A partir daí, sempre que um novo registro for cadastrado, será somado automaticamente 1 
no campo aluno_id, fazendo com isso, que nunca se repita os números de identificação de alunos na tabela. 
 
CREATE TABLE aluno 
( 
aluno_id INT IDENTITY (1, 1), 
 nome VARCHAR(20) 
) 
 
 O exemplo acima, foi criado o campo aluno_id, na tabela aluno. Quando desejar gravar um registro na 
tabela aluno, NÃO SERÁ NECESSÁRIA a indicação do dado para o campo aluno_id, pois, como descrito 
anteriormente, o próprio sistema irá gerar o número do aluno automaticamente. Veja abaixo o exemplo de 
como os registros devem ser cadastrados na tabela aluno: 
 
INSERT aluno VALUES ('Mirtes') // Será criado com aluno_id = 1 
INSERT aluno VALUES ('Wagner') // Será criado com aluno_id = 2 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 42 
 
13 – TRANSACT SQL (DML) 
 
 Para exemplificar os próximos comandos da Transact-SQL, usaremos as seguintes tabelas mostradas 
no diagrama abaixo: 
 
 
 
Figura 51 
 
 Para os exemplos dos comandos da DML, devemos conhecer os tipos de dados de cada campo. Por 
esse motivo o diagrama de relacionamento das tabelas foram mostradas acima no modo STANDARD. 
 
 
13.1 – COMANDO INSERT (DML) 
 
 O comando Insert é usado para gravar registro numa tabela do banco de dados ativo. 
 
 Sintaxe: 
 
 INSERT INTO <nome_tabela> ( campo1, ..... , campoN) 
 VALUES ( <dado_campo1> , ..... , <dado_campoN>) 
 
 Exemplo 1: 
insert into cliente (codcli, nomecli, endcli, telefonecli) 
values ( 1, 'joão da silva', 'rua JK 127', '(012) 3939-3021' ) 
 
 Neste exemplo estamos cadastrando o cliente com o código 1, nome joão da silva, que reside à rua JK 
127, com o telefone (012) 3939-3021, na tabela cliente. 
 
 OBSERVAÇÃO: A ordem dos dados indicados dentro da cláusula values, deve obedecer à mesma 
ordem dos campos descritos após o nome da tabela. No exemplo acima descrevemos o campo codcli para 
receber o número 1 e assim sucessivamente. 
 
 Exemplo 2: 
insert into cliente values ( 1, 'joão da silva', 'rua JK 127', '(012) 3939-3021' ) 
 
 Neste exemplo, repare que foram omitidos os nomes de campos que receberão os dados descritos na 
cláusula values. Com isso, os dados serão gravados respectivamente obedecendo à ordem de criação dos 
campos na tabela, ou seja, codcli, nomecli, endcli e telefonecli. Para usar esta sintaxe, o usuário deve conhecer 
a ordem dos campos na tabela. 
 
 Exemplo 3: Vamos supor que tenha sido criada a tabela clientetemporario e que esta não tenha sido 
relacionada a nenhuma tabela. Logo em seguida, usando o comando Insert, gravamos 4 registros de clientes. 
Vejamos: 
create table clientetemporario 
( 
 codcliT int primary key, 
 nomecliT char (30) 
) 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 43 
 
 insert into clientetemporario values (2, 'alberson') 
insert into clientetemporario values (3, 'wagner') 
insert into clientetemporario values (4, 'julia') 
insert into clientetemporario values (5, 'maria josé') 
 
 Agora vamos fazer outro teste, cadastrando todos os professores da tabela clientetemporario, na tabela 
cliente. Vale lembrar que os campos das duas tabelas devem possuir tamanhos e tipos IDÊNTICOS. Veja o 
exemplo abaixo: 
 
insert into cliente(codcli, nomecli) select codcliT, NomecliT from clientetemporario 
 
O exemplo acima, seleciona codcliT e NomecliT de todos os registros gravados na tabela 
clientetemporario. Em seguida, os registros filtrados são gravados automaticamente na tabela cliente, nos 
campos codcli e nomecli. Esta sintaxe poderia também ser escrita da seguinte forma: 
 
insert into cliente(codcli, nomecli) select * from clientetemporario 
 
IMPORTANTE: Nos dois últimos exemplos, torna-se necessária a indicação dos nomes de campos que 
RECEBERÃO os registros filtrados da tabela clientetemporario, isto porque as tabelas não possuem a mesma 
quantidade de campos. 
 
Após a execução de um dos dois últimos exemplos, os registros serão gravados da seguinte forma, na 
tabela cliente: 
 
1 joão da silva rua JK 127 (012) 3939-3021 
2 alberson NULL NULL 
3 wagner NULL NULL 
4 julia NULL NULL 
5 maria josé NULL NULL 
 
Repare que os registros de clientes com código maior ou igual a 2, não possuem endereços 
residenciais e telefones, isto porque na tabela clientetemporario estes dados não existem. 
 
Exemplo 4: 
Insert into datacomprasprodutos values (‘12/31/08’, 1, 1020) 
 
Este exemplo grava um produto de um cliente no dia 31/12/2008 na tabela datacomprasprodutos. 
Repare que a data, quando cadastrada, deve ser indicada no formato de padrão AMERICANO. 
 
 
13.2 – OPERADORES RELACIONAIS, OPERADORES LÓGICOS e OPERADORES ARITIMÉTICOS DO 
SQL SERVER 
 
 A seguir estão dispostos a relação dos operadores ARITIMÉTICOS, LÓGICOS E RELACIONAIS, mais 
utilizados na linguagem Transact-SQL. 
 
 
 
 
OPERADOR 
ARITMÉTICO 
UTILIDADE 
* Multiplicação 
+ Soma 
/ Divisão 
- Subtração 
% Módulo 
|| Concatenação 
 
 
OPERADOR 
RELACIONAL 
UTILIDADE 
= Igual 
<> Diferente 
> Maior que 
< Menor que 
>= Maior ou igual 
<= Menor ou igual 
!< Não menor que 
!> Não maior que 
!= Não igual 
 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 43 
OPERADOR 
LÓGICO 
UTILIDADE 
Not Inverte o valor booleano 
And E 
Or Ou 
Between Entre 
Like Usado para encontrar padrões de strings 
IN Usado para verificar se conteúdodo campo possui algum valor estipulado 
 
 
13.3 – COMANDO UPDATE (DML) 
 
 Este comando é usado para alterar registros gravados numa tabela. 
 Sintaxe: 
 
UPTADE <nome_tabela> 
SET <nome_campo> = <novo_valo> 
WHERE <critérios_para_alteração> 
 
 Exemplo 1: 
 Update cliente 
 Set endcli = ‘nenhum’ 
 
 O exemplo acima irá alterar os endereços de TODOS os clientes para ‘nenhum’, isto porque não foram 
definidos critérios (CONDIÇÕES) para indicar quais os registros seriam alterados. 
 
 Exemplo 2: 
 Update cliente 
 Set endcli = ‘Rua da morte’ 
 Where codcli = 1 
 
 O exemplo acima irá alterar somente o endereço do cliente que possui o código igual a 1, para ‘Rua da 
morte’. 
 
 Exemplo 3: 
 Update cliente 
 Set endcli = ‘Rua JK’ , telefonecli = ‘(012) – ‘ 
 Where codcli = 1 
 
 O exemplo acima altera o endereço do cliente para ‘Rua JK’ e o telefone do cliente para ‘(012) – ‘, do 
cliente cujo código é 1. 
 
 Os operadores Relacionais, Lógicos e Aritméticos que podem ser utilizados em instruções Transact- 
SQL estão relacionados no item 13.2 desta apostila. 
 
 
13.3 – COMANDO DELETE (DML) 
 
 Este comando é usado para excluir REGISTROS de uma tabela. 
 
 Sintaxe: 
 
Delete from <nome_tabela> 
Where <condição_critérios_exclusão> 
 
 Exemplo 1: 
 Delete from produtos 
 Where nomeproduto like ‘a%’ 
 
 No exemplo acima serão excluídos da tabela produtos, todos os produtos cujo nome inicie com a letra 
“a”. 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 44 
 Perceba que não foi informado nenhum nome de campo após o comando delete, antes da cláusula 
“from”, pois, o comando delete exclui o registro TODO e não somente o conteúdo de um campo da tabela. 
 
 Poderemos usar outros CURINGAS juntamente com o operador LIKE, vejam alguns exemplos: 
 
Nomecli Like ‘a[ul]ber[sc]on%’ Filtra registros que nomecli inciem com a letra “a”; o 
segundo dígito seja “u” OU “l”; a partir do 3º dígito 
contenha a seqüência “ber”; 6º dígito seja “s” OU “c”; 
7º e o 8º dígito sejam “on” e que terminem com 
quaisquer outros caracteres. 
Nomecli like ‘%e%’ Filtra registros que nomecli contenha a letra “e” 
disposta em qualquer local da string gravada 
Nomecli like ‘%e’ Filtra registros que nomecli termine com a letra “e” 
Nomecli like ‘e%’ Filtra registros que nomecli inicie com a letra “e” 
Nomecli like ‘[a – c]%’ Filtra registros que nomecli inicie com qualquer 
caractere entre as letras “a” e “c” 
Nomecli like ’joão’ Filtra registros que nomecli seja EXATAMENTE igual 
a “joão”, pois o curinga % não foi utilizado na sintaxe. 
 
 É bom dizer que o operador like pode ser usado em qualquer instrução SQL QUE POSSUA A 
CLÁUSULA WHERE e que o campo usado para filtro SEJA DO TIPO CHAR ou VARCHAR. 
 
 
13.5 – COMANDO SELECT (DQL) 
 
 Este comando é um dos comandos mais utilizados no SQL, pois é usado para filtrar registros de uma 
ou várias tabelas provendo com isso a criação de uma nova tabela temporária na memória do computador. 
 
 Sintaxe 1 : 
 
Select <campo1> , .... , <campoN> 
 From <nome_tabela1> , .... , <nome_tabelaN> 
 Where <critérios_filtros_registros> 
 
 Exemplo 1: 
 Select * from cliente 
 
 Mostrará codigo, nome, endereço e telefone de todos os clientes cadastrados. O “*”substitui o nome de 
todos os campos no exemplo acima. Pelo fato do exemplo não conter cláusula WHERE, todos os registros 
serão mostrados para o usuário. 
 
 Exemplo 2: 
 Select nomecli, codcli from cliente where endcli = ‘Rua JK’ and telefonecli like ‘012%’ 
 
 O exemplo acima exibirá nome(s) e código(s) do(s) cliente(s) que resida(am) na ‘Rua JK’ E QUE O 
telefone inicie com ‘012’. A ordem de exibição dos campos será nome do cliente e código do cliente. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 45 
14 – EXEMPLOS GERAIS DE INSTRUÇÕES TRANSACT-SQL 
 
 Para os novos exemplos de instruções SQL, iremos usar as seguintes tabelas relacionadas: 
 
 
 
Figura 52 
 
 
14.1 –PARÂMETRO DISTINCT 
 
 Este parâmetro é usado com o comando SELECT. O distinct retorna somente registros diferentes de 
uma coluna da tabela. 
 
 Exemplo: 
 Select distinct datavenda from vendas 
 
 O exemplo acima mostrará somente data de vendas DIFERENTES, gravadas na tabela vendas. 
Lembre-se que várias vendas são realizadas numa data. Se o distinct não fosse usado, as datas de vendas 
apareceriam várias vezes, pois corresponderiam as vendas efetuadas para cada dia. 
 
 
14.2 – PARÂMETRO ORDER BY 
 
 Este parâmetro é usado com o comando SELECT para ordenar os registros filtrados. Podemos ordenar 
os registros por vários campos filtrados de maneira ascendente (crescente) ou descendente (decrescente). 
 
 Exemplo: 
 Select * from cliente where idadecli between 15 and 21 order by idadecli asc, nomecli desc 
 
 O exemplo acima irá mostrar todos os dados do cliente que possui idade entre 15 e 21 anos 
(BETWEEN). Neste caso, os registros filtrados serão ordenados primeiramente pela idade, de forma crescente. 
Caso existam clientes com a mesma idade, os registros serão ordenados pelo nome do cliente, de forma 
decrescente. 
 
 
14.3 – UNION (UNINDO CAMPOS DE VÁRIAS TABELAS NUMA CONSULTA – ASSOCIAÇÃO INTERNA) 
 
 Usando o comando SELECT podemos filtrar vários dados de diversas tabelas, usando somente uma 
instrução SELECT para filtrar registros. 
 
 
 
Banco de Dados UNIVAP - CTI 
Professor: Alberson Wander Página: 46 
 Exemplo 1: 
 Select CLIENTE.nomecli, PRODUTOSVENDIDOS.*, VENDAS.*, PRODUTOS.nomeproduto 
 From cliente, produtosvendidos, vendas, produtos 
Where VENDAS.nvenda = 1 AND VENDAS.codcliente = CLIENTE.codcli AND 
PRODUTOSVENDIDOS.nvenda = VENDAS.nvenda AND 
PRODUTOSVENDIDOS.codproduto = PRODUTOS.codproduto 
 
 Observe o exemplo acima: 
1) Os campos exibidos serão: Nome do cliente, gravado na tabela cliente; Todos os campos da tabela 
produtos vendidos; Todos os campos da tabela vendas; Nome do produto gravado na tabela 
produtos; 
2) Na cláusula FROM, perceba que os registros serão filtrados das tabelas cliente, produtosvendidos, 
vendas e produtos; 
3) O primeiro critério de filtro é que o número da venda seja 1. 
4) Os trechos da sintaxe exposta em VERMELHO indicam os relacionamentos entre as tabelas. Isto 
deve ser feito para que sejam filtrados os registros EQUIVALENTES nas tabelas relacionadas. Só 
serão filtrados registros se, E SOMENTE SE: 
a. existir a venda número 1 cadastrada; 
b. existir o registro do cliente que comprou na venda 1; 
c. existir pelo menos UM produto vendido (produtosvendidos) na venda 1; 
d. existirem na tabela produtos, os mesmos código de produtos cadastrados em 
produtosvendidos referente à venda 1. 
 
Exemplo 2: 
Select CLIENTE.nomecli, VENDAS.codcliente, VENDAS.nvenda 
From cliente, vendas 
Where VENDAS.nvenda = 1 AND VENDAS.codcliente = CLIENTE.codcli 
 
 Observe no exemplo acima: 
1) Os campos exibidos serão: o nome do cliente, gravado na tabela CLIENTE; o código do cliente e o 
número da venda, gravados na tabela VENDAS; 
2) Na cláusula FROM são indicados os nomes das tabelas de onde os registros serão filtrados; 
3) O trecho da sintaxe exposta em VERMELHO indica o relacionamento

Continue navegando