1 - sql (aluno) – structured query language

73
Linguagem SQL Linguagem SQL

Upload: willian-ricardo

Post on 30-Jul-2015

48 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 - SQL (aluno) – Structured Query Language

Linguagem SQLLinguagem SQL

Page 2: 1 - SQL (aluno) – Structured Query Language

Apresentação

• A álgebra relacional descrita no Capítulo 2 fornece uma notação formal e concisa para representar consultas. Entretanto, os sistemas de banco de dados comerciais exigem uma linguagem de consulta que seja mais amigável.

• Neste capítulo, bem como no Capítulo 4, estudaremos a SQL, a linguagem de consulta mais comercialmente influente. A SQL usa uma combinação de construções de álgebra relacional (Capítulo 2) e cálculo relacional (Capítulo 5).

• Embora nos referimos à SQL como uma "linguagem de consulta", ela pode fazer muito mais do que simplesmente consultar um banco de dados. Ela pode definir a estrutura dos dados, modificar dados no banco de dados e especificar restrições de segurança.

Page 3: 1 - SQL (aluno) – Structured Query Language

História da SQL

• A IBM desenvolveu a versão original da SQL, originalmente chamada Sequel, como parte do projeto R no início da década de 1970. A linguagem Sequel evoluiu desde então, e seu nome mudou para SQL (Structured Query Language). Muitos produtos agora aceitam a linguagem SQL. A SQL se estabeleceu claramente como a linguagem padrão de banco de dados relacional.

• Em 1986, o American National Standards Institute (ANSI) e a International Organization for Standardization (ISO) publicaram um padrão SQL, chamado SQL-86. Em 1989, o ANSI publicou um padrão estendido para a linguagem: a SQL-89. A próxima versão do padrão foi a SQL-92, seguida da SQL: 1999; a versão mais recente é a SQL:2003. As notas bibliográficas fornecem referências para esses padrões.

Page 4: 1 - SQL (aluno) – Structured Query Language

Partes da linguagem SQL

• Linguagem de definição de dados (DDL). A DDL da SQL fornece comandos para definir esquemas de relação, excluir relações e modificar esquemas.

conta (número_conta, nome_agência, saldo) create table conta

(número_conta char(10), nome_agência char(15), saldo nuneric(12,2), primary key (número_conta))

• Linguagem de manipulação de dados interativa (DML). A DML da SQL inclui uma linguagem de consulta baseada na álgebra relacional (2) e no cálculo relacional de tupla (5). Ela também inclui comandos para inserir, excluir e modificar tuplas no banco de dados.

Page 5: 1 - SQL (aluno) – Structured Query Language

Partes da linguagem SQL

• Integridade. A DDL SQL inclui comandos para especificar restrições de integridade às quais os dados armazenados no banco de dados precisam satisfazer. As atualizações que violam as restrições de integridade são proibidas.

• Definição de view. A DDL SQL inclui comandos para definir views.

• Controle de transação. A SQL inclui comandos para especificar o início e o fim das transações.

• SQL embutida e SQL dinâmica. A SQL embutida e a dinâmica definem como as instruções SQL podem ser incorporadas dentro das linguagens de programação de finalidade geral, como C, C++, Java, PL7I, Cobol, Pascal e Fortran.

• Autorização. A DDL SQL inclui comandos para especificar direitos de acesso para relações e views.

Page 6: 1 - SQL (aluno) – Structured Query Language

Definição de dados

• O conjunto de relações em um banco de dados precisa ser especificado para o sistema por meio de uma linguagem de definição de dados (DDL). A DDL SQL permite a especificação não só de um conjunto de relações, mas também de informações sobre cada relação, incluindo

• O esquema para cada relação

• O domínio dos valores associados a cada atributo

• As restrições de integridade

• O conjunto dos índices a serem mantidos para cada relação

• As informações de segurança e autorização para cada relação

• A estrutura de armazenamento físico de cada relação no disco

Page 7: 1 - SQL (aluno) – Structured Query Language

SQL : DDL e DMLSQL : DDL e DML

• DDL (Data Definition Language)

Linguagem para definição de dados• DML (Data Manipulation Language)

