Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE...

45
Banco de Dados Banco de Dados Maria Augusta (Magu) Maria Augusta (Magu) •1

Transcript of Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE...

Page 1: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Banco de DadosBanco de DadosMaria Augusta (Magu)Maria Augusta (Magu)

•1

Page 2: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Create DatabaseCREATE DATABASE PaisProducaoMineral

USE PaisProducaoMineral

•2

Page 3: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Criando tabelas (1)Informações importantes:1.Nome da tabela. (*)2.Nome e tipo dos dados. (*)3.Chave primária.4.Chave(s) estrangeira(s).5.Outras restrições sobre os campos.

(*) Informações essenciais.

•3

Page 4: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Tipos de Dados no SQL Server (1)

Tipos Numéricos

BIT: Armazena os valores lógicos 0 ou 1.

Valores monetáriosSMALLMONEY: Valores numéricos decimais variando de -214 748.3648 a

214 748.3647.MONEY: Decimais variando de -922 337 203 685 477.5808 a

+922 337 203 685 477.5807

Para armazenar inteiros Para armazenar números reais

 TINYINT [0 a 256] NUMERIC(18,0)SMALLINT [-32.768 a 32.767]

DECIMAL(18,0)

INT [-2.147.483.648 a 2.147.483.647]

FLOAT [-1.79E + 308 a 1.79E + 308]

BIGINT [-9.223.372.036.854.775.808 a -9.223.372.036.854.775.807]

REAL [-3.40E + 38 a 3.40E + 38]

•4

Page 5: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Tipos de Dados no SQL Server (2)

Tipos para datasSMALLDATETIME: Armazena data e hora, com precisão de minutos.DATETIME: Armazena data e hora, com precisão de centésimos de segundos.TIME: Armazena somente hora. Pode armazenar segundos até a fração de 9999999.DATE: Armazena somente data.DATETIME2: É uma combinação dos tipos de dados DATE e TIME. A diferença para o tipo DATETIME é a precisão ao armazenar as horas.DATETIMEOFFSET: Armazena valores data e hora com a combinação da hora do dia com o fuso horário. O intervalo de deslocamento do fuso horário é de -14:00 a +14:00.

•5

Page 6: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Tipos de Dados no SQL Server (3)

Tipos para textoCHAR(N): Armazena N caracteres fixos (até 8.000) no formato não Unicode. Independente da quantidade de caracteres utilizados, irá sempre armazenar o tamanho de caracteres do campo, sendo preenchido o restante com espaços em brancoVARCHAR(N): Armazena N caracteres (até 8.000) no formato não Unicode.VARCHAR(MAX): Armazena caracteres no formato não Unicode. MAX indica que o máximo a ser armazenado pode chegar a 2^31-1 bytes.TEXT: Armazena caracteres no formato não Unicode. Esse tipo de dado suporte até 2.147.483.647 caracteres e existem funções específicas para trabalhar com esse tipo de dado.NCHAR(N): Armazena N caracteres fixos (até 4.000) no formato Unicode. Independente da quantidade de caracteres utilizados, irá sempre armazenar o tamanho de caracteres do campo, sendo preenchido o restante com espaços em branco.NVARCHAR(N): Armazena N caracteres (até 4.000) no formato Unicode.NVARCHAR(MAX): Armazena caracteres no formato Unicode. MAX indica que o máximo a ser armazenado pode chegar a 2^31-1 bytes.NTEXT: Armazena caracteres no formato Unicode. Esse tipo de dado suporte até 1.073.741.823 caracteres e existem funções específicas para trabalhar com esse tipo de dado.

•6

Page 7: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Create Table (1) – Apenas os Campos

CREATE TABLE Pais1(Nome varchar(50), Pib money

)

•7

Page 8: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Create Table (2) – Definição de Chave Primária –

Sintaxe 1

CREATE TABLE Pais2(Nome varchar(50) PRIMARY KEY, Pib money

)

•8

Page 9: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Create Table (3) – Definição de Chave Primária –

Sintaxe 2

CREATE TABLE Pais3(Nome varchar(50), Pib money,PRIMARY KEY(Nome)

)

•9

Page 10: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Create Table (4) – Definição de Chave Primária –

Sintaxe 3

CREATE TABLE Pais4(Nome varchar(50), Pib money,CONSTRAINT PK_Pais4

PRIMARY KEY(Nome))

•10

