Criar Web, manuais e recursos para desenvolvimento web
Manuais
Programas
FAQS
Diretório
Comunidade
  Inicio > Manuais > Tutorial de SQL
SEÇÕES
Manuais relacionados
+Tutorial de SQL
Categorias
+Linguagem SQL

Índice do Manual Tutorial de SQL
+ O que é SQL
+ Tipos de campos
+ Adicionar um novo registro
+ Apagar um registro
+ Atualizar um registro
+ Seleção de tabelas I
+ Seleção de tabelas II
+ Seleção de tabelas III
+ Seleção de tabelas IV
+ Aproveite seu banco de dados
+ Tabelas temporárias no Sql Server
+ Adquirindo informações do Usuário com a classe System
+ Alguns truques práticos
+ Criação de tabelas
+ SQL e Programação de Banco de Dados
+ Funções para buscas com datas em Access
+ Função em SQL para o cálculo de dias de trabalho
+ SQL com Oracle
+ SQL com Oracle. Operadores
+ Sub-consultas SQL
+ Funções SQL
+ Agrupamento e combinação de elementos com SQL
+ Manipulação de dados com SQL
+ Chaves primárias com SQL com Oracle
+ Definição de chaves para tabelas e restrições
+ Supressão e modificação de tabelas com SQL
+ Gerenciamento de vistas em SQL
+ Usuários em Oracle
+ Gerenciamento em Oracle com SQL
+ Otimizar consultas SQL
+ Consultas de seleção
+ Critérios de seleção em SQL
+ Como exibir informações com múltiplas instruções SQL
+ Critérios de seleção em SQL II
+ Consultas de ação
+ Tipos de dados SQL
+ Subconsultas em SQL
+ Consultas SQL de União Internas
+ Estruturas das tabelas em SQL
+ Cursores em SQL
+ Referências Cruzadas em SQL
+ Introdução a freetext e contains em SQL-Server
+ Acesso ao banco de dados externos
+ Consultas com parâmetros e omissão de permissões
+ Procedures e busca de registros duplicados em SQL
+ A função datepart() em Access
+ Emular um Cursor SQL com um Loop
+ Tipos de instruções SQL e seus componentes sintáticos

Descrição dos capítulos

Parceiros
- CSS para Web Design
- S.O.S Designers
- Slackware-Brasil
- Crie seu Web site
- Oficina da Net


Definição de chaves para tabelas e restrições

Vemos chaves primárias e chaves externas (foreing keys) e aprendemos a aplicar restrições aos distintos campos das tabelas.


Chave primária: Primary key

É uma coluna ou um conjunto de colunas que identificam univocamente a cada fila. Deve ser única, não nula e obrigatória. Como máximo, podemos definir uma chave primária por tabela.
Esta chave pode ser referenciada por uma coluna ou colunas. Quando se cria uma chave primária, automaticamente se cria um índice que facilita o acesso à tabela.

Formato de restrição de coluna:

   CREATE TABLE NOME_TABELA
(COL1 TIPO_DADO [CONSTRAINT NOME_RESTRICAO] PRIMARY KEY
   COL2 TIPO_DADO

)[TABLESPACE ESPACO_DE_TABELA];


Formato de restrição de tabela:

   CREATE TABLE NOME_TABELA
   (COL1 TIPO_DADO,
   COL2 TIPO_DADO,

[CONSTRAINT NOMERESTRICAO] PRIMARY KEY (COLUNA [,COLUNA]),

)[TABLESPACE ESPACO_DE_TABELA];


Chaves alheias: Foreign Key:

Está formada por uma ou várias colunas que estão associadas a uma chave primária de outra ou da mesma tabela. Pode-se definir tantas chaves alheias quantas se necessite, e podem estar ou não na mesma tabela que a chave primária. O valor da coluna ou colunas que são chaves alheias deve ser: NULL ou igual a um valor da chave referenciada (regra de integridade referencial).