Linguagem para manipulação de dados

DDL(Estruturas)

DML(Dados)

Page 8: 1 - SQL (aluno) – Structured Query Language

Linguagem para Linguagem para Definição de Dados (DDL)Definição de Dados (DDL)

• Criação

• Exclusão

• Alteração

Comandos usados para definir edescrever os dados e as relações

dos dados em um banco de dados:

Page 9: 1 - SQL (aluno) – Structured Query Language

DDL - ExemplosDDL - Exemplos

• Createdatabasedomaintable, ...

• Alterdomaintable, ...

• Dropdatabasedomain table

Criação Exclusão

Alteração

Page 10: 1 - SQL (aluno) – Structured Query Language

CREATEDBCREATEDB

CREATEDB BD01;

DDL - Criação

Page 11: 1 - SQL (aluno) – Structured Query Language

ALGUNS TIPOS DE DADOS Categoria Tipo de dado Descrição Caracter/String Text Permite armazenar número ilimitado de caracteres. Varchar(T) T refere-se à quantidade máxima de caracteres a

serem armazenados. Tanto text, como varchar ocupam para armazenamento somente a quantidade de caracteres efetivamente utilizada.

Char(T) T refere-se à quantidade máxima de caracteres a serem armazenados. Diferente de text e varchar, ocupa o espaço total de armazenamento referido em T.

Numéricos Integer Número inteiro na faixa de 2 bilhões. Int2 Número inteiro na faixa de 32 mil. Int8 Número inteiro na faixa de 4 x 1018 Numeric(P,D) Número real com precisão definida. Ex.: numeric(8,2)

define um número com até 6 dígitos antes da vírgula e 2 após a vírgula.

Float Número de ponto flutuante, com 15 dígitos de precisão.

Float4 Número de ponto flutuante, com 6 dígitos de precisão. Temporais Date Data no formato yy-mm-dd. Time Hora no formato hh:mm:ss. Timestamp Data e hora no formato yy-mm-dd hh:mm:ss. Interval Intervalo de tempo, gerado pela subtração de 2 dados

do tipo timestamp. Ex.: 5 horas e 7 dias. Lógicos Bool Dado booleano, pode ser entrado como true, t, yes, y

ou 1 e também false, f, no, n ou 0. Mas armazena o dado como t ou f.

Page 12: 1 - SQL (aluno) – Structured Query Language

Restrições de dados:

• NOT NULL – torna a entrada de valores obrigatória na coluna.

• CHECK – verifica em cada operação de inclusão e alteração se a condição especificada para o campo está sendo cumprida.

• DEFAULT – especifica um valor padrão a ser atribuído ao campo quando nenhuma entrada for especificada.

• UNIQUE – não permite que valores duplicados apareçam na coluna. Todos os campos designados como chave candidata (entrada não repetida), devem ser especificados como UNIQUE.

• PRIMARY KEY – especifica uma chave primária, ou seja, identifica unicamente cada linha.

Page 13: 1 - SQL (aluno) – Structured Query Language

REFERENCES – especifica uma chave estrangeira, ou seja, o valor do campo é baseado nos valores de chave primária de “outra” tabela. Quando estamos declarando um campo como chave estrangeira em uma tabela, podemos especificar quais ações devem ser tomadas no caso de exclusão ou alteração da chave estrangeira:

SET NULL CASCADE SET DEFAULT ON DELETE

Quando a tupla correspondente a FK é excluída seu valor é marcado como nulo.

Quando a tupla correspondente a FK é excluído todas as tuplas que a tinham como FK são excluídas também.

Quando a tupla correspondente a FK é excluída seu valor é marcado com o valor default especificado.

ON UPDATE

Quando a tupla correspondente a FK é alterada seu valor é marcado como nulo.

Quando a tupla correspondente a FK é alterada todas as tuplas que a tinham como FK são alteradas também.

Quando a tupla correspondente a FK é alterada seu valor é marcado com o valor default especificado.

A opção NO ACTION é o default do Postgresql, e especifica que não podem ser feitas alterações e exclusões em campos que são referenciados como chave estrangeira.