Page 11: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Create Table (5) – Definição de Chave Primária –

Sintaxe 3

CREATE TABLE Mineral(Nome varchar(30), Valor money,CONSTRAINT PK_Mineral PRIMARY KEY(Nome)

)

•11

Page 12: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Create Table (6) – Definição de Chave

Estrangeira – Sintaxe 1

CREATE TABLE PaisMineral1(NomePais varchar(50)

REFERENCES Pais4(Nome),NomeMineral varchar(30)

REFERENCES Mineral(Nome),

ReservaEstimada real, ProducaoAnual real,CONSTRAINT PK_PaisMineral1

PRIMARY KEY(NomePais, NomeMineral))•12

Page 13: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Create Table (7) – Definição de Chave

Estrangeira – Sintaxe 2

CREATE TABLE PaisMineral2(NomePais varchar(50),NomeMineral varchar(30), ReservaEstimada real, ProducaoAnual real,CONSTRAINT PK_PaisMineral2

PRIMARY KEY(NomePais, NomeMineral),FOREIGN KEY (NomePais)

REFERENCES Pais4(Nome),FOREIGN KEY (NomeMineral)

REFERENCES Mineral(Nome))•13

Page 14: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Create Table (8) – Definição de Chave

Estrangeira – Sintaxe 3

CREATE TABLE PaisMineral3(NomePais varchar(50),NomeMineral varchar(30), ReservaEstimada real, ProducaoAnual real,CONSTRAINT PK_PaisMineral3

PRIMARY KEY(NomePais, NomeMineral),CONSTRAINT FK1_PaisMineral3

FOREIGN KEY (NomePais) REFERENCES Pais4(Nome),CONSTRAINT FK2_PaisMineral3

FOREIGN KEY (NomeMineral) REFERENCES Mineral(Nome))•14

Page 15: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Create Table (9) – Outras Restrições

Outras restrições que podem ser impostas sobre um campo (além de chave primária e chave estrangeira):

1. NOT NULL: O campo não pode assumir valores nulos.

2. UNIQUE: O campo não pode assumir valores repetidos.

3. CHECK(condição): O valor do campo deve satisfazer a uma condição expressa na cláusula CHECK.

4. DEFAULT valor: Se nenhum valor for especificado para o campo quando for feita a inserção de um registro no mesmo, então o campo assume o valor “default”.•15

Page 16: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Insert (1) – Comando da DML Comando utilizado para a inserção de registros nas

tabelas.Sintaxe 1

INSERT INTO nome_tabela VALUES (valor1, ... , valorN)

Ao se usar esta sintaxe, os valores especificados após a cláusula VALUES têm que estar, necessariamente, na mesma ordem em que foram criados.

Exemplo:INSERT INTO Pais VALUES (‘Brasil’, 12000) - Certo

INSERT INTO Pais VALUES (12000, ‘Brasil’) - Errado

•16

Page 17: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Insert (2) – Comando da DMLSintaxe 2

INSERT INTO nome_tabela (campo1, ..., campoN) VALUES (valor1, ... , valorN)

Ao se usar esta sintaxe, os valores especificados após a cláusula VALUES têm que estar, necessariamente, na mesma ordem em que o nome dos campos aparecem após o nome da tabela.

Exemplo:INSERT INTO Pais (Pib, Nome) VALUES (12000, ‘Brasil’)INSERT INTO Pais (Nome) VALUES ( ‘Argentina’)•17

Page 18: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Exercício– Criação de TabelasCriar as tabelas a seguir:

Genero (CodGenero, NomeGenero)

DVD (CodDVD, TituloFilme, ValorLocacao, CodGenero)

Cliente (CodCliente, NomeCliente, Endereco, Telefone)

Locacao (CodCliente, CodDVD, DataLocacao, NumeroDias)

CE(Genero)

CE(Cliente) CE(DVD)

•18

Page 19: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Voltando às Restrições (1) Se executarmos o comando INSERT abaixo:

INSERT INTO Genero(CodGenero) VALUES (1)

Verificando o conteúdo da tabela Genero, veremos que consta um NULL para o campo NomeGenero associado ao código de Genero 1.

Para impedir a inserção de valores nulos, impomos a restrição NOT NULL quando da declaração do campo.

Exemplo:CREATE TABLE Genero1( CodGenero int, NomeGenero varchar(30) NOT NULL, CONSTRAINT PK_Genero1 PRIMARY

KEY(CodGenero))

