• Nenhum resultado encontrado

SQL aula 2

N/A
N/A
Protected

Academic year: 2021

Share "SQL aula 2"

Copied!
36
0
0

Texto

(1)
(2)

SQL - Structured Query

Language

(3)

SQL - Structured Query Language

• Objetivo: Integridade e Consistência no SQL

Server 2012 Management Studio Express.

(4)

SQL - Structured Query Language

• Para que um sistema de banco de dados sempre

possa fornecer informações confiáveis aos

usuários, o administrador deve filtrar algumas

ações realizadas sobre essas informações a fim de

evitar a ocorrência de possíveis erros relacionados

às mesmas.

• Além disso, esse sistema deve ser capaz de

receber informações de forma constante sem ter

que sofrer alterações com a mesma frequência. O

banco de dados deve possibilitar a inserção de

uma grande quantidade de dados sem que o

mesmo precise ser alterado em sua estrutura.

(5)

SQL - Structured Query Language

• CONSTRAINTS

• Constraints são objetos utilizados com a finalidade

de estabelecer regras referentes à integridade e à

consistência nas colunas das tabelas pertencentes

a um sistema de bando de dados. Isso é muito

importante porque, para planejar e criar tabelas,

devemos garantir a integridade dos dados

presentes nas colunas e identificar os valores

válidos para tais dados.

(6)

SQL - Structured Query Language

• CONSTRAINTS

• A fim de assegurar a integridade dos dados de uma

tabela, o SQL Server oferece cinco tipos diferentes

de constraints, os quais são relacionados a cinco

tipos diferentes de integridades. Segue abaixo:

(7)

SQL - Structured Query Language

• Chaves Primárias (PRIMARY KEY)

• Normalmente, as tabelas possuem uma coluna

contendo valores capazes de identificar uma linha

de forma exclusiva. Essa coluna recebe o nome de

chave primária, também conhecida como

PRIMARY KEY, cuja finalidade é assegurar a

integridade dos dados da tabela.

• A chave primária pode ser gerada no momento da

criação ou da alteração da tabela, bastando para

isso definir uma constraint PRIMATY KEY.

(8)

SQL - Structured Query Language

• Chaves Primárias (PRIMARY KEY)

• É importante ter em mente que cada tabela pode

conter apenas uma constraint PRIMARY KEY,

sendo que a coluna que a representa não pode

aceitar valores nulos. Esse tipo de constraint é

capaz de assegurar que os dados sejam

identificados de forma única e exclusiva, portanto,

é comum que a coluna que a represente seja

chamada de coluna de identidade. O Database

Engine é responsável por assegurar essa

(9)

SQL - Structured Query Language

• Chaves Primárias (PRIMARY KEY)

• Por exemplo uma tabela de PRODUTOS, temos

um campo chamado CODIGO que serve como

"chave" para que não existam linhas repetidas.

Mas veremos que se quisermos inserir um novo

produto com o código '5' isso é possível, pois esse

campo não possui uma constraint do tipo

(10)

SQL - Structured Query Language

• Chaves Primárias (PRIMARY KEY)

Código iguais, tabela inconsistente.

(11)

SQL - Structured Query Language

• Chaves Primárias (PRIMARY KEY)

• Em um caso real, não poderíamos ter códigos

idênticos para produtos diferentes. A constraint

PRIMARY KEY evita isso, no momento em que

tentamos inserir um registro com um código já

existente, o SQL Server retorna um aviso de

inconsistência para o usuário avisando-o que o

processo não pôde ser realizado.

(12)

SQL - Structured Query Language

• Chaves Primárias (PRIMARY KEY)

• Exemplos:

create table departamentos ( codigo int not null primary key, nome varchar (50),

localizacao varchar (50),

codigoFuncionario int not null )

(13)

SQL - Structured Query Language

• Chaves Primárias (PRIMARY KEY)

• Exemplos:

create table departamentos (

codigo int not null primary key identity (1,1), nome varchar (50),

localizacao varchar (50),

codigoFuncionario int not null )

O comando identity é usado para auto-incremento no SQL Server. Sintaxe: IDENTITY [(seed, increment)]