Page 14: 1 - SQL (aluno) – Structured Query Language

CREATE TABLE vendedor(cod_vendedor INT2 PRIMARY KEY,nome varchar(30) NOT NULL,endereco varchar(80),cep char(8),datanascimento date,telefone varchar(18),funcao varchar(50), datacontratacao date,

cod_departamento INT2 REFERENCES departamento ON UPDATE CASCADE ON DELETE SET NULL, cod_cidade INT2 DEFAULT 1 REFERENCES cidade ON UPDATE SET NULL ON DELETE SET DEFAULT);

Ex. de restriçõesEx. de restrições

Page 15: 1 - SQL (aluno) – Structured Query Language

O que é um Domínio?O que é um Domínio?

É um apelido (aliás) para um determinado tipo de dado

• Domínios SIMPLESDomínios SIMPLES

CREATE DOMAIN ENDER AS VARCHAR (30)

CREATE DOMAIN FONE AS VARCHAR (20)

Page 16: 1 - SQL (aluno) – Structured Query Language

Crie um domínio Inteiro do tipo Int2

• CREATE DOMAIN INTEIRO AS INT2

Page 17: 1 - SQL (aluno) – Structured Query Language

• Domínios COMPLEXOSDomínios COMPLEXOS

CREATE DOMAIN SALARIO AS

NUMERIC (9,2)

DEFAULT 0

CHECK (VALUE>0)

CREATE DOMAIN DEPTO AS INT2

CHECK (VALUE BETWEEN 0 AND 6)

Page 18: 1 - SQL (aluno) – Structured Query Language

CREATE TABLECREATE TABLE

CREATE TABLE FORNECEDOR( CNPJ INT2 NOT NULL,

NOME VARCHAR(30)

)

Fornecedor

cnpjnome

cnpjFornecedor

nome

DDL - Criação

Page 19: 1 - SQL (aluno) – Structured Query Language

CREATE TABLE e DomíniosCREATE TABLE e Domínios

CREATE TABLE CLIENTE(

NOME VARCHAR(30),ENDERECO ENDER,SALARIO SALARIO

)

salario

Cliente

endereçonome

Cliente

salarioendereçonome

Domínios

Page 20: 1 - SQL (aluno) – Structured Query Language

CódigoFuncionário

NomeSalario

CREATE TABLE FUNCIONARIO(

CODIGO INT,NOME VARCHAR(30),SALARIO FLOAT,PRIMARY KEY(CODIGO)

);

Funcionário

Código

Nome

Salario

CREATE TABLE e Chave Primária (PK)CREATE TABLE e Chave Primária (PK)

Page 21: 1 - SQL (aluno) – Structured Query Language

Cliente

Codigo

Fone*

ddd número

Nome

Endereço Data_nasc

CodigoCliente

NomeEndereçoData_nasc

NúmeroDDDCliente

Fone

CREATE TABLE e Chave Estrangeira (FK)CREATE TABLE e Chave Estrangeira (FK)

Page 22: 1 - SQL (aluno) – Structured Query Language

CREATE TABLE CLIENTE(

CODIGO INT2,NOME VARCHAR(30),ENDERECO VARCHAR(30),DATA_NASC DATE,PRIMARY KEY (CODIGO)

);

DICA: Crie sempre a tabelaDICA: Crie sempre a tabelaorigem antes da tabela destinoorigem antes da tabela destino

Page 23: 1 - SQL (aluno) – Structured Query Language

CREATE TABLE FONE( DDD VARCHAR(10), NUMERO VARCHAR(20),

CLIENTE INT2 NOT NULL,PRIMARY KEY (NUMERO,DDD,CLIENTE),FOREIGN KEY(CLIENTE)REFERENCES

CLIENTE(CODIGO));

CodigoCliente

NomeEndereçoData_nasc

NúmeroDDDCliente

Fone

Page 24: 1 - SQL (aluno) – Structured Query Language

Funcionário Deptart.Gerencia1 1

CodigoFFuncionário

NomeFunSalario

CodigoDDepartamento

GerenteNomeD

CREATE TABLE e CREATE TABLE e Relacionamento 1:1Relacionamento 1:1