•19

Page 20: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Voltando às Restrições (2) Se executarmos o comando INSERT abaixo:

INSERT INTO Genero1(CodGenero) VALUES (1)

veremos que a inserção não ocorre, aparecendo a seguinte mensagem de erro:

Não é possível inserir o valor NULL na coluna 'NomeGenero', tabela 'Genero1'; a coluna não permite nulos. Falha em INSERT.

•20

Page 21: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Voltando às Restrições (3) Se executarmos os comandos INSERT abaixo:

INSERT INTO Genero VALUES (2, ‘Romance’)INSERT INTO Genero VALUES (3, ‘Romance’)

Verificando o conteúdo da tabela Genero, veremos que o gênero Romance aparece duas vezes, associado ao código 2 e ao código 3.

Para impedir a inserção de valores duplicados de NomeGenero, impomos a restrição UNIQUE quando da declaração do campo. Exemplo:

CREATE TABLE Genero2( CodGenero int, NomeGenero varchar(30) UNIQUE, CONSTRAINT PK_Genero2 PRIMARY

KEY(CodGenero))

•21

Page 22: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Voltando às Restrições (3)CREATE TABLE Genero2( CodGenero int, NomeGenero varchar(30), CONSTRAINT PK_Genero2 PRIMARY KEY(CodGenero), CONSTRAINT UQ_Genero2 UNIQUE(NomeGenero) )

•22

Page 23: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Voltando às Restrições (4) Se executarmos os comandos INSERT abaixo:

INSERT INTO Genero2 VALUES (2, ‘Romance’)INSERT INTO Genero2 VALUES (3, ‘Romance’)

verificamos que a primeira inserção ocorre, porém a segunda não e o SGBD emite a seguinte mensagem de erro:

Violação da restrição UNIQUE KEY 'UQ__Genero2__081698E50425A276'. Não é possível inserir a chave duplicada no objeto 'dbo.Genero2'.

A instrução foi finalizada.

•23

Page 24: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Voltando às Restrições (5) Se executarmos o comando INSERT abaixo:

INSERT INTO DVD VALUES (1, ‘A Volta dos que não Foram’, -1.5, 1)

estaremos inserindo na base um DVD com valor de locação negativo.

•24

Page 25: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Voltando às Restrições (6) Para impedir a inserção de valores de locação

negativos, impomos uma restrição através da cláusula CHECK quando da declaração do campo. Exemplo:

CREATE TABLE DVD1 (CodDVD int, TituloFilme varchar(50), ValorLocacao money CHECK(ValorLocacao>0), CodGenero int, CONSTRAINT PK_DVD1 PRIMARY KEY(CodDVD),CONSTRAINT FK1_DVD1 FOREIGN KEY(CodGenero) REFERENCES Genero(CodGenero)

)•25

Page 26: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Voltando às Restrições (6)• Uma outra sintaxe possível para se fazer a mesma

declaração é:

CREATE TABLE DVD2 (CodDVD int, TituloFilme varchar(50), ValorLocacao money ,CodGenero int, CONSTRAINT PK_DVD2 PRIMARY KEY(CodDVD),CONSTRAINT FK_DVD2 FOREIGN KEY(CodGenero) REFERENCES Genero(CodGenero),CONSTRAINT CK_DVD2 CHECK(ValorLocacao > 0)

)•26

Page 27: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Voltando às Restrições (7) Se executarmos o comando INSERT abaixo:

INSERT INTO DVD1 VALUES (1, ‘A Volta dos que não Foram’, -1.5, 1)

veremos que não é possível fazer a inserção e o SGBD emite a seguinte mensagem de erro:

A instrução INSERT conflitou com a restrição do CHECK "CK__DVD1__ValorLocac__0F975522". O conflito ocorreu no bando de dados "PaisProducaoMinerais", tabela "dbo.DVD1", column 'ValorLocacao'.

A instrução foi finalizada.•27

Page 28: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Voltando às Restrições (8) Se executarmos o comando INSERT abaixo:

INSERT INTO DVD1 (CodDvd, TituloFilme, ValorLocacao)

VALUES (1, ‘A Origem dos Guardiões’, 3.5)

estaremos inserindo na base um DVD sem informar qual é o gênero de filme ao qual ele corresponde.

Neste caso, ficará constando na coluna CodGenero o valor NULL para este filme.

