Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Noções básicas da instrução ALTER TABLE do SQL Server


Este artigo se concentra na instrução ALTER TABLE no SQL Server e nas seguintes tarefas nas tabelas do SQL Server:
  1. Adicione uma ou várias colunas a uma tabela existente.
  2. Modifique uma ou várias colunas de uma tabela, principalmente:
    • Adicione restrições na coluna.
    • Altere o tipo de dados da coluna.
  3. Retire a coluna da tabela SQL.

Para fins de demonstração, criei um banco de dados chamado VSDatabase que irá inserir os dados dos pacientes. Lá, adicionei uma tabela chamada tblPatients . A estrutura da tabela é a seguinte:

Segue o script para criar a tabela:
Use VSDatabase
Go
create table tblpatients
(
Patient_ID varchar(10),
Patient_name varchar(50),
Address varchar(500),
City varchar(50),
AppointmentDate datetime
)

O script a seguir insere dados fictícios em tblPatients tabela:
insert into tblpatients (Patient_ID,Patient_name,Address,City,AppointmentDate)
values
('OPD00001','Nisarg Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-10'),
('OPD00002','Nirali Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-11'),
('OPD00003','Manushi Bhatt ','B-50, Suramya Flats','Surat','2021-02-10'),
('OPD00004','Arjun Bhatt','B-50, Suramya Flats','Surat','2021-02-12'),
('OPD00005','Dixit Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-09')

Agora, vamos entender a instrução ALTER TABLE por exemplos.

Adicionar uma ou várias colunas a uma tabela existente


Podemos adicionar uma ou várias colunas usando o comando ALTER TABLE. A sintaxe para adicionar as colunas é a seguinte:
ALTER TABLE tbl_name ADD column_name_1 datatype, column_name_2 datatype ..

Onde,
  1. tbl_name :especifique o nome da tabela onde você deseja adicionar uma nova coluna.
  2. Tipo de dados
  3. Column_name_1 :especifique o nome da coluna e seu tipo de dados. Quando você adiciona várias colunas, cada uma delas deve ser separada por uma vírgula (,)

Exemplo

Desejo adicionar uma nova coluna chamada first_name para tblPacientes . Para adicionar a coluna, executamos a seguinte consulta:
ALTER TABLE tblpatients ADD first_name VARCHAR(50)

Agora adicionamos várias colunas, o middle_name e last_name colunas para tblPatients tabela. Para isso, executamos a seguinte consulta:
ALTER TABLE tblpatients ADD middle_name VARCHAR(50),last_name VARCHAR(50)

Podemos consultar information_schema.columns ou sys.columns tabelas para verificar as colunas recém-adicionadas. As consultas são as seguintes:

Para consultar information_schema.columns :
select TABLE_NAME,COLUMN_NAME,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLLATION_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tblpatients'

Saída:

Para consultar Sys.columns:
select object_name(object_id) [Table Name],name,max_length from sys.columns where object_id =object_id('tblpatients')

Saída:

Como você pode ver, as colunas foram adicionadas.

Modificar as colunas de uma tabela


Agora queremos explorar a modificação de colunas de uma tabela. Primeiro, temos que entender como podemos alterar o nome da coluna da tabela.

Alterar o tipo de dados da tabela existente


A sintaxe de ALTER TABLE para alterar o tipo de dados da coluna é:
ALTER TABLE tbl_name ALTER COLUMN column_name datatype

Onde,
  • tbl_name :o nome da tabela em que você precisa alterar o tipo de dados da coluna.
  • Column_name :o nome da coluna e o tipo de dados. Devemos especificar o novo tipo de dados após a palavra-chave ALTER COLUMN.

Vamos alterar o tipo de dados da coluna de endereço. O comprimento atual da coluna Endereço é varchar(1000). Devemos alterar o comprimento da coluna para varchar(50).

A consulta para modificar o tipo de dados é a seguinte:
Alter table tblpatients alter column address varchar(50)

Quando executamos a consulta SQL, recebemos o seguinte erro:
Msg 2628, Level 16, State 1, Line 1
String or binary data would be truncated in table 'VSDatabase.dbo.tblpatients', column 'Address'. Truncated value: ''.