Page 25: 1 - SQL (aluno) – Structured Query Language

CREATE TABLE FUNCIONARIO(

CODIGOF INT2,NOMEFUN VARCHAR(30),SALARIO FLOAT,PRIMARY KEY(CODIGOF)

);

CodigoFFuncionário

NomeFunSalario

CodigoDDepartamento

GerenteNomeD

Page 26: 1 - SQL (aluno) – Structured Query Language

CREATE TABLE DEPARTAMENTO( CODIGOD INT2, GERENTE INT2, NOMED VARCHAR(30), PRIMARY KEY(CODIGOD), FOREIGN KEY(GERENTE)REFERENCES FUNCIONARIO(CODIGOF));

CodigoFFuncionário

NomeSalario

CodigoDDepartamento

GerenteNomeD

Page 27: 1 - SQL (aluno) – Structured Query Language

Aluno CursoestudaN 1

RAAluno

NomeSexoCurso

CodigoCurso

Nome

CREATE TABLE e CREATE TABLE e Relacionamento 1:NRelacionamento 1:N

Page 28: 1 - SQL (aluno) – Structured Query Language

CREATE TABLE CURSO(

CODIGO INTEGER,NOMEC VARCHAR(30),PRIMARY KEY(CODIGO)

);

RAAluno

NomeSexoCurso

CodigoCurso

NomeC

Page 29: 1 - SQL (aluno) – Structured Query Language

CREATE TABLE ALUNO(

RA INT2,NOMEALUNO VARCHAR(30),

SEXO CHAR(1),CURSO INTEGER,PRIMARY KEY(RA),FOREIGN KEY(CURSO)REFERENCES CURSO(CODIGO)

);

RAAluno

NomeAlunoSexoCurso

CodigoCurso

Nome

Page 30: 1 - SQL (aluno) – Structured Query Language

Atleta ModalidadePraticaN N

CodigoAAtleta

NomeEndereçoData_nasc

CodigoACodigoM

CodigoM

Modalidade

Nome

Pratica

CREATE TABLE e CREATE TABLE e Relacionamento N:NRelacionamento N:N

Page 31: 1 - SQL (aluno) – Structured Query Language

CREATE TABLE ATLETA(

CODIGOA INTEGER,NOMEATLETA VARCHAR(30),ENDERECO VARCHAR(30),DATA_NASC DATE,PRIMARY KEY(CODIGOA)

);

CREATE TABLE MODALIDADE(

CODIGOM INTEGER,NOMEMOD VARCHAR(30),PRIMARY KEY(CODIGOM)

);

CodigoAAtleta

NomeAtletaEndereçoData_nasc

CodigoACodigoM

CodigoM

Modalidade

NomeMod

Pratica

Page 32: 1 - SQL (aluno) – Structured Query Language

CREATE TABLE PRATICA(

CODIGOA INTEGER,CODIGOM INTEGER,PRIMARY KEY(CODIGOA,CODIGOM),FOREIGN KEY(CODIGOA)REFERENCES ATLETA(CODIGOA),FOREIGN KEY(CODIGOM)REFERENCES MODALIDADE(CODIGOM)

);

CodigoAAtleta

NomeAtletaEndereçoData_nasc

CodigoACodigoM

CodigoM

Modalidade

NomeMod

Pratica

Page 33: 1 - SQL (aluno) – Structured Query Language

Ou posso alterar os nomes das chaves do Pratica... Veja!

Page 34: 1 - SQL (aluno) – Structured Query Language

CREATE TABLE PRATICA(CODATLETA INTEGER,CODMODALIDADE INTEGER,PRIMARY KEY(CODATLETA,CODMODALIDADE),FOREIGN KEY(CODATLETA)REFERENCES ATLETA(CODIGOA),FOREIGN KEY(CODMODALIDADE)REFERENCES MODALIDADE(CODIGOM)

);

CodigoAAtleta

NomeAtletaEndereçoData_nasc

CodAtletaCodModalidade

CodigoM

Modalidade

NomeMod

Pratica

Page 35: 1 - SQL (aluno) – Structured Query Language

Exercícios

