Como usar restrições em bancos de dados sql multitable

UMA limitação

é uma regra de aplicação que o SGBD impõe em SQL. Depois de definir um banco de dados, você pode incluir limitações (como NÃO NULO) Na definição de uma tabela. O SGBD garante que você nunca pode cometer qualquer transação que viola uma restrição.

Video: SQL (parte 1) - Aula 06 - Bancos de Dados 2015.2

Você tem três tipos de restrições:

  • UMA restrição de coluna impõe uma condição em uma coluna numa tabela.

  • UMA restrição de tabela coloca uma restrição especificada em uma tabela inteira.

  • A afirmação é uma restrição que pode afetar mais de uma tabela.

As restrições de coluna

Um exemplo de uma restrição de coluna é mostrado na seguinte Data Definition Language (DDL) declaração:

Video: Aula 1283 banco de dados SQL - Chave Estrangeira Foreign Key

CRIAR CLIENTE TABELA (ClientName CHAR (30) não nulo, Endereço1 CHAR (30), Endereço2 CHAR (30), CityCHAR (25), StateCHAR (2), CódigoPostal CHAR (10), PhoneCHAR (13), FaxCHAR (13), Contactperson CHAR (30)) -

A declaração se aplica a restrição NÃO NULO ao Nome do cliente coluna, especificando que Nome do cliente não pode assumir um valor nulo. ÚNICO é outra restrição que você pode aplicar a uma coluna. Esta restrição especifica que cada valor na coluna deve ser exclusivo. o VERIFICA restrição é particularmente útil porque pode tomar qualquer expressão válida como argumento. Considere o seguinte exemplo:

Criar testes mesa (TestName CHAR (30) não nulo, StandardCharge NUMÉRICO (6,2) CHECK (StandardCharge gt; = 0.0AND StandardCharge lt; = 200,0)) -

carga padrão de VetLab para um teste deve ser sempre maior ou igual a zero. E nenhum dos testes padrão custa mais de US $ 200. o VERIFICA cláusula se recusa a aceitar todas as entradas que estão fora do intervalo 0 lt; = StandardCharge lt; = 200. Outra forma de dizer a mesma restrição é a seguinte:

CHECK (StandardCharge entre 0,0 e 200,0)

As restrições de tabela

o CHAVE PRIMÁRIA restrição especifica que a coluna a que se aplica é uma chave primária. Esta limitação aplica-se a toda a mesa e é equivalente a uma combinação da NÃO NULO e ÚNICO restrições de coluna. Você pode especificar essa restrição em um CRIO declaração, conforme mostrado no exemplo a seguir:

CREATE TABLE CLIENTE (ClientName CHAR (30) CHAVE PRIMÁRIA, Endereço1 CHAR (30), Endereço2 CHAR (30), CityCHAR (25), Estado CHAR (2), CódigoPostal CHAR (10), telefone CHAR (13), FaxCHAR (13 ), Contactperson CHAR (30)) -


restrições nomeados podem ter alguma funcionalidade adicional. Suponha, por exemplo, que você quer fazer um carregamento em massa de vários milhares de potenciais clientes em sua tabela perspectiva. Você tem um arquivo que contém principalmente perspectivas nos Estados Unidos, mas com algumas perspectivas canadenses espalhados por todo o arquivo.

Normalmente, você quer restringir sua mesa perspectiva para incluir apenas as perspectivas norte-americanas, mas você não quer que esta carga a granel para ser interrompido cada vez que atinge um dos registros canadenses. (Códigos postais canadenses incluem letras e números, mas os códigos postais dos EUA conter apenas números.) Você pode optar por não impor uma restrição em Código postal até que a carga a granel é completa, e então você pode restaurar a aplicação da restrição mais tarde.

Inicialmente, sua mesa PROSPECT foi criado com o seguinte CRIAR A TABELA declaração:

CREATE TABLE PROSPETO (ClientName CHAR (30) CHAVE PRIMÁRIA, Endereço1 CHAR (30), Endereço2 CHAR (30), CityCHAR (25), CHAR Estado (2), CódigoPostal CHAR (10), telefone CHAR (13), FaxCHAR (13 ), Contactperson CHAR (30), restrição de verificação postal (PostalCode entre 0 e 99999)) -

Antes do carregamento em massa, você pode desligar a aplicação da Fecho eclair limitação:

ALTER TABLE PROSPECTCONSTRAINT NÃO Zip ENFORCED-

Após a carga a granel é completa, você pode restaurar a aplicação da restrição:

ALTER TABLE PROSPECTCONSTRAINT ENFORCED- Zip

Neste ponto, você pode eliminar todas as linhas que não satisfazem a restrição com:

Video: SQL (exercícios) - Aula 08 - Bancos de Dados 2015.2

DELETE FROM PROSPECTWHERE PostalCode NÃO entre 0 e 99999 -

afirmações

A afirmação especifica uma restrição para mais do que uma tabela. O exemplo a seguir usa uma condição de pesquisa elaborado de duas tabelas para criar uma afirmação:

Video: Criando banco de dados SQL

Criar pedidos de mesa (OrderNumber inteiro não nulos, ClientName CHAR (30), TestOrdered CHAR (30), Vendedor CHAR (30), DataDaEncomenda DATA) RESULTADOS TABELA --Cria (ResultNumber inteiro não nulos, OrderNumber INTEGER, ResultCHAR (50), DATA DateOrdered , PrelimFinal CHAR (1)) --Cria ASSERTIONCHECK (NÃO EXISTE (SELECT * DE ORDENS, RESULTSWHERE ORDERS.OrderNumber = RESULTS.OrderNumberAND Orders.OrderDate gt; RESULTS.DateReported)) -

Esta afirmação garante que os resultados dos testes não são relatados antes do teste é ordenado.


Publicações relacionadas