sql server2000 ddl - gilbertexbom.files.wordpress.com · para criar um sql serve solution, é...

37
Tecnologias e Linguagens para Banco de Dados I Prof or : 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.

Upload: dangduong

Post on 16-Dec-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 2: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 3: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 4: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 5: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 6: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 7: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 8: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 9: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 10: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 11: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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 (*.*)

Page 12: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 13: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 14: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 15: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 16: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 17: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 18: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 19: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 20: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 21: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 22: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 23: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 24: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 25: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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”:

Page 26: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 27: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 28: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 29: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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:

Page 30: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 31: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 32: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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.

Page 33: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 34: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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:

Page 35: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 36: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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

Page 37: SQL Server2000 DDL - gilbertexbom.files.wordpress.com · Para criar um SQL Serve Solution, é preciso criar um projeto, especificando o tipo de projeto conforme Figura 6 anterior

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