Assim, ao mesmo tempo em que reduzimos o comprimento da coluna, devemos revisar o comprimento máximo do registro e, com base nisso, alterá-lo. No nosso caso, executamos a seguinte consulta para identificar o comprimento máximo do registro no Endereço coluna:
select len(Address) [Maximum length of column],Address from tblpatients

Saída:

De acordo com a saída, o comprimento mínimo da coluna de endereço deve ser varchar(25).

Execute a seguinte consulta para alterar o comprimento da coluna:
Alter table tblpatients alter column address varchar(25)

Execute a seguinte consulta para verificar o comprimento:
select TABLE_NAME,COLUMN_NAME,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLLATION_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tblpatients'

Saída:

Como você pode ver, o comprimento da coluna foi alterado com sucesso.

Adicionar restrição na coluna


Podemos adicionar uma restrição à coluna usando a instrução ALTER TABLE. A sintaxe ALTER TABLE é a seguinte:
ALTER TABLE tbl_name ALTER COLUMN column_name datatype constraint_name

Onde,
  • tbl_name :o nome da tabela em que você precisa alterar o tipo de dados da coluna.
  • Column_name :o nome da coluna e o tipo de dados. Especifique o novo tipo de dados após a palavra-chave ALTER COLUMN.
  • Nome_restrição :o tipo de restrição. Deve ser qualquer uma das seguintes restrições:
    • ÚNICO
    • NÃO NULO
    • VERIFICAR
    • PADRÃO
    • CHAVE PRIMÁRIA
    • CHAVE ESTRANGEIRA

Suponha que você queira adicionar um NOT NULL restrição na cidade coluna. Execute o seguinte ALTER TABLE demonstração:
Alter table tblpatients alter column Patient_name varchar(50) not null

A sintaxe de adicionar a CHAVE PRIMÁRIA a restrição é diferente se você quiser adicionar uma chave primária no id_paciente coluna. Para adicionar a restrição, execute a seguinte consulta:
Alter table tblpatients add primary key (Patient_ID)

Você receberá o seguinte erro:
Msg 8111, Level 16, State 1, Line 17
Cannot define PRIMARY KEY constraint on nullable column in table 'tblpatients'.
Msg 1750, Level 16, State 0, Line 17
Could not create constraint or index. See previous errors.

Para corrigir o erro, devemos criar uma restrição NOT NULL no Patient_ID coluna. Execute a seguinte consulta:
Alter table tblpatients alter column Patient_ID varchar(50) not null

Depois que a restrição é adicionada, adicionamos a chave primária executando a seguinte consulta:
Alter table tblpatients add primary key (Patient_ID)

A chave primária será adicionada com sucesso.

Para visualizar a restrição na tabela, execute a seguinte consulta:
SELECT OBJECT_NAME(object_id) AS ConstraintName,
SCHEMA_NAME(schema_id) AS SchemaName,
type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT' AND OBJECT_NAME(parent_object_id)='tblpatients'

Saída:

Dessa forma, a restrição de chave primária foi criada.

Solte uma coluna da tabela


Podemos eliminar uma coluna usando a instrução ALTER TABLE. A sintaxe é:
ALTER TABLE tbl_name DROP Column column_name

Onde,
  • tbl_name :o nome da tabela onde você deseja soltar uma coluna.
  • Column_name:a coluna que você deseja remover da tabela.

Adicionamos o first_name e last_name colunas para tblPatients tabela. Portanto, não exigimos o paciente_name coluna.

Para descartar a coluna, execute a seguinte consulta:
Alter table tblpatients drop column Patient_name

Observação: Se você estiver descartando uma coluna com uma restrição PRIMARY KEY ou FOREIGN KEY, você deve descartar a restrição antes de descartar a coluna.

Resumo


O artigo explorou o propósito da instrução ALTER TABLE e os casos de uso básicos. Podemos adicionar, modificar e descartar colunas da tabela, bem como adicionar restrições em uma tabela usando a instrução ALTER TABLE. No próximo artigo, abordarei algumas opções avançadas de gerenciamento.

Leia também


Noções básicas sobre a instrução ALTER TABLE ADD COLUMN do SQL Server