seed: valor usado para a primeira linha carregada na tabela.

increment: é o valor de incremento adicionado ao valor de identidade da linha anterior que foi carregada.

(14)

SQL - Structured Query Language

• Chaves Primárias (PRIMARY KEY)

• Exemplos:

– ALTERANDO ATRIBUTO PARA SER IDENTIFICADOR:

ALTER TABLE agencia ALTER COLUMN codigo_ag INT NOT NULL ALTER TABLE agencia ADD PRIMARY KEY(codigo_ag);

TABELA COLUNA

O Atributo

identificador tem que ser

obrigatoriamente not null ou seja não aceita valor nulo.

(15)

SQL - Structured Query Language

• Chaves Secundárias ou Únicas (UNIQUE)

• Além da constraint PRIMARY KEY, também podemos

utilizar constraints UNIQUE, as quais asseguram que dados duplicados não sejam inseridos em colunas que não fazem parte de chaves primárias. A UNIQUE é uma constraint que também é capaz de assegurar a exclusividade dos dados. Em uma tabela, várias colunas podem ser definidas como constraints UNIQUE.

• As colunas nas quais são definidas constraints UNIQUE permitem a inclusão de valores nulos, desde que seja apenas um por coluna.

(16)

SQL - Structured Query Language

• Chaves Secundárias ou Únicas (UNIQUE)

• Para entendermos melhor, tomemos um cenário em que tenhamos uma tabela de cadastro de pessoas,

CADASTROS. Nessa tabela teremos a coluna CODIGO que será nossa coluna identidade, uma coluna NOME, RG e DATA_NASCIMENTO. Como já sabemos, o fato de existir uma coluna identidade na nossa tabela nos impede de

acrescentar duas pessoas com o mesmo código, mas não nos impede de acrescentar a mesma pessoa mais de uma vez. Nesse caso usaríamos uma constraint do tipo UNIQUE para a coluna RG, já que não existem pessoas diferentes com o mesmo número de RG. Assim, a linha fica

identificada pelo campo CODIGO e pelo campo RG. (Isso não nos impede de deixar o campo RG nulo, desde que só exista um nulo).

(17)

SQL - Structured Query Language

• Chaves Secundárias ou Únicas (UNIQUE)

– EXEMPLOS:

CREATE TABLE CADASTROS ( CODIGO INT NOT NULL, NOME VARCHAR(50),

ENDERECO VARCHAR(50), CEP CHAR(9) NOT NULL, BAIRRO VARCHAR(25), CIDADE VARCHAR(25), ESTADO CHAR(2),

RG CHAR(12) NOT NULL,

SALARIO DECIMAL (9,2) DEFAULT 0, SEXO CHAR(1) DEFAULT 'F',

CONSTRAINT PK_CADASTROS_CODIGO PRIMARY KEY (CODIGO),

CONSTRAINT UQ_CADASTROS_RG UNIQUE (RG),

CONSTRAINT CK_CADASTROS_SALARIO CHECK (SALARIO >= 0),

CONSTRAINT CK_CADASTROS_SEXO CHECK (SEXO IN ('F','M')) )

(18)

SQL - Structured Query Language

• Chaves Secundárias ou Únicas (UNIQUE)

– EXEMPLOS:

CREATE TABLE CADASTROS ( CODIGO INT NOT NULL, NOME VARCHAR(50),

ENDERECO VARCHAR(50), CEP CHAR(9) NOT NULL, BAIRRO VARCHAR(25), CIDADE VARCHAR(25), ESTADO CHAR(2),

RG CHAR(12) NOT NULL,

SALARIO DECIMAL (9,2) DEFAULT 0, SEXO CHAR(1) DEFAULT 'F',

CONSTRAINT PK_CADASTROS_CODIGO PRIMARY KEY (CODIGO),

CONSTRAINT UQ_CADASTROS_RG UNIQUE (RG),

CONSTRAINT CK_CADASTROS_SALARIO CHECK (SALARIO >= 0),

CONSTRAINT CK_CADASTROS_SEXO CHECK (SEXO IN ('F','M')) )