Formato de restrição de coluna:

   CREATE TABLE NOME_TABELA
   (COLUNA1 TIPO_DADO
   [CONSTRAINT NOMERESTRICAO]
REFERENCES NOMETABELA [(COLUNA)] [ON DELETE CASCADE]
      …
      )[TABLESPACE ESPACO_DE_TABELA];


Formato de restrição de tabela:

   CREATE TABLE NOME_TABELA
   (COLUNA1 TIPO_DADO,
   COLUNA2 TIPO_DADO,
   …
   [CONTRAINT NOMERESTRICAO]
   FOREIGN KEY (COLUNA [,COLUNA])
      REFERENCES NOMETABELA [(COLUNA [,
      COLUNA])]
         [ON DELETE CASCADE],
   )[TABLESPACE ESPACO_DE_TABELA];


Notas:

  • Na cláusula REFERENCES indicamos a tabela a qual remite a chave alheia.
  • Há que criar primeiro uma tabela e depois aquela que lhe faz referência.
  • Há que apagar primeiro a tabela que faz referência a outra tabela e depois a tabela que não faz referência.
  • Eliminado em cascata (ON DELETE CASCADE): Se eliminarmos uma fila de uma tabela mãe, todas as filas da tabela detalhe cuja chave alheia seja referenciada se eliminarão automaticamente. A restrição se declara na tabela detalhe. A mensagem "n filas eliminadas" só indica as filas eliminadas da tabela mãe.
NOT NULL: Significa que a coluna não pode ter valores nulos.
DEFAULT: Proporcionamos a uma coluna um valor padrão quando o valor da coluna não se especifica na cláusula INSERT. Na especificação DEFAULT é possível incluir várias expressões: constantes, funções SQL e variáveis UID e SYSDATE.
Verificação de restrições: CHECK: Atua como uma cláusula where. Pode fazer referência a uma ou mais colunas, porém não a valores de outras filas. Em uma cláusula CHECK não se podem incluir sub-consultas nem as pseudo-consultas SYSDATE, UID e USER.

Nota: A restrição NOT NULL é similar a CHECK (NOME_COLUNA IS NOT NULL)


UNIQUE: Evita valores repetidos na mesma coluna. Pode conter uma ou várias colunas. É similar à restrição PRIMARY KEY, salvo que são possíveis várias colunas UNIQUE definidas em uma tabela. Admite valores NULL. Assim como em PRIMARY KEY, quando se define uma restrição UNIQUE se cria um índice automaticamente.

Vistas do dicionário de dados para as restrições:

Contém informação geral as seguintes:

USER_CONSTRAINTS: Definições de restrições de tabelas propriedade do usuário.
ALL_CONSTRAINTS: Definições de restrições sobre tabelas as quais pode acessar o usuário.
DBA_CONSTRAINTS: Todas as definições de restrições sobre todas as tabelas.

Criação de uma tabela com dados recuperados em uma consulta:

CREATE TABLE: permite criar uma tabela a partir da consulta de outra tabela já existente. A nova tabela conterá os dados obtidos na consulta. Realiza-se esta ação com a cláusula AS colocada ao final da ordem CREATE TABLE.

   CREATE TABLE NOMETABELA
   (COLUNA [,COLUNA]
   )[TABLESPACE ESPACO_DE_TABELA]
   AS CONSULTA;


Não é necessário especificar tipos nem tamanho das consultas, já que vêm determinadas pelos tipos e os tamanhos das recuperadas na consulta.
A consulta pode ter uma sub-consulta, uma combinação de tabelas ou qualquer sentença select válida.
As restrições COM NOME não se criam em uma tabela desde a outra, só se criam aquelas restrições que carecem de nome.

Autoria e outras referências sobre este artigo

Manuais relacionados com este artigo
Dentro de Tutorial de SQL

Categorias relacionadas
Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo:
+ Entrar em Linguagem SQL


Comentários dos visitantes
Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
Acrescentar um comentário do artigo Acrescentar um comentário do artigo



Sobre nós | Copyright | Anuncie | Entrar em contato <criarweb>

Hospedado por Hostnet Hospedagem de Sites