Podemos estabelecer que todo filme que seja inserido sem que se informe o código do gênero, seja considerado como sendo do gênero Infantil (código 1).•28

Page 29: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Voltando às Restrições (9) Fazemos isso por meio da cláusula DEFAULT. Exemplo:

CREATE TABLE DVD2 (CodDVD int, TituloFilme varchar(50), ValorLocacao money, CodGenero int DEFAULT 1, CONSTRAINT PK_DVD2 PRIMARY KEY(CodDVD),CONSTRAINT FK1_DVD2 FOREIGN KEY(CodGenero) REFERENCES Genero(CodGenero)

)

•29

Page 30: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Delete (1) – Comando da DML Comando utilizado para a exclusão de registros

das tabelas.Sintaxe Completa

DELETE FROM nome_tabela WHERE condição

Ao se executar um comando de deleção são excluídos da tabela todos os registros que satisfazem à condição especificada.

Obs: A cláusula WHERE pode ser omitida. Neste caso, são excluídos todos os registros da tabela.

•30

Page 31: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Integridade Referencial e a Criação de Tabelas (1)

Quando se tentar excluir um registro de uma tabela e este registro referencia um registro de outra tabela, o comportamento padrão do SGBD é não permitir a exclusão.

A tabela que referencia é comumente chamada de tabela filha e a tabela referenciada de tabela pai ou tabela mãe.

•31

Page 32: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Integridade Referencial e a Criação de Tabelas (2)

Suponhamos, que os tabelas Genero e DVD tenham os seguintes conteúdos:

Vamos considerar que todas as versões da tabela DVD, que se chamarão DVD1, DVD2, DVD3, etc, terão os mesmos registros representados acima.

CodGenero

NomeGenero

1 Romance2 Ficção3 Suspense4 Terror5 Infantil6 Comédia

CodDVD

TituloFilme ValorLocacao

CodGenero

1 Procurando Nemo

3,50 5

2 O Exorcista 3,00 43 Titanic 2,50 14 Blade Runner 4,00 25 A Órfã 3,00 3

•32

Page 33: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Integridade Referencial e a Criação de Tabelas (3)

• Se tentarmos excluir um registro da tabela Genero, que seja referenciado por algum registro da tabela DVD, como por exemplo:

DELETE FROM Genero WHERE CodGenero = 1

o SGBD não permite que se faça a exclusão, uma vez que ele é responsável por manter a integridade referencial na base de dados.

• Para excluírmos o gênero Romance (CodGenero = 1) da tabela Genero, temos que, antes, excluir o registro com o filme “Titanic”, que é deste gênero, da tabela DVD.•33

Page 34: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Integridade Referencial e a Criação de Tabelas (4)

• Há, entretanto, outros comportamentos que podem ser definidos de tal forma que o SGBD permita a exclusão (ou atualização) de registros referenciados, tomando ações compensatórias, a fim de garantir a integridade referencial. São eles:

1. ON UPDATE/ ON DELETE CASCADE: Faz atualização/exclusão em cascata.

2. ON UPDATE/ ON DELETE SET NULL: Ao se atualizar ou deletar um registro na tabela mãe, coloca um NULL nos campos dos registros que o referenciam, na tabela filha.

3. ON UPDATE/ ON DELETE SET DEFAULT: Ao se atualizar ou deletar um registro na tabela mãe, coloca o valor declarado como DEFAULT nos campos dos registros que o referenciam na tabela filha.•34

Page 35: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Integridade Referencial e a Criação de Tabelas (5)

• Assim, se a tabela DVD3 é criada com a cláusula ON DELETE CASCADE, como abaixo:CREATE TABLE DVD3 (CodDVD int, TituloFilme varchar(50), ValorLocacao money, CodGenero int DEFAULT 5, CONSTRAINT PK_DVD3 PRIMARY KEY(CodDVD),CONSTRAINT FK1_DVD3 FOREIGN KEY(CodGenero) REFERENCES Genero(CodGenero)ON UPDATE CASCADE ON DELETE CASCADE

)ao emitirmos o comando:

DELETE FROM Genero WHERE CodGenero = 1

o registro relativo ao filme Titanic também será excluído da tabela DVD3.

•35

Page 36: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Integridade Referencial e a Criação de Tabelas (6)