(19)

SQL - Structured Query Language

• Chaves Estrangeira (FOREIGN KEY / REFERENCES)

• Colunas que representam chaves estrangeiras são

utilizadas como a finalidade de estabelecer um vínculo entre os dados de tabelas distintas. A criação deste tipo de chave requer a utilização da constraint FOREIGN KEY /

REFERENCES.

• Para compreendermos este assunto de forma mais adequada, destacamos que para criamos uma chave

estrangeira é preciso que a coluna da primeira tabela, na qual se encontra a chave primária, seja referenciada pela coluna que se encontra na segunda tabela. Dessa forma, a coluna da segunda tabela torna-se a chave estrangeira.

(20)

SQL - Structured Query Language

• Chaves Estrangeira (FOREIGN KEY / REFERENCES)

• Vale destacar, no entanto, que não é necessário que uma constraint FOREIGN KEY / REFERENCES em uma tabela seja vinculada apenas a uma constraint PRIMARY KEY em outra tabela. Além disso, embora a FOREIGN KEY /

REFERENCES possa conter valores nulos, é possível que, nessa situação, a verificação dos valores que forma esta constriant não ocorra.

• Podemos assegurar que a verificação dos valores de FOREIGN KEY / REFERENCES ocorra por meio da

especificação do valor NOT NULL em todas as colunas que fazem parte deste tipo de constraint.

(21)

SQL - Structured Query Language

• Chaves Estrangeira (FOREIGN KEY / REFERENCES)

• Cenário:

• A nossa tabela do cenário anterior, CADASTROS, é

referente a uma locadora de vídeo. Nessa locadora de vídeo não é necessário que parentes de uma primeira pessoa já cadastrada façam cadastro efetivo. Elas simplesmente

podem ser adicionadas como DEPENDENTES da primeira pessoa. Portanto, seria criada uma nova tabela chamada DEPENDENTES com os campos CODIGO, COD_CAD, NOME, RG e DATA_NASCIMENTO. Onde CODIGO seria um campo de PRIMARY KEY, pois só podem existir registros exclusivos, COD_CAD seria um campo FOREIGN KEY /

REFERENCES para o campo CODIGO na tabela

CADASTROS e o campo RG seria um UNIQUE, para que fosse evitado o cadastro da mesma pessoa mais de uma vez.

(22)

SQL - Structured Query Language

• Chaves Estrangeira (FOREIGN KEY / REFERENCES)

CREATE TABLE DEPENDENTES ( CODIGO INT NOT NULL,

COD_CAD INT NOT NULL, NOME VARCHAR(50), RG CHAR(12) NOT NULL,

DATA_NASCIMENTO SMALLDATETIME, SEXO CHAR(1) DEFAULT 'F',

CONSTRAINT PK_DEPENDENTES_CODIGO PRIMARY KEY (CODIGO),

CONSTRAINT FK_DEPENDENTES_COD_CAD FOREIGN KEY (COD_CAD) REFERENCES CADASTROS(CODIGO),

CONSTRAINT UQ_DEPENDENTES_RG UNIQUE (RG),

CONSTRAINT CK_DEPENDENTES_SEXO CHECK (SEXO IN ('F','M')) )

(23)

SQL - Structured Query Language

Regras de Validação (CHECK)

Além de evitar que os usuários insiram valores

inexistentes na tabela, as regras de validação dos dados evitam situações como as ilustradas a seguir:

(24)

SQL - Structured Query Language

Valor Padrão (DEFAULT)

Quando um valor padrão é estabelecido para uma coluna, o sistema assume que ele deve ser utilizado sempre que o valor que deveria ser inserido é suprimido, ou seja,

quando o usuário deixa de preencher o valor manualmente.

(25)

SQL - Structured Query Language

Valores NULL

Além dos valores padrões, também é possível atribuir valores nulos a uma coluna. Por exemplo, na tabela de FUNCIONARIOS, podemos atribuir valores nulos a

coluna SALARIO. Com isso, podemos inserir todas as informações da pessoa, mas, omitindo o valor do salário dessa pessoa. Vejamos:

