SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é...
Transcript of SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é...
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Nome ______________________________________________ Número:_________ Série___________
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
1
SQL Server 2005 – Transact SQL – DDL Competências: Compreender a orientação a objetos e arquitetura cliente-
servidor, aplicando-as em bancos de dados; Habilidades: Implementar as estruturas modeladas usando banco de dados; Bases Tecnológicas: Ambientes/ferramentas de gerenciamento de bancos de dados (Linguagem de apoio: SQL Server).
Criando um banco de dados SQL Server 2005
Projeto de banco de dados
Assim como a construção de um carro, uma casa, um produto ou serviço
novo, etc, é preciso que o banco de dados tenha o seu próprio projeto dentro do
sistema de informação. O projeto permitirá aos administradores do sistema de
informação e gestores do projeto conhecer os limites e a abrangencia do sistema
(escopo) e, a partir do escopo, definir a quantidade de recursos aplicados a ele,
assim como o volume e a complexidade de processos usados na sua construção e
as atividades que o sistema executará depois de pronto.
O projeto de banco de dados, atualmente, é feito com ferramentas CASE
que permitem modelar o banco de dados de maneira lógica e gerar um script que
pode ser executado em vários bancos de dados. Algumas ferramentas conhecidas
são o MS Visio da Microsoft, o DBDesigner da FabForce e o ERWin da CA
computer.
Neste exemplo vamos usar um modelo criado de maneira muito rudimentar,
apenas com os conceitos de banco de dados relacional, nosso modelo é composto
por um Modelo Entidade-Relacionamento e um Modelo Lógico-Relacional
criados a partir de um modelo de negócio.
Modelo de Negócio: Clínica Médica O médico que atende na cínica é previamente cadastrado pelo número do CRM,
(composto por 5 dígitos numéricos obrigatórios, deve ser um dado único e obrigatório para
cada registro de médico na clínica), pelo nome (campo indexado obrigatório para todos os
registros), pelo endereço (completo), por um número de celular (sem DDD) e pelo CPF (campo
obrigatório e não repetido composto por 11 dígitos numéricos obrigatórios). Cada médico
“pode” consultar um ou mais pacientes.
Cada consulta registrará a data (10/01/08), a hora (08:00), o valor da consulta, o
diagnóstico completo e se foi pedido exame ou não.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
2
Os pacientes consultados na clinica são identificados pelo nome (campo “índice”
obrigatório para todos os registros), endereço, telefone (com DDD) e CPF, (campo índice não
repetido composto por 11 dígitos numéricos obrigatórios – ATENÇÃO pode existir pacientes
sem CPF). Um paciente “deve” ser consultado por um ou mais médicos.
As especialidades registram apenas a especialidade(Clinica Geral, Pediatria,
Ortopedia, etc. Dado obrigatório para cada registro de especialidade e que não pode ser
repetido), atendida na clinica. Um médico “deve” ter uma e somente uma especialidade.
Enquanto uma especialidade “pode” ser relacionada a um ou mais médicos.
Um paciente “pode” ser um e somente um paciente privado, isto é, possui convênio
médico com algum plano de saúde. Os pacientes privados são registrados pelo nome do
plano (Golden Cross, Unimed, etc. campo indexado e que permite repetição), pelo Número
do Contrato(dado indexado alfanumérico obrigatório que pode ser repetido, de 8 dígitos
obrigatórios), e se o paciente é Titular do plano de saúde (sim ou não). Um paciente privado
“deve” ser um e somente um paciente na clínica.
OBS: Campos com mais de sete caracteres não serão usados como chave
primária. Campos “criados” como identificadores únicos (chave primária) serão do tipo
numeração automática, campos nativos NÃO serão preenchidos automáticamente.
Modelo Entidade-Relacionamento
Figura 1 - MER Clínica Médica
Modelo Lógico-Relacional ENTIDADE ATRIBUTOS RELACIONAMENTO
MEDICO
*#CRM CodEspecialidade Nome Endereco Celular #CPF
com Paciente 1:N Parcial com Especialidade 1:1 Total
ESPECIALIDADE *CodEspecialidade #Especialidade
com Medico 1:N Parcial
PACIENTE *CodPaciente Nome Endereco
com Medico 1:N Total com Paciente Publico 1:1
PACIENTE_PRIVADO
e
1
1
ESPECIALIDADE tem N 1 N N
PACIENTE MEDICO Consulta
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
3
Telefone #CPF
Parcial com Paciente Privado 1:1 Parcial
PACIENTE PRIVADO
*CodPaciente #Plano NumeroContrato Titular
com Paciente 1:1 Total
RELACIONAMENTO ATRIBUTOS
CONSULTA
*CodConsulta CRM CodPaciente Data Hora Valor Diagnostico Exame
Tabela 1 - Modelagem Lógica - Clínica Médica
Iniciando o SQL Server 2005 1. Menu iniciar, aponte para Todos os Programas, Microsoft SQL Server
2005 e clique em SQL Server Management Studio. A caixa de diálogo Connect to Server irá surgir.
Figura 2 - Caminho para o SQL Server Management Studio
2. Faça o login no Database Engine que é o servidor central para a gestão dos Bancos de Dados SQL Server 2005, mantenha o nome do servidor a ser usado e a opção Windows Authentication que são valores padrão para efetuar o login em ambiente de teste. O nome do servidor eventualmente pode ser alterado.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
4
Figura 3 - Caixa de diálogo Connect
3. Dentro do SQL Server Management Studio observamos as regiões Object Explorer e Summary. O Object Explorer serve para gerenciar os objetos do SQL Server e compreender a sua hierarquia; O Summary serve para mostrar os detalhes e/ou o conteúdo de cada objeto selecionado no Object Explorer.
Figura 4 - SQL Server Management Studio (Object Explorer e Summary)
Para criar e gerenciar um novo projeto de banco de dados é preciso criá-lo
no SQL Server Solutions.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
5
SQL Server Solutions
O SQL Server Solution é uma coleção de um ou mais projetos que contém
conexões de bancos de dados, scripts T-SQL e outros arquivos que apoiam o
projeto de banco de dados.
Criando um projeto com o SQL Server Solutions 1. No menu File, aponte para New e clique em Project. Uma caixa de diálogo
New Project irá surgir;
Figura 5 - Menu File, New, Project...
2. Na caixa de texto Name, selecione SQL Server Scripts1, escreva o nome do projeto ClinicaMedica e clique em OK.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
6
Figura 6 - Caixa de diálogo New Project
Para criar um SQL Serve Solution, é preciso criar um projeto, especificando
o tipo de projeto conforme Figura 6 anterior através da seleção do tipo do projeto
ente os “templates” do SQL Server. Esses modelos (templates) incluem SQL
Server Script, Analysis Server Script, e SQL Mobile Scripts. Após selecionar o
tipo do projeto, a nova solução é criada e exibida no Solution Explorer.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
7
Figura 7 - SQL Server 2005: Solution Explorer
Funções dos Diretórios SQL Solution Os diretórios do SQL Server Solution: Connection, Queries, e
Miscellaneous, são disponibilizados no Solution Explorer. A seguir estão as
funções dos componente presentes nos diretórios do projeto.
O Diretório Connections define os arquivos que podem ser usados para
informar as credenciais de conexão para a nova solução.
O Diretório Queries define os diferentes tipos de queries criadas para o
projeto especifico. Por exemplo, se o projeto é um SQL Server Script, todos os
scripts SQL são armazenados no diretório Queries. A partir do diretório é possível
adicionar, modificar e deletar esses scripts.
O Diretório Miscellaneous serve para todos os demais arquivos
suportados que são requisitados pela solução.
Uma Solução SQL Server é salva como um arquivo de extensão .ssmssln.
Quando o arquivo .ssmssln é aberto, é possível ver todos os scripts, conexões e
demais arquivos usados no projeto.
Criando um SQL Server Solution
Depois de estabelecer a conexão com o servidor, crie uma query para
suportar o Script SQL de construção, manipulação ou controle do banco de dados.
Clique com o botão direito no diretório Queries, e clique em New Query. Ao
adicionar uma query, a caixa de diálogo Connect to Database Engine surge.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
8
Nessa caixa de diálogo, é preciso especificar as informações para conexão como o
nome do servidor e a autenticação. Clique em Connect para aceitar o padrão.
Agora, renomeie a query para ddlClinicaMedica.sql. O arquivo
ddlClinicaMedica.sql será aberto em uma janela de query na região entral da
tela. Para criar um banco de dados ClinicaMedica, digite o comando SQL a seguir:
CREATE DATABASE ClinicaMedica;, na próxima linha digite GO. Após escrever a
query, salve-a e salve o projeto (use as ferramentas save ou save all conforme
indicado na Figura 26 a seguir).
Além de consultas, pode-se adicionar arquivos mistos como arquivos de
ajuda (Help), documentos do Word e outros formatos de arquivos ao projeto SQL
Server Solution. Por exemplo, para adicionar um Portable Document File (pdf) ao
projeto, clique com o botão direito no arquivo do projeto e selecione a opção Add e
clique em Existing Item..., na caixa de diálogo Add Existing Item, navegue até
o local onde o arquivo está, selecione todos os arquivos desejados, entre eles,
adicione o arquivo do projeto, ClinicaMedica.pdf por exemplo, o arquivo
ClinicaMedica.pdf é adicionado ao diretório Miscellaneous.
Finalmente, salve e feche o projeto o projeto.
Demonstração 1. Na região Solution Explorer clique com o botão direito no diretório
Connections do projeto ClinicaMedica e clique em New Connection. A caixa de diálogo Connect to Server aparecerá.
Figura 8 - Solution Explorer: Connection, New Connection
2. Na caixa de diálogo Connect to Server, clique em OK.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
9
Figura 9 - Caixa de Diálogo Connect to Server
3. Na região Solution Explorer, clique com o botão direito no diretório Queries e clique em New Query. A caixa de diálogo Connect to Database Engine surge.
Figura 10 - Solution Explorer: New Query
4. Na caixa de diálogo Connect to Database Engine clique em Connect
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
10
Figura 11 – Caixa de Diálogo: Connect to Database Engine
5. Na região Solution Explorer, clique com o botão direito no arquivo SQLQuery1.sql, clique em Rename, e escreva ddlClinicaMedica.sql. O arquivo ddlClinicaMedica.sql abre a janela de query (QUERY WINDOW).
Figura 12 - Rename: SQLQuery1
Obs: Atenção para não alterar a extensão do arquivo, caso a extensão não
seja sql ele será instantâneamente removido para o diretório miscellaneous. Caso
isso ocorra é só adicionar a extensão ao nome do arquivo e ele automáticamente
será movido para o diretório Queries do Solution Explorer.
6. No arquivo ddlClinicaMedica.sql, escreva a seguinte declaração SQL: CREATE DATABASE ClinicaMedica;.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
11
Figura 13 - Código SQL em ddlClincaMedica.sql
7. No menu Aquivo clique em Salvar ddlClinicaMedica.sql.
8. (Para executar esta parte é necessário ter um arquivo “ClinicaMedica.pdf” salvo previamente na área de trabalho!) Na região Solution Explorer, clique com o botão direito no projeto ClinicaMedica, aponte para Add e clique em Existing Item. A caixa de diálogo Add Existing Item surge.
Figura 14 - Add Existing Item....
9. Na caixa de listagem Look in, clique em Desktop
10. Na lista Files of Type, clique em All files (*.*)
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
12
Figura 15 - Caixa de diálogo Add Existing Item
11. Na guia Desktop, clique em ClinicaMedica.pdf, clique em Add. O arquivo ClinicaMedica.pdf irá surgir em uma nova janela.
Figura 16 - Arquivo ClinicaMedica.pdf adicionado ao projeto ClinicaMedica
12. Na região Solution Explorer, clique com o botão direito no projeto ClinicaMedica e clique em Save ClinicaMedica.ssmssqlproj
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
13
Figura 17 - Salvando o projeto ClinicaMedica
13. Para fechar o projeto aberto basta clicar no menu File e clicar na opção Close Solution.
Figura 18 - Fechando um projeto (File, Close Solution)
Abrindo um projeto existente 1. Através do menu File, aponte para a opção Open e clique em
Project/Solution.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
14
Figura 19 - Abrindo um projeto de banco de dados (File, Open, Project/Solution...)
2. Surgirá a caixa de diálogo Open Project apontando para o diretório Project contido no diretório SQL Server Management Studio que por sua vez está contido no diretório Meus Documentos.
Figura 20 - Caixa de diálogo Open Project
3. Escolha o diretório ClinicaMedica, dentro dele selecione o arquivo de extensão ClinicaMedica.ssmssln e clique em Open.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
15
Figura 21 - Projeto de Banco de Dados administrado pelo SQL Server Management Studio.
Executando uma Query em SQL Server Management Studio Para abrir uma janela de query no SQL Server Management Studio, dê um
duplo clique na query ddlClinicaMedica.sql que está no projeto, o arquivo de
query será aberto na Query Window. A Query Window é usada para escrever
queries SQL, executar stored procedures, e transactions.
Figura 22 - Criando uma Query em SQL: Ferramentas NewQuery, Execute e Parse
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
16
Para criar um banco de dados novo a partir da query ddlClinicaMedica.sql
escreva a declaração SQL pertinente (ou use o código que já está escrito), clique no
botão Parse (analisar) ou pressione [Ctrl + F5], para analisar a query antes de
executá-la, analisar a query ajuda a identificar erros de sintaxe antes da execução
do script sql, em seguida pode-se executar a query. Para executar a query, clique
no botão Execute (executar) [F5] da barra de ferramentas.
Após executar uma query, será possível observar os resultados na guia
Results ou na guia Messages que está no painel Results.
Através do painel Results pode ser visto o número de registros afetados
pela query, o tempo gasto na execução e se o comando realmente foi executado
com sucesso ou não.
Figura 23 - Código SQL preenchido no arquivo ddlClinicaMedica.sql, testado com a ferramenta
Parse [CTRL + F5] e executado com a ferramenta Execute [F5].
Feche o arquivo ddlClinicaMedica.sql clicando no “xis” que esta no canto
superior direito da janela de consulta (Query Window) ou através do menu File,
opção Close. Uma caixa de diálogo para verificar se você deseja salvar as
alterações será exibida. Na caixa de menssagem, clique em Sim, para salvar as
alterações feitas nos itens exibidos.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
17
Figura 24 - Caixa de diálogo Save changes to the items (Salvar alterações)
Obs: O asterísco colocado na janela de consulta (Query Window) indica que
o arquivo foi alterado e ainda não está salvo, use as ferramentas Save ou Save All
para salvar as alterações feitas antes de fechar os arquivos, conforme Figura 26.
Criando uma nova query Para criar uma nova query clique no menu File, New, Query with Current
Connection... ou [CTRL + N] ou clique diretamente no botão New Query na
barra de ferramentas padrão conforme Figura 26.
Figura 25 - Criando uma nova query apartir da conexão atual.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
18
Obs: Perceba que a query nova não pede conexão com o banco de dados,
pois ela está sob a conexão atual, isto é, o SQL Server Management Studio deduz
que a query vai ser executada a partir da conexão atual.
Vamos criar a tabela Médico no banco de dados clínica médica criado a partir
da query ddlClinicaMedica.sql e executada anteriormente, use o modelo Lógico-
Relacional detalhado na Tabela 1 anteriormente para se orientar.
Figura 26 - Criação de uma query nova, destaque para as ferramentas New Query, Save, Save All e
Avaliable Database.
ATENÇÃO! Observe através da ferramenta banco de dados disponível
(Avaliable Database) que o banco de dados ativo não é o banco de dados que
desejamos usar (é o banco de dados defaul: master), portanto, para criar a tabela
médico no banco de dados que desejamos é preciso selecionar o banco de dados
apartir do comando USE ClinicaMedica; descrito a seguir, antes de escrever o
comando de criação da tabela.
Escreva a seguir o comando de criação da tabela, verifique se existem erros
usando a farramenta de análise [CTRL + F5] ou clicando no botão PARSE da barra
de ferramentas padrão, caso o comando esteja correto clique em EXECUTE ou [F5]
e efetive a criação da tabela.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
19
Figura 27 - Query executada: Resultados exibidos no painel Results, guia Results.
Observando os objetos a partir do Object Explorer
Figura 28 - Object Explorer - Gestão do banco de dados e seus objetos através de interface gráfica.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
20
É possível gerenciar os objetos e suas hierarquias facilmente a partir do
Object Explorer conforme já citado anteriormente. A administração dos objetos de
banco de dados com o Object Explorer é mais fácil, porém, para fins didáticos não
usaremos a ferramenta Object Explorer pois desejamos compreender os conceitos
da linguagem SQL que permite o trabalho com outros bancos de dados. Porém,
para dúvidas relacionadas ao uso da ferramenta (que já é intuitiva) pesquisas nos
manuais do Microsoft SQL Server Management Studio são recomandadas.
Para salvar o script criado clique no botão Save e escolha o local onde se
deseja salvar o script, clique em Desktop e perceba que ele pode ser salvo em
qualquer parte do sistema.
Figura 29 - Caixa de diálogo Save File As
Obs: Veja que a caixa de diálogo Save File As aponta diretamente para o
diretório do projeto ClinicaMedica , porém vamos salvar o arquivo na área de
trabalho para estudar a abertura do arquivo independente do projeto.
Determine o nome do arquivo ddlClinicaMedica2.sql e salve o arquivo.
Obs: Note que o nome do arquivo foi colocado na guia da Query Window.
Feche o arquivo.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
21
Abrindo o arquivo Clique no menu File, Open e escolha a opção File....
Figura 30 - Menu File, Open, File... para abrir um arquivo (.sql).
Escolha o local onde o arquivo está salvo, selecione-o arquivo e clique em
Open.
Figura 31 - Caixa de diálogo Open File, permite encontrar um arquivo a ser aberto.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
22
Veja que a caixa de diálogo Connect será exibida, mantenha o padrão e
clique no botão Connect, o arquivo será aberto na Query Window do SQL Server
Management Studio.
A partir do menu File, Save ddlClinicaMedica.sql As indique o caminho do
projeto.
Observe que o arquivo é salvo ao lado do arquivo ddlClinicaMedica.sql
salvo anteriormente.
Finalmente use a ferramenta Server Solutions para gerenciar o projeto.
Obs: Veja que adicionar o arquivo de extensão .sql ao lado do outro
arquivo, dentro do diretório do projeto, não significa que ele serão incorporado ao
projeto, para incorporar um arquivo ao projeto é necessário adicioná-lo assim
como foi feito com o arquivo de extensão .pdf que contém o projeto Lógico-
Relacional do banco de dados e que foi incorporado anteriormente.
Para criar um arquivo de scripts sql diretamente dentro do projeto clique
com o botão direito dobre o diretório Queries do Solution Explorer e escolha a
opção New Query, a caixa de diálogo Connect será exibida. Clique no botão
Connect, escrever o script desejado e, neste caso, como as alterações foram feitas
no projeto (arquivo ClinicaMedica.ssmssln), ele será salvo ao lado dos demais
scripts mas só aparecerá na janela de projetos do Solution Explorer se o arquivo
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
23
ClinicaMedica.ssmssln, que é o projeto, tiver suas alterações salvas, caso não
queira incluí-lo basta fechá-lo e clicar em não na caixa de diálogo Save Changes,
o script será salvo mas não será exibido ao carregar o projeto.
Figura 32 - Criando uma nova query diretamente no projeto aberto no Solution Explorer.
Criando objetos a partir de código T-SQL DDL O Código SQL, como já sabemos, é dividido em DDL, DML e DCL. O primeiro
serve para criar a estrutura de um banco de dados, tabelas, índices, etc, o segundo
para manipular os dados contidos nas tabelas, adicionar, alterar, excluir e,
principalmente, consultar dados e registros do banco de dados e o terceiro para
determinar o acesso de determinados usuários aos dados e/ou estruturas do banco
de dados gerenciando e controlando as possibilidades que os demais usuários do
banco de dados podem ter.
Neste tópico estudaremos os principais comandos para a criação de bancos
de dados e seus objetos através de comandos sql, criados a partir de ferramentas
Microsoft SQL Server 2005. Antes das sintaxes vamos observar alguns elementos
fundamentais que irão compor os comandos.
Principais elementos de comandos T-SQL DDL:
� Tipos de dados: lista dos principais tipos de dados úteis em SQL Server 2005.
� Restrições: Comandos de controle de dados para restringir os dados a serem inseridos em determinados campos.
� Sintaxes: Escopo para a criação de algum elemento palavras reservadas, obrigatórias e opcionais, nomes, etc.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
24
Tipos de Dados
Inteiro bigint: Número inteiro com valor entre -2^63 (-
9223372036854775808) e 2^63-1
(9223372036854775807).
int: Número inteiro com valores entre -2^31 (-
2.147.483.648) até 2^31 – 1 (2.147.483.647).
smallint: 2^15 (-32.768) até 2^15 – 1 (32.767).
tinyint: Inteiro de 0 a 255.
Bit (True ou False) bit: Inteiro com valor 1 ou 0.
Decimal decimal: Número de precisão fixa de -10^38 +1
até 10^38 –1.
numeric: Funciona igual ao decimal.
Money e smallmoney money: Valores monetários de -2^63 (-
922.337.203.685.477,5808) até 2^63 – 1
(+922.337.203.685.477,5807), com precisão de
dez milésimos de unidade monetária.
smallmoney: Valores monetários de -
214.748,3648 até +214.748,3647, com
precisão de dez milésimos de unidade
monetária.
Números Flutuantes float: Numero de precisão flutuante de -
1,79E + 308 até 1,79E + 308.
real: Número de precisão flutuante de -
3.40E + 38 até 3.40E + 38.
Data e Hora datetime: Data e hora de January 1, 1753,
até December 31, 9999, com a precisão de
três milésimos de segundo, ou 3.33
milisegundos.
smalldatetime: Tipo data e hora de January
1, 1900, até June 6, 2079, com precisão de
um minuto.
Strings char: Dado do tipo caractere com o
tamanho fixo máximo de 8.000 bytes.
varchar: Dado do tipo caractere com o
tamanho variável máximo de 8.000 bytes.
text: Dado do tipo caractere com o tamanho
fixo máximo de 2^31 - 1 (2,147,483,647)
bytes.
Constraint
As constraints “restrições” são limitações estabelecidas pelo DBA1 ao
construir os campos das tabelas em um banco de dados. Essas restrições são
responsáveis por garantir a integridade dos campo durante a manipulação de dados
feita pelo usuário.
Observe a seguir algumas das restrições mais comuns:
1 Administrador de Banco de Dados
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
25
Primary Key
Define um ou mais campos como identificador único para cada registro na
tabela, isto é, faz com que o campo não receba valores nulos ou repetidos.
ALTER TABLE [<schema>].<Tabela> ADD CONSTRAINT <PK_NomeConstraint>
PRIMARY KEY (<CampoChave1>, ..., <CampoChaveN>);
GO
Foreign Key
Define um campo da tabela como chave estrangeira, isto é, exige que o
valor a ser inserido no campo seja igual ao da chave primária relacionada ou
nulo. Pode ser implementado ao criar ou ao alterar uma tabela.
ALTER TABLE [<schema>].<TabelaFilha> ADD CONSTRAINT
<FK_NomeConstraint>
FOREIGN KEY(<CampoChave>) REFERENCES [<schema>].<TabelaPai>;
GO
Unique
Garante que o valor a ser inserido em um campo não se repita. Deve ser
implementado ao criar o campo no banco de dados ou através da criação de uma
“constraint” conforme linha de código a seguir:
ALTER TABLE [<schema>].<Tabela> ADD CONSTRAINT <UQ_NomeConstraint>
UNIQUE (<Campo>);
GO
Not Null
Garante que o valor a ser inserido em um campo não será nulo, ou seja, o
valor é requerido. Pode ser implementado durante a criação dos campos da tabela
ou alterando a tabela a qualquer momento.
Identity
Auto incrementa um número inteiro seqüencial e preenche o campo
automaticamente com o valor incrementado. Usa os tipos inteiro e decimal. Pode
usar uma semente “seed” composta pelo valor inicial “M” a ser incrementado e um
incremento “increment” representado por “N”, na sintaxe a seguir. Por exemplo:
Se desejamos criar em uma tabela aluno uma chave primária cujo RM do primeiro
aluno será 100 e é incrementado de 10 em 10, escrevemos a linha de código a
seguir e alimentamos o valor de M com 100 e o valor de N com 10, porém é
comum usar apenas a constraint Identity sem estabelecer os valores a serem
incrementados com “seed”:
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
26
CREATE TABLE <NomeTabela>(
<NomeCampo1> <TIPO_DADO> [NOT NULL] [PRIMARY KEY] [IDENTITY][(M, N)],
.
.
.
<NomeCampoN> <TIPO_DADO> [NOT NULL]
);
GO
Obs: Não pretendemos esgotar ou abordar todas as possibilidades de
criação alteração e exclusão de bancos de dados, tabelas, campos e índices, mas
sim, demonstrar os principais comandos para a construção de um banco de dados
em SQL Server.
Transact-SQL (DDL)
Vamos usar como exemplo um projeto de banco de dados baseado no
modelo de negócio a seguir:
Modelo de Negócio: Escola Técnica Os alunos da escola técnica são cadastrados por um número de registro de matricula (dado
numérico que pode ser auto incrementado, obrigatório, não permite repetição), nome
(campo obrigatório, será item de busca), endereço, data da inscrição (item de busca), data
de nascimento e CPF. Cada aluno “deve” cursar um ou mais componentes curriculares.
O curso registra o módulo (1, 2 ou 3), a sigla da área (ADM, LOG, INFO, etc), o período (M, T ou
N), a nota (B, MB ou I), a freqüência (dado numérico com até três números inteiros e duas casas decimais
obtido a partir do lançamento diário feito pela secretaria a cada aula que o aluno assistir) do aluno no
componente curricular.
Todos os dados do curso podem e devem se repetir a cada registro, porém um aluno
poderá cursar um componente curricular apenas uma vez, independente da área que o aluno cursar e
a combinação de Módulo, Área e Periodo também não se repetiram mutuamente.
Os componentes curriculares são registrados pela sigla do componente curricular (não
repetido) (PET, GOR, BDA, etc) pela descrição do componente curricular (Planejamento Estratégico
e Tático, Gestão Orçamentária, Banco de Dados, etc) (não repetido) e pela carga horária (50
ou 100 horas). Todos os dados são obrigatórios para cada componente curricular. Cada
componente curricular “pode” ser cursado por um ou mais alunos.
Figura 33 - MER - Escola Técnica
cursa N N
ALUNO COMP_CURRICULAR
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
27
Modelo Lógico-Relacional ENTIDADE ATRIBUTOS RELACIONAMENTO
ALUNO
*#RM Nome Endereco DataInscricao DataNascimento
Com Disciplina 1:N Total com Aluno_Info 1:1 Parcial com Aluno_Adm 1:1 Parcial
COMPONENTE_CURRICULAR *Sigla Descricao CargaHoraria
Com Aluno 1:N Parcial
RELACIONAMENTO ATRIBUTOS
Curso
*CodCurso CodModulo Matricula HorarioEntrada HorarioSaida Nota Frequencia
Figura 34 - Modelo Lógico-Relacional
O Transact SQL é o dialeto SQL para SQL Server, ele é dividido em três tipos
de comandos, os comandos DDL2 “Linguagem de Definição de Dados”, que
estabelecem a estrutura do banco de dados a ser criado, os comandos DML que
serão vistos a seguir e os comandos DCL, que podem ser vistos em um curso de
SQL mais aprofundado.
O Transact-SQL é um dialéto SQL para o SQL Server, ele possibilita entre
os seus comandos SQL os comandos de definição de dados, ou seja, comandos que
permitem definir os meta dados, que são os dados empregados na construção do
banco de dados.
Esses comandos DDL constroem o banco de dados para o DBA, permitindo
que ele tenha total controle sobre a construção, alteração e exclusão de objetos do
banco. Observe as principais sintaxes para criação, alteração e exclusão dos
principais objetos do banco de dados a seguir:
Banco de Dados:
Comando usado para criar um banco de dados.
Criando um banco de dados
Sintaxe:
CREATE DATABASE <NomeBanco>;
GO
2 Defination Data Language
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
28
Exemplo:
CREATE DATABASE Escola;
GO
Alterando um banco de dados Comando usado para alterar o nome de um banco de dados criado.
Sintaxe:
ALTER DATABASE <NomeBanco> MODIFY NAME = <NovoNome>;
GO
Exemplo:
ALTER DATABASE Escola MODIFY NAME = EscolaTecnica;
GO
Excluindo um banco de dados Comando usado para excluir um banco de dados criado.
O comando a seguir exclui um banco de dados existente. Porém, não será
executado se o banco de dados que se deseja excluir for o mesmo que estiver em
uso (Banco de Dados Ativo). Portanto, é necessário que o DBA “use” outro banco
de dados e depois apague o banco de dados conforme mostra a linha de código
de exemplo a seguir.
Sintaxe:
DROP DATABASE <NomeBanco>;
GO
Exemplo:
DROP DATABASE EscolaTecnica;
GO
Usando um banco de dados Comando para “usar” um banco de dados, isto é, torná-lo o banco de
dados ativo.
Sintaxe: USE <NomeBanco>;
GO
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
29
Exemplo: USE Escola;
GO
O banco de dados será alterado mesmo que esteja em uso, outras modificações podem ser
feitas, porém, não são pertinentes neste momento.
Schemas:
Criação de um schema:
Sintaxe:
CREATE SCHEMA <NomeSchema>
[<elemento_1>, ..., <elemento_n>]
Os elementos do schema citados na sintaxe acima podem ser substituidos
por uma declaração CREATE TABLE, CREATE VIEW ou GRANT válida. Portanto, é
possível criar um schema, definir seus objetos e definir suas permissões em uma
única sintaxe.
Exemplo:
CREATE SCHEMA Controle
CREATE TABLE ComponenteCurricular(
SiglaCC CHAR(3) NOT NULL UNIQUE,
Descricao VARCHAR(30) UNIQUE,
CargaHoraria TINYINT
);
GO
Usando objetos contidos em schemas Todas as tabelas criadas dentro de um schema, conforme o código de
exemplo acima, deverão informar o schema e o nome da tabela
(<schema>.<tabela>) sempre que forem feitas manipulações com a estrutura da
tabela, caso contrário o banco de dados não encontrará a tabela criada.
Vamos usar neste exemplo uma Stored Procedure chamada sp_help para
verificar a estrutura da tabela criada.
Sintaxe:
EXEC sp_help '[<NomeSchema>].<Tabela>';
GO
Exemplo: Uso do objeto com o schema:
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
30
EXEC sp_help 'Controle.ComponenteCurricular';
GO
Excluindo schemas Para excluir um schema é necessário que o schema esteja vazio, isto é, é
preciso que todas as tabelas contidas no schema sejam movidas para outro schema
ou sejam excluídas antes, senão o banco de dados não permitirá excluir o schema.
Observe a sintaxe de exclusão da tabela do banco de dados e, posteriormente, do
schema ao qual ele pertence.
Sintaxe:
DROP TABLE <schema>.<tabela>;
.
.
.
DROP TABLE <schema>.<tabelaN>;
DROP SCHEMA Controle;
GO
Exemplo:
DROP TABLE Controle.ComponenteCurricular;
DROP SCHEMA Controle;
GO
Tabelas:
Criação CREATE TABLE [<NomeSchema>].<NomeTabela>(
<CampoA> TIPO_DADO [NOT NULL] [PRIMARY KEY] [IDENTITY],
<CampoB> TIPO_DADO [NOT NULL],
.
.
.
<CampoN> TIPO_DADO [NOT NULL]
PRIMARY KEY (<CampoA>,...,<CampoN>),
FOREIGN KEY(<CampoM>) REFERENCES [<NomeSchema>].<NomeTabela>,
.
.
.
FOREIGN KEY(<CampoM>) REFERENCES [<NomeSchema>].<NomeTabela>
);
GO
Cria uma tabela no banco de dados, estabelece os seus campos, os tipos de
dados contido em cada campo, as restrições (constraint) estabelecidas para
garantir a integridade de cada campo e a identificação das chaves primárias e
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
31
chaves estrangeiras da tabela, estabelecendo, portanto, os relacionamentos entre
elas.
Exemplo 1: Tabela simples
CREATE TABLE ComponenteCurricular (
SiglaCC CHAR(3) NOT NULL UNIQUE,
Descricao VARCHAR(30) UNIQUE,
CargaHoraria TINYINT
);
GO
Exemplo 2: Tabela com chave primária
CREATE TABLE Aluno (
RM INT NOT NULL PRIMARY KEY IDENTITY,
Nome VARCHAR(20),
Endereco VARCHAR(20),
DataInscricao DATETIME,
DataNascimento DATETIME,
CPF CHAR(11)
);
GO
Exemplo 3: Tabela com chaves primárias e chave estrangeira
CREATE TABLE Curso(
Modulo CHAR(1) NOT NULL,
SiglaCurso CHAR(3) NOT NULL,
Periodo CHAR(1) NOT NULL,
RM INT,
SiglaCC CHAR(3),
Frequencia DECIMAL(5,2),
Nota VARCHAR(2)
PRIMARY KEY(Modulo, SiglaCurso, Periodo),
FOREIGN KEY(RM)
REFERENCES Aluno
);
GO
Obs: Tenha atenção ao colocar as virgulas e os parênteses e não se esqueça
de marcar todos os campos que se tornarão chaves primárias com a constraint
NOT NULL.
Alteração de tabelas (Campos)
Exemplo 1: Adicionando um campo
Sintaxe:
ALTER TABLE <NomeTabela> ADD
<NomeCampoA> <TipoDado> <RestriçãoA> … <RestriçãoN>,
<NomeCampoB> <TipoDado> <RestriçãoA> … <RestriçãoN>,
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
32
.
.
.
<NomeCampoN> <TipoDado> <RestriçãoA> … <RestriçãoN>;
GO
Exemplo:
ALTER TABLE Aluno ADD Telefone CHAR(8);
GO
Adiciona o campo telefone na tabela aluno.
Exemplo 2: Alterando um campo
Sintaxe:
ALTER TABLE <NomeTabela>
ALTER COLUMN <NomeCampo> <TipoDado> <RestriçãoA> … <RestriçãoN>;
GO
Exemplo:
ALTER TABLE Aluno
ALTER COLUMN Telefone CHAR(10) NOT NULL;
GO
Altera o campo telefone que suportava até oito (8) caracteres e permitia
valores nulos que passa a suportar até dez (10) caracteres e não suporta valores
nulos.
Exemplo 3: Excluindo um campo
Sintaxe:
ALTER TABLE <NomeTabela>
DROP COLUMN <NomeCampo>;
GO
Exemplo:
ALTER TABLE Aluno
DROP COLUMN Telefone;
GO
Exclui, da tabela aluno, o campo telefone.
Obs: Não é possível excluir um campo relacionados. É preciso excluir os
relacionamentos “Constraints” antes e, depois, excluir os campos das tabelas.
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
33
Alteração de tabelas (Relacionamentos e Chaves)
Criando uma restrição Restrições são regras estabelecidas para regular a inserção de dados em
campos, existem regras que regulam a inserção de dados em dois tipos de campos
específicos: chave primária e chave estrangeira, uma delas é a regra de
integridade de identidade e a outra é a regra de integridade referencial; A
primeira estabelece restrições para os valores inseridos em um campo que é chave
primária de uma tabela, não permitindo que o valor inserido no campo seja nulo
ou repetido; A outra regra, estabelece restrições para a inserção de valores em
um campo chave estrangeira de uma tabela, onde os valores inseridos no campo
devem ser iguais aos da chave primária relacionada ou iguais a nulo.
Observe a sintaxe e a aplicação dela nas tabelas a seguir
Sintaxe: Criação de chaves primárias
ALTER TABLE [<schema>].<NomeTabela> ADD
CONSTRAINT <PK_NomeChave> PRIMARY KEY(<CampoA>, …, <CampoN>);
GO
Exemplo
ALTER TABLE ComponenteCurricular
ADD CONSTRAINT PK_ComponenteCurricular PRIMARY KEY(SiglaCC);
GO
Sintaxe: Criação de chaves estrangeiras
ALTER TABLE [<schema>].<NomeTabela>
ADD CONSTRAINT <FK_Tabela_TabelaX> FOREIGN KEY(<CampoA>)
REFERENCES <TabelaX>;
GO
Exemplo
ALTER TABLE Curso
ADD CONSTRAINT FK_ComponenteC_Curso FOREIGN KEY (SiglaCC)
REFERENCES ComponenteCurricular;
GO
Excluindo uma restrição
Sintaxe
ALTER TABLE {<schema>].<NomeTabela>
DROP CONSTRAINT <NomeRestrição>;
GO
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
34
Exemplo1: Quando sabemos o nome da constraint
ALTER TABLE Curso
DROP CONSTRAINT FK_ComponenteC_Curso;
GO
Exemplo2: Quando NÃO sabemos o nome da constraint
Para excluir uma chave estrangeira, chave primária ou qualquer outra
restrição, é necessário antes obter o nome da restrição que a gerou, ou seja, o
nome da “constraint”.
Em casos em que o DBA não deu nome a constraint o próprio SQL Server dá
um nome automático ao criá-la.
Para obter o nome criado pelo SQL Server use uma Stored Procedure
chamada sp_help que serve justamente para mostrar a estrutura de tabelas do
banco de dados, a partir dela será possível observar o nome das chaves e demais
restrições criadas na tabela e assim será possível excluí-la também:
Sintaxe:
EXEC sp_help '[<NomeSchema>].<Tabela>';
GO
Exemplo:
EXEC sp_help 'Curso';
GO
constraint_type constraint_name delete_action Update_action status_enabled status_for_replication constraint_keys
FOREIGN
KEY
FK__Curso__RM__53A266AC No Action No Action Enabled Is_For_Replication RM
REFERENCES
master.dbo.Aluno
(RM)
PRIMARY
KEY
(clustered)
PK__Curso__52AE4273 (n/a) (n/a) (n/a) (n/a) Semestre,
SiglaCurso,
Periodo
Tabela 2 - Obtendo o nome das constraints a partir da Stored Procedure sp_help.
Observe na tabela acima as constraints. Seus nomes são exibidos na coluna
constraint_name, logo, a partir do nome das constraints é possível excluí-las,
conforme o exemplo a seguir:
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
35
ALTER TABLE Curso
DROP CONSTRAINT PK__Curso__52AE4273;
GO
Exclusão de Tabelas
Sintaxe
DROP TABLE [<schema>].<NomeTabela>;
GO
Exemplo
DROP TABLE ComponenteCurricular;
GO
Obs1: O SQL Server não permite que sejam excluídas tabelas relacionadas
com outras que dependem desta, portanto, é necessário excluir os relacionamentos
antes de excluir a tabela.
Obs2: Sempre tenha cuidado com os comandos de exclusão, eles são
usados em momentos realmente drásticos e não permitem RollBack, isto é, não é
possível desfazer as alterações causadas por um comando de exclusão submetido.
Criação de Índices
Índices são criados para facilitar a busca de dados armazenados em campos
e que serão pesquisados com freqüência. Vamos supor que desejamos listar os
nomes dos alunos em uma combo box qualquer, neste caso seria muito
interessante que os nomes listados aparecessem em ordem alfabética e que o
banco de dados já soubesse previamente que o campo pode ser requisitado a
qualquer momento para pesquisa, neste caso é interessante que o campo esteja
indexado.
Campos cuja expectativa de retorno tem grande chance de acontecer
Exemplo: Sexo (Masculino e Feminino 50% cada um), Estado Civil (Casado,
Solteiro, Divorciado e Viúvo 25% cada), etc, não devem ser indexados.
Sintaxe CREATE [UNIQUE] INDEX <IDX_Campo>
ON [<schema>].<Tabela> (<CampoA>[ASC|DESC], …,
<CampoN>[ASC|DESC]);
GO
Exemplo 1: Índice simples
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
36
Para adicionar um índice simples vamos tomar como exemplo o campo
Nome da tabela Aluno. É natural que os nomes dos alunos sejam usados para
encontrar notas, freqüência, entre outras informações relevantes no sistema. Para
facilitar o trabalho com o campo basta torná-lo um índice. Veja a linha de código a
seguir:
CREATE INDEX IDX_Nome ON Aluno(Nome);
GO
Exemplo 2: Índice único (não permite repetição)
Eventualmente pode ser interessante buscar os dados do aluno a partir do
CPF, neste caso seria interessante impor também uma restrição que impede que o
CPF seja repetido. Veja como isso é implementado no nosso exemplo:
CREATE UNIQUE INDEX IDX_CPF ON Aluno(CPF);
GO
Exemplo 3: Índice Descendente (do maior para o menor)
A tabela aluno tem os campos Data da Inscrição e CPF que servem para
armazenar a data em que o aluno foi inscrito na escola e o CPF do aluno, neste
caso os dois campos serão usados para busca de registros na tabela.
Podemos querer recuperar os dados de todos os alunos registrados no ano
de 2007 ou podemos querer obter os alunos que fizeram inscrição a partir de um
determinado período, entre 1 de janeiro de 2006 e 31 de julho de 2006 por
exemplo, ou mesmo obter os dados de alunos, a partir dos registros mais recentes
para os mais antigos, pois os alunos mais antigos provavelmente já estão
formados.
Neste caso vamos tornar o campo Data da Inscrição um índice descendente,
isto é, do registro mais atual para o mais antigo.
CREATE INDEX IDX_DataInscricao
ON Aluno(DataInscricao DESC);
GO
Excluindo um índice Execute o código conforme o exemplo a seguir sem prejuízo aos dados contidos no campo
original da tabela.
Sintaxe
DROP INDEX [<schema>].<NomeTabela>.<NomeIndice>;
Tecnologias e Linguagens para Banco de Dados I Profor: Gilberto Braga de Oliveira
Rodovia Pref. Luiz Salomão Chamma, S/N Km 41 – Pouso Alegre – CEP 07895-340
Franco da Rocha – SP – Brasil - Telefones (11) 4443-6110/4449-3115
E-mail: [email protected] Site: http://www.etecfran.com.br/
37
GO
Exemplo
DROP INDEX Aluno.IDX_DataInscricao;
GO
Renomeando tabelas e campos
Para renomear tabelas e campos em SQL Server seria necessário verificar
uma série de vínculos que a tabela tem, com outras tabelas do mesmo banco e,
eventualmente, até mesmo com tabelas de outros banco, neste caso, para
renomear uma tabela de maneira segura é necessário usar uma Stored Procedure
que está no banco de dados master e serve justamente para manipular a troca de
nomes de tabelas e de campos de tabelas nos bancos de dados construídos.
Observe a sintaxe usada para renomear uma tabela e um campo nos exemplos a
seguir:
Renomeando Tabelas
Sintaxe: EXEC sp_rename '[<schema>].<NomeAtual>', '[<schema>]<NovoNome>';
GO
Exemplo: Veja como seria renomear uma tabela Aluno para AlunoETEC
EXEC sp_rename 'dbo.aluno', 'AlunoETEC';
GO
Renomeando Campos
Sintaxe EXEC sp_rename '[<schema>].<tabela>.<campoantigo>', '<CampoAtual>',
'COLUMN';
GO
Exemplo Renomea uma coluna Nome na tabela Aluno para NomeAluno.
EXEC sp_rename 'dbo.alunoetec.nome', 'NomeAluno', 'COLUMN';
GO