• Crie as tabelas do esquema da instituição bancária utilizando a DDL da linguagem SQL:– Agência (cod_agencia, nome_agência, cidade_agência, ativo) – Cliente (cod_cliente, nome_cliente, rua_cliente, cidade_cliente) – Conta (cod_conta, número_conta, nome_agência, saldo) – Depositante (cod_depositante, nome_cliente, número_conta)

Page 36: 1 - SQL (aluno) – Structured Query Language

Agência e Clienteagência (cod_agência, nome_agência, cidade_agência, ativo) CREATE TABLE agência(

cod_agência int2,nome_agência char(15), cidade_agência char(30), ativo numeric(16,2),primary key (cod_agência)

)

cliente (cod_cliente, nome_cliente, rua_cliente, cidade_cliente)CREATE TABLE cliente(

cod_cliente int2,nome_cliente char(20), rua_cliente char(30), cidade_cliente char(30), primary key (cod_cliente)

)

Page 37: 1 - SQL (aluno) – Structured Query Language

Conta e Depositante

conta (cod_conta, número_conta, nome_agência, saldo) CREATE TABLE conta (

cod_conta int2,número_conta char(10), nome_agência char(15), saldo nuneric(12,2), primary key (cod_conta)

)

depositante (cod_depositante, nome_cliente, número_conta)CREATE TABLE depositante (

cod_depositante int2,nome_cliente char(20), número_conta char(10), primary key (cod_depositante)

)

Page 38: 1 - SQL (aluno) – Structured Query Language

Crie as tabelas do esquema a seguir utilizando a DDL da linguagem SQL:

• fornecedor (cod_fornecedor, nome_fornecedor)

• produto (cod_produto, nome_produto, cod_fornecedor, cod_categoria)

• categoria (cod_categoria, nome_categoria)

• pedido (cod_pedido, nome_pedido, cod_cliente)

• cliente (cod_cliente, nome_cliente)

• ped_prod (cod_produto, cod_pedido)

Page 39: 1 - SQL (aluno) – Structured Query Language

Fim 1 Aula

Page 40: 1 - SQL (aluno) – Structured Query Language

CodigoProfessor

NomeEndereçoRG

CREATE TABLE e Chave CandidataCREATE TABLE e Chave Candidata

Page 41: 1 - SQL (aluno) – Structured Query Language

CodigoProduto

DescricaoPesoVolume

Restrição: Aceitar somente produtos cujo peso é

maior que 50

CREATE TABLE e Restrição de Coluna CREATE TABLE e Restrição de Coluna (Check)(Check)

Page 42: 1 - SQL (aluno) – Structured Query Language

CodigoProduto

DescricaoPesoVolume

• Aceitar somente produtos cujo peso é maior que 50

• Caso o volume não seja informado, atribuir o valor 0 de modo automático

CREATE TABLE e Valor DefaultCREATE TABLE e Valor Default

Page 43: 1 - SQL (aluno) – Structured Query Language

CodigoProduto

DescricaoPesoVolume

Restrição: Aceitar somente produtos cujo volume é menor que o peso

CREATE TABLE e Restrição de Tabela CREATE TABLE e Restrição de Tabela (Check)(Check)

Page 44: 1 - SQL (aluno) – Structured Query Language

Operadores RelacionaisOperadores Relacionais

= igual a

> maior que

< menor que

<= maior ou igual a

>= menor ou igual a

<>, != diferente de

Page 45: 1 - SQL (aluno) – Structured Query Language

CodigoProduto

DescricaoPesoVolume

Crie a tabela produto de maneira que não seja possível inserir produtos cujo peso é igual ao

volume

Page 46: 1 - SQL (aluno) – Structured Query Language

Operadores LógicosOperadores Lógicos

AND e

OR ou

NOT não

IN dentro de

BETWEEN entre

LIKE como

Page 47: 1 - SQL (aluno) – Structured Query Language

CodigoProduto

DescricaoPesoVolume

Crie a tabela produto de maneira que seja possível inserir somente produtos cujo peso

é igual a 50, 60, 70 ou 80.

Page 48: 1 - SQL (aluno) – Structured Query Language