(26)

SQL - Structured Query Language

(27)

SQL - Structured Query Language

Regras de constraints

Exemplos para alterar as tabelas:

ALTER TABLE CADASTRO ADD UNIQUE (RG);

ALTER TABLE CADASTRO ADD CHECK (SALARIO >= 0);

ALTER TABLE CADASTRO ADD CHECK (SEXO IN ('F','M'));

ALTER TABLE CADASTRO ADD PRIMARY KEY (id);

ALTER TABLE CADASTRO ADD FOREIGN KEY (id) REFERENCES TELEFONE (NUMERO);

(28)

EXEMPLOS

simplificados

(29)

SQL - Structured Query Language

(30)

SQL - Structured Query Language

Após o MER e gerado o modelo relacional (esquema logico) abaixo:

(31)

SQL - Structured Query Language

O modelo físico deste exemplo: CREATE TABLE ALUNO ( RA CHAR(10) PRIMARY KEY, NOME VARCHAR(50)

) GO

CREATE TABLE DISCIPLINA (

COD_DISCIPLINA CHAR(10) PRIMARY KEY, NOME VARCHAR(50)

) GO

CREATE TABLE CURSO ( NOME VARCHAR(10),

COD_DISCIPLINA CHAR(10), RA CHAR(10),

PRIMARY KEY(COD_DISCIPLINA,RA),

FOREIGN KEY(COD_DISCIPLINA) REFERENCES DISCIPLINA (COD_DISCIPLINA),

FOREIGN KEY(RA) REFERENCES ALUNO (RA) )

(32)

SQL - Structured Query Language

(33)

SQL - Structured Query Language

Após o MER e gerado o modelo relacional (esquema logico) abaixo:

(34)

SQL - Structured Query Language

O modelo físico deste exemplo:

CREATE TABLE CLIENTE (

CODIGO CHAR(10) PRIMARY KEY, NOME VARCHAR(50)

) GO

CREATE TABLE PESSOA_JURIDICA ( CNPJ CHAR(13),

TIPO_ORGANIZAÇÃO VARCHAR(30), CODIGO CHAR(10) PRIMARY KEY,

FOREIGN KEY(CODIGO) REFERENCES CLIENTE (CODIGO) )

GO

CREATE TABLE PESSOA_FISICA ( CPF CHAR(11),

SEXO CHAR(1),

CODIGO CHAR(10) PRIMARY KEY,

FOREIGN KEY(CODIGO) REFERENCES CLIENTE (CODIGO) )

(35)

Exercícios

(36)

SQL

Referências

Documentos relacionados

O ponto de equilíbrio é o número de unidades que precisão ser vendidas para uma empresa atingir o equilíbrio- não ter lucro e nem prejuízo5. O CVL é qualquer análise

Patients diagnosed with ES by anatomopathological exam, which had recorded the serum levels of AP and LDH before and after pre- operative chemotherapy and the percentage of

a) Assuma que todos os routers são ligados simultaneamente. Compare as mensagens trocadas pelo router R2 para ambos os algoritmos de encaminhamento. b) Em termos de quantidade

Este trabalho apresenta os resultados de tratamento com radiocirurgia estereotáxica (RCE) em 12 pacientes portadores de malformação arteriovenosa cerebral (MAV), com o uso de

Atrav´es das Figuras 4.21(a) e 4.21(b), observamos que ocorre uma queda na densidade de predadores quando consideramos a taxia quase local no cen´ario 3, em compara¸c˜ao com o caso

Para a institucionalização de um projeto de extensão, o proponente (servidor) deverá ter o projeto registrado na Diretoria de Extensão da PROEX – Pró-Reitoria

Consultar também o documento Instrumento de Avaliação Externa para as Equipes de Atenção Básica e Saúde Bucal (Saúde da Família ou parametrizada) disponível no PMAQ / 3º Ciclo

Luciana Bertocco de Paiva Haddad Pesquisador executante: Tatiana Morgado Conte Departamento/Instituto: Departamento de Gastroenterologia do Hospital das Clínicas/ Faculdade de