Tabela de restrição (restrição) forte SQL Server
- 12-09-2022
- Toanngo92
- 0 Comments
Mục lục
Apresentando restrições (restrições)
Uma das funções importantes no SQL Server é manter e impor a integridade dos dados. Existem vários meios para conseguir isso, mas um dos métodos mais usados e preferidos é o uso de restrições. Uma restrição é um atributo atribuído a uma coluna ou conjunto de colunas em uma tabela para evitar que algum tipo de valor de dados inconsistente seja inserido. As restrições são usadas para aplicar regras de lógica de negócios e impor a integridade dos dados.
As restrições podem ser criadas quando a tabela é criada, fazem parte da definição da tabela, podem ser incluídas na tabela durante a criação ou incluídas após a criação. As restrições podem ser classificadas como restrições de coluna e restrições de tabela:
- Restrições de tabela: pode ser aplicada a várias colunas em uma tabela e é declarada independente da definição da coluna. A restrição de tabela deve ser usada quando houver mais de uma coluna em uma restrição
- Restrição de coluna: declarada como parte de uma definição de coluna e se aplica somente a essa coluna.
Tipos de restrições no SQL Server:
- CHAVE PRIMÁRIA
- ÚNICO
- CHAVE ESTRANGEIRA
- VERIFICA
- NÃO NULO
CHAVE PRIMÁRIA (Chave Primária)
uma tabela normalmente tem uma chave primária que consiste em uma coluna exclusiva ou uma combinação de colunas para identificar exclusivamente cada linha na tabela. A restrição PRIMARY KEY é usada para gerar uma chave primária com a finalidade de garantir a integridade da entidade na tabela.
Nota: Em uma tabela, apenas uma PRIMARY KEY pode ser criada.
Duas linhas em uma tabela não podem ter o mesmo valor de chave primária e uma coluna que é uma chave primária não pode ter um valor NULL . Portanto, quando uma restrição de chave primária é adicionada a colunas de tabela existentes, o SQL Server verifica se as regras da chave primária são seguidas. Se as colunas existentes não estiverem em conformidade com as regras de chave primária, a restrição não será adicionada e um erro será retornado.
Documentos: https://docs.microsoft.com/en-us/sql/relational-databases/tables/create-primary-keys?view=sql-server-ver15
Sintaxe para adicionar chave primária à coluna ao adicionar tabela:
CREATE TABLE <table_name> (Column_Name datatype PRIMARY KEY [,column_list])
Por exemplo:
create database empDB GO use empDB GO create table EmpContactPhone (Employee_ID int primary key, MobileNumber bigint, serviceProvider varchar(30), LandlineNumber bigint)
Após executar o comando com sucesso, o banco de dados empDB é criado com a coluna Employee_ID como chave primária:
Sintaxe para adicionar chave primária à coluna ao editar a tabela:
ALTER TABLE <table_name> ADD PRIMARY KEY (<column_name>)
Por exemplo:
create database empDB GO use empDB GO create table EmpContactPhone (Employee_ID int, MobileNumber bigint, serviceProvider varchar(30), LandlineNumber bigint) use empDB GO alter table EmpContactPhone alter column Employee_ID int not null; GO alter table EmpContactPhone ADD PRIMARY KEY(Employee_ID) ;
ÚNICO (Único)
As restrições exclusivas são usadas para garantir que apenas valores exclusivos sejam inseridos em uma coluna ou conjunto de colunas. Ele permite que os desenvolvedores garantam que nenhum valor duplicado seja inserido. As chaves primárias são sempre exclusivas. Chaves UNIQUE reforçam a integridade da entidade porque uma vez que as restrições são aplicadas, duas linhas na tabela não podem ter os mesmos valores para as colunas. A restrição UNIQUE permite valores nulos. Uma tabela pode ter mais de uma restrição UNIQUE.
Sintaxe:
create table <table_name> ([column_list,] <column_name> <data_type> UNIQUE [,column_list])
Por exemplo:
create table EmpContactPhoneUnique (Employee_ID int, MobileNumber bigint unique, serviceProvider varchar(30), LandlineNumber bigint)
Com a sintaxe acima, ao inserir dados na coluna MobileNumber se houver duplicatas diferentes de , o SQL reportará um erro, por exemplo:
insert into EmpContactPhoneUnique values (1,0782222567,'vinaphone','84') insert into EmpContactPhoneUnique values (2,0782222567,'vinaphone','84')
CHAVE ESTRANGEIRA (Chave Estrangeira)
Uma chave estrangeira em uma tabela é uma coluna que aponta para uma chave primária ou uma coluna exclusiva em uma tabela. As restrições de chave estrangeira são usadas para impor a integridade referencial. Uma chave estrangeira pode ser entendida como um relacionamento entre duas tabelas para formar um esquema de banco de dados relacional.
Nota: a chave estrangeira desta tabela precisa estar associada à chave primária de outra tabela, caso contrário a instrução de inicialização dará um erro
A sintaxe para chaves estrangeiras é a seguinte:
CREATE TABLE <table_name1>([column_list,]) <column_name> <datatype> FOREIGN KEY REFFERENCES <table_name> (<pk_column_name> [,column_list])
Explique:
- table_name: o nome da tabela à qual a coluna de chave primária é referenciada
- <pk_column_name>: nome da coluna de chave primária da tabela
Por exemplo:
create database empDB GO use empDB GO create table EmpContactPhone (Employee_ID int, MobileNumber bigint, serviceProvider varchar(30), LandlineNumber bigint) use empDB GO alter table EmpContactPhone alter column Employee_ID int not null; GO alter table EmpContactPhone ADD PRIMARY KEY(Employee_ID) ; create table EmpPhoneExpenses (Expense_ID int primary key identity, Employee_ID int FOREIGN KEY REFERENCES EmpContactPhone(Employee_ID),Amount bigint)
No exemplo acima, entendemos que a coluna Employee_ID da tabela EmpContactPhone possui uma chave estrangeira e a associamos à coluna Employee_ID que é a chave primária da tabela EmpContactPhone .
VERIFICA
Essa restrição é usada para verificar o limite de valores que podem ser colocados na coluna. A restrição CHECK impõe a integridade dos dados.
Por exemplo, uma restrição de verificação pode ser introduzida se o valor inserido para a coluna que representa a idade do eleitor precisar ser maior ou igual a 18.
Se os dados inseridos para a coluna não corresponderem à condição, a inserção falhará.
A restrição de verificação funciona especificando uma condição de pesquisa, que pode ser avaliada como VERDADEIRO, FALSO ou indefinido. Os valores avaliados como FALSE serão rejeitados. Várias restrições TEST podem ser especificadas para uma única coluna. Uma única restrição CHECK também pode ser aplicada a várias colunas, criando-a no nível da tabela.
Sintaxe:
Por exemplo:
create table Employee (ID int primary key identity, Name nvarchar(30), Phone varchar(30), Age int check (Age > 18))
Na próxima etapa, tente testar inserir dados na tabela de funcionários com dados que violam a restrição:
insert into Employee values (N'Toan Ngo Vinh','0911111111',15)
NÃO NULO
A restrição not null garante que um valor de coluna não possa ser nulo. Usado para garantir a integridade e lógica dos dados, semelhante à restrição CHECK .