• Assim, se a tabela DVD4 é criada com a cláusula ON DELETE SET NULL, como abaixo:CREATE TABLE DVD4 (CodDVD int, TituloFilme varchar(50), ValorLocacao money, CodGenero int DEFAULT 5, CONSTRAINT PK_DVD4 PRIMARY KEY(CodDVD),CONSTRAINT FK1_DVD4 FOREIGN KEY(CodGenero) REFERENCES Genero(CodGenero)ON UPDATE SET NULL ON DELETE SET NULL

)ao emitirmos o comando:

DELETE FROM Genero WHERE CodGenero = 1

o registro relativo ao filme Titanic terá seu campo CodGenero “setado” para NULL na tabela DVD4.

•36

Page 37: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Integridade Referencial e a Criação de Tabelas (7)

• Assim, se a tabela DVD5 é criada com a cláusula ON DELETE SET NULL, como abaixo:CREATE TABLE DVD5 (CodDVD int, TituloFilme varchar(50), ValorLocacao money, CodGenero int DEFAULT 5, CONSTRAINT PK_DVD5 PRIMARY KEY(CodDVD),CONSTRAINT FK1_DVD5 FOREIGN KEY(CodGenero) REFERENCES Genero(CodGenero)ON UPDATE SET DEFAULT ON DELETE SET DEFAULT

)ao emitirmos o comando:

DELETE FROM Genero WHERE CodGenero = 1

o registro relativo ao filme Titanic terá seu campo CodGenero “setado” para 5 na tabela DVD5.

•37

Page 38: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Alterando a Estrutura de Tabelas (1)

• Quando uma tabela precisa sofrer alterações estruturais, uma alternativa possível é excluí-la da base de dados e criar outra com a estrutura desejada.

• Porém, esta não é a melhor solução quando a tabela em questão já está populada com dados.

• Neste caso, é mais conveniente fazer uso do comando ALTER TABLE, que faz parte do grupo de comandos da DDL.

•38

Page 39: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Alterando a Estrutura de Tabelas (2)

• Com o comando ALTER TABLE, é possível fazer os seguintes tipos de alterações estruturais:

1. Incluir um novo campo.2. Excluir um campo.3. Alterar o tipo de um campo.4. Excluir uma restrição.5. Incluir uma restrição.

•39

Page 40: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Alterando a Estrutura de Tabelas (3)

• Para ilustrar as várias possibilidades de uso do comando ALTER TABLE, suponhamos que tenhamos criado a tabela Cliente, com o seguinte comando:

CREATE TABLE Cliente ( CodCliente int, NomeCliente varchar(50), Endereco varchar(100), Telefone varchar(11)CONSTRAINT PK_Cliente PRIMARY KEY (CodCliente))

•40

Page 41: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Alterando a Estrutura de Tabelas (4)

• Para incluir o campo NumFilhos do tipo int, fazemos:

ALTER TABLE ClienteADD NumFilhos int

Exercício: • Inclua agora, nesta mesma tabela, um campo Cpf do

tipo varchar(12).

•41

Page 42: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Alterando a Estrutura de Tabelas (5)

• Para excluir o campo NumFilhos, fazemos:

ALTER TABLE ClienteDROP COLUM NumFilhos

Exercício: • Exclua agora, desta mesma tabela, o campo Cpf que

você incluiu anteriormente.

•42

Page 43: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Alterando a Estrutura de Tabelas (6)

• Vamos incluir o campo NumFilhos, do tipo int novamente e, em seguida, suponhamos que tenhamos a necessidade de alterar seu tipo para tinyint:

ALTER TABLE ClienteALTER COLUM NumFilhos tinyint

Exercício: • Torne a incluir nesta tabela o campo Cpf como

varchar(120 e, sem seguida, altere o seu tipo para varchar(11).

•43

Page 44: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Alterando a Estrutura de Tabelas (6)

• Para excluir da tabela Cliente a restrição PRIMARY KEY fazemos:

ALTER TABLE ClienteDROP CONSTRAINT PK_Cliente

•44

Page 45: Banco de Dados Maria Augusta (Magu) 1. Create Database CREATE DATABASE PaisProducaoMineral USE PaisProducaoMineral 2.

Alterando a Estrutura de Tabelas (6)

• Para incluir na tabela Cliente a restrição PRIMARY KEY de tal forma que agora a chave primária passe a ser o Cpf, fazemos:

ALTER TABLE ClienteADD CONSTRAINT PK_Cliente PRIMARY KEY (Cpf)

•45