CodigoProduto

DescricaoPesoVolume

Crie a tabela produto de maneira que seja possível somente inserir produtos cujo

volume esteja entre 20 e 80.

Page 49: 1 - SQL (aluno) – Structured Query Language

DROP DATABASEDROP DATABASE

• Apaga o banco de dados atual e todos os dados que ele contêm!!!

DROP DATABASE

DDL - Exclusão

ATENCÃO

Page 50: 1 - SQL (aluno) – Structured Query Language

DROP DOMAINDROP DOMAIN

•Apaga um domínio do banco de dados

DROP DOMAIN SALARIO;

DDL - Exclusão

• A exclusão falha se houverem atributos (colunas) usando o domínio.

• Portanto, deve-se alterar o domínio dos atributos (colunas) que usam o domínio ou excluir estes atributos primeiro!

Page 51: 1 - SQL (aluno) – Structured Query Language

DROP DOMAINDROP DOMAIN

•Apaga um domínio do banco de dados

DROP DOMAIN SALARIO [CASCADE|RESTRICT];

DDL - Exclusão

CASCADERemove automaticamente os objetos que dependem do domínio (como colunas de tabelas).

RESTRICTRecusa remover o domínio se existirem objetos que dependem do mesmo. Este é o padrão.

Page 52: 1 - SQL (aluno) – Structured Query Language

DROP TABLEDROP TABLE

• Apaga tabelas

DROP TABLE Fornecedor;

cnpjFornecedor

nome

DDL - Exclusão

Page 53: 1 - SQL (aluno) – Structured Query Language

ExemploExemplo

DROP TABLE ALUNO;DROP TABLE CURSO;

RAAluno

NomeSexoCurso

CodigoCurso

Nome

DICA: Apague sempre a tabelaDICA: Apague sempre a tabeladestino antes da tabela origemdestino antes da tabela origem

Page 54: 1 - SQL (aluno) – Structured Query Language

DROP TABLE PRATICA;DROP TABLE ATLETA;DROP TABLE MODALIDADE;

ExemploExemplo

CódigoAtleta

NomeEndereçoData_nasc.

AtletaModalidade

CódigoModalidade

Nome

Pratica

Page 55: 1 - SQL (aluno) – Structured Query Language

CodigoFuncionário

NomeSalario

CodigoDepartamento

GerenteNome

DROP TABLE DEPARTAMENTO;DROP TABLE FUNCIONARIO;

ExemploExemplo

Page 56: 1 - SQL (aluno) – Structured Query Language

ALTER DOMAINALTER DOMAIN

• Altera a definição de um domínio, afetando as colunas nele baseadas

DDL - Alteração

ALTER DOMAIN SALARIO TO NOVO_SALARIO;

ALTER DOMAIN DEPTO TO DEPTO_1 TYPE INTEGER;

Page 57: 1 - SQL (aluno) – Structured Query Language

ALTER TABLEALTER TABLE

• Adiciona ou elimina colunas a uma tabela.

• Adiciona ou elimina restrições em uma tabela– Chave Primária– Chave Estrangeira– Chave Candidata– Check

DDL - Alteração

Page 58: 1 - SQL (aluno) – Structured Query Language

ALTER TABLE FORNECEDORADD DESCRICAO CHAR(50);

Fornecedor

cnpjnome

descrição

ALTER TABLE p/ Adicionar ColunasALTER TABLE p/ Adicionar Colunas

Page 59: 1 - SQL (aluno) – Structured Query Language

ALTER TABLE p/ eliminar ColunasALTER TABLE p/ eliminar Colunas

ALTER TABLE FORNECEDORDROP DESCRICAO;

Fornecedor

cnpjnome

Page 60: 1 - SQL (aluno) – Structured Query Language

ALTER TABLE FORNECEDORADD CONSTRAINT PK_CNPJ PRIMARY KEY(CNPJ);

Fornecedor

cnpjnome

ALTER TABLE p/ adicionar Chave ALTER TABLE p/ adicionar Chave Primária (PK)Primária (PK)

Page 61: 1 - SQL (aluno) – Structured Query Language

ALTER TABLE FORNECEDORDROP CONSTRAINT PK_CNPJ;

Fornecedor

cnpjnome

ALTER TABLE p/ eliminar Chave ALTER TABLE p/ eliminar Chave Primária (PK)Primária (PK)

Page 62: 1 - SQL (aluno) – Structured Query Language

Cidade

Nome Codigo

ExercícioExercício

• Escreva o comando para criar a tabela cidade conforme o modelo abaixo.

• Escreva o comando para alterar a tabela criada de maneira que a coluna Código seja chave primária.

Page 63: 1 - SQL (aluno) – Structured Query Language
Page 64: 1 - SQL (aluno) – Structured Query Language

• Escreva o comando para apagar a restrição de chave primária da tabela Cidade.

Page 65: 1 - SQL (aluno) – Structured Query Language

ALTER TABLE FORNECEDORADD CIDADE INT2 NOT NULL;

Fornecedor CidadepertenceN 1

nome cnpj nome codigo

ALTER TABLE FORNECEDORADD CONSTRAINT FK_CODIGO

FOREIGN KEY(CIDADE)REFERENCES CIDADE(CODIGO);

ALTER TABLE p/ adicionar Chave ALTER TABLE p/ adicionar Chave Estrangeira (FK)Estrangeira (FK)

Page 66: 1 - SQL (aluno) – Structured Query Language

ALTER TABLE FORNECEDORDROP CONSTRAINT FK_CODIGO;

CnpjFornecedor

NomeCidade

CodigoCidade

NomeESTRANG

ALTER TABLE p/ eliminar Chave ALTER TABLE p/ eliminar Chave Estrangeira (FK)Estrangeira (FK)

Page 67: 1 - SQL (aluno) – Structured Query Language

Professor

endereçocódigo

nome

rg

ALTER TABLE PROFESSORADD CONSTRAINT CANDIDATA UNIQUE(RG);

ALTER TABLE p/ adicionar Chave ALTER TABLE p/ adicionar Chave CandidataCandidata

Page 68: 1 - SQL (aluno) – Structured Query Language

Professor

endereçocódigo

nome

rg

ALTER TABLE PROFESSORDROP CONSTRAINT CANDIDATA;

ALTER TABLE p/ eliminar ALTER TABLE p/ eliminar Chave CandidataChave Candidata

Page 69: 1 - SQL (aluno) – Structured Query Language

Produto

pesocódigo

descrição

volume

RESTRIÇÃO: VOLUME < PESO

ALTER TABLE p/ adicionar Restrição ALTER TABLE p/ adicionar Restrição (CHECK)(CHECK)

Page 70: 1 - SQL (aluno) – Structured Query Language

Produto

pesocódigo

descrição

volume

ALTER TABLE p/ eliminar Restrição ALTER TABLE p/ eliminar Restrição (CHECK)(CHECK)

Page 71: 1 - SQL (aluno) – Structured Query Language

ALTER TABLE FORNECEDORALTER COLUMN NOME TO RAZAO_SOCIAL;

cnpjFornecedor

nome

ALTER TABLE p/ alterar ALTER TABLE p/ alterar nomes de colunasnomes de colunas

Page 72: 1 - SQL (aluno) – Structured Query Language

CREATE TABLE FORNECEDOR(

NOME CHAR(30),CNPJ INT NOT NULL

);

ALTER TABLE FORNECEDOR ALTER COLUMN NOME TYPE VARCHAR(30);

ALTER TABLE p/ alterar ALTER TABLE p/ alterar tipos de dadostipos de dados

Page 73: 1 - SQL (aluno) – Structured Query Language

TRUNCATE TABLE

• Por vezes queremos remover todos os dados de uma tabela. Uma forma de o fazer é através do comando DROP TABLE. Mas e se apenas quisermos remover todos os dados , mas não a própria tabela? Para tal, podemos utilizar o comando TRUNCATE TABLE. A sintaxe para TRUNCATE TABLE é:

TRUNCATE TABLE "nome_tabela"

• Assim, se quisermos truncar a tabela denominada “cliente", basta escrever:

TRUNCATE TABLE cliente