Preparando o ambiente
Durante este e nos próximos posts referentes ao exame 70-461 estarei utilizando o banco “DBExame70461”. Para criar o banco execute o código abaixo:
use master
GO
if db_id(‘DBExame70461’) IS NULL
BEGIN
CREATE DATABASE DBExame70461;
ALTER DATABASE DBExame70461 SET RECOVERY SIMPLE;
END;
Cenário 1 – Criação
Você é DBA Junior na empresa XPTO. O seu gerente solicita que você crie uma tabela no banco DBExame70461, usando T-SQL, conforme especificações abaixo:
Tabela: Empregado
Mas qual é a sintaxe para a criação de tabelas? Segue a sintaxe resumida:
CREATE TABLE [ schema_name ] . table_name
( { <column_definition> | <computed_column_definition>
| <column_set_definition> | [ <table_constraint> ] [ ,…n ] } )
[ ON { partition_scheme_name ( partition_column_name ) | filegroup | “default” } ]
[ WITH ( <table_option> [ ,…n ] ) ]
[ ; ]
Para a sintaxe completa consulte este link.
Vejamos então como fica o script para a criação da tabela:
use DBExame70461
go
CREATE TABLE Empregado
( ID INT NOT NULL PRIMARY KEY,
Nome VARCHAR(50) NOT NULL,
Sexo CHAR(10) NOT NULL,
Cidade VARCHAR(10),
[UF] CHAR(2) NULL,
[Matricula] CHAR(7) NOT NULL,
[Login] VARCHAR(10),
);
Atente para alguns detalhes desse código de criação:
- A coluna “Cidade”, conforme especificação do gerente, aceita NULL (não é obrigatória). Veja que criei a coluna e não explicitei o NULL. Quando não explicitamos NULL ou NOT NULL para uma coluna, então será usado o comportamento default do SQL Server, que é justamente aceitar nulos;
- Note que para as colunas UF, Matricula e Login utilizei colchetes. Os colchetes podem ser usados para a criação de Alias de colunas em instruções SELECT (veremos isso em outro post), e também quando criamos objetos usando palavras reservadas. No nosso cenário, como a palavra “Login” é reservada pelo SQL Server para propósitos internos, fez-se necessário o uso de colchetes. Se você retirar os colchetes da coluna “Login” e tentar a criar a tabela então um erro será disparado. Para as colunas UF e Matricula os colchetes não fazem qualquer diferença.
Agora uma pegadinha: é possível criar uma coluna com o seguinte nome (note os espaços em branco) : “Endereco do Empregado” ? A resposta é SIM, graças aos colchetes. O código a seguir é válido:
CREATE TABLE Endereco
( ID INT NOT NULL PRIMARY KEY,
[Endereco do Empregado] varchar(50)
);
Nota: jamais faça isso na vida real (eca!).
Cenário 2 – Alteração
Após revisão de requisitos, o gerente pede para você realizar as seguintes alterações na tabela, usando T-SQL:
- Dropar a coluna [Login];
- Alterar a coluna UF de NULL para NOT NULL;
- Alterar o tamanho da coluna Cidade de VARCHAR(10) para VARCHAR(50);
- Incluir a coluna: Email VARCHAR(50) NULL.
Neste ponto faço uma pergunta: é possível realizar todas as mudanças na tabela executando uma única instrução DDL? A resposta é NÃO.
Segue as modificações na estrutura da tabela:
— 1. Dropar a coluna [Login]
ALTER TABLE Empregado
DROP COLUMN [Login];
— 2. Alterar a coluna UF de NULL para NOT NULL
ALTER TABLE Empregado
ALTER COLUMN UF CHAR(2) NOT NULL;
— 3. Alterar o tamanho da coluna Cidade de VARCHAR(10) para VARCHAR(50);
ALTER TABLE Empregado
ALTER COLUMN Cidade VARCHAR(50);
— 4. Incluir a coluna: Email VARCHAR(50) NULL.
ALTER TABLE Empregado
ADD Email VARCHAR(50);
Perceba que para adicionar uma coluna basta escrever ADD seguido do nome da coluna e seu respectivo tipo. Não existe ADD COLUMN (e isso pode cair na prova), apenas ALTER COLUMN.
Para a sintaxe completa de ALTER TABLE consulte este link.
Conclusão e Dica Final
Teremos um tópico específico sobre constraints brevemente e, por conta disso, não falamos nada a respeito. A recomendação que deixo é: pratique bastante; crie e recrie tabelas. Como dica deixo o Template Explorer do SQL Server Management Studio – vá até o menu View – Template Explorer. Este é um recurso que traz dezenas de templates que pode ajudar no processo de aprendizagem.
Iniciando finalmente o conteúdo programático previsto para o Exame 70-461 (você pode conferir o conteúdo completo aqui), vamos abordar hoje a sintaxe T-SQL para a criação e alteração de tabelas. O candidato precisa estar consciente de que é necessário saber script – “nada de janelinhas e facilidades”, pois é isso que predomina nas provas de certificação SQL Server.
Preparando o ambiente
Durante este e nos próximos posts referentes ao exame 70-461 estarei utilizando o banco “DBExame70461”. Para criar o banco execute o código abaixo:
Cenário 1 – Criação
Você é DBA Junior na empresa XPTO. O seu gerente solicita que você crie uma tabela no banco DBExame70461, usando T-SQL, conforme especificações abaixo:
Tabela: Empregado
IMAGEM – image
Mas qual é a sintaxe para a criação de tabelas? Segue a sintaxe resumida:
Para a sintaxe completa consulte este link.
Vejamos então como fica o script para a criação da tabela:
Atente para alguns detalhes desse código de criação:
- A coluna “Cidade”, conforme especificação do gerente, aceita NULL (não é obrigatória). Veja que criei a coluna e não explicitei o NULL. Quando não explicitamos NULL ou NOT NULL para uma coluna, então será usado o comportamento default do SQL Server, que é justamente aceitar nulos;
- Note que para as colunas UF, Matricula e Login utilizei colchetes. Os colchetes podem ser usados para a criação de Alias de colunas em instruções SELECT (veremos isso em outro post), e também quando criamos objetos usando palavras reservadas. No nosso cenário, como a palavra “Login” é reservada pelo SQL Server para propósitos internos, fez-se necessário o uso de colchetes. Se você retirar os colchetes da coluna “Login” e tentar a criar a tabela então um erro será disparado. Para as colunas UF e Matricula os colchetes não fazem qualquer diferença.
Agora uma pegadinha: é possível criar uma coluna com o seguinte nome (note os espaços em branco) : “Endereco do Empregado” ? A resposta é SIM, graças aos colchetes. O código a seguir é válido:
Nota: jamais faça isso na vida real (eca!).
Cenário 2 – Alteração
Após revisão de requisitos, o gerente pede para você realizar as seguintes alterações na tabela, usando T-SQL:
- Dropar a coluna [Login];
- Alterar a coluna UF de NULL para NOT NULL;
- Alterar o tamanho da coluna Cidade de VARCHAR(10) para VARCHAR(50);
- Incluir a coluna: Email VARCHAR(50) NULL.
Neste ponto faço uma pergunta: é possível realizar todas as mudanças na tabela executando uma única instrução DDL? A resposta é NÃO.
Segue as modificações na estrutura da tabela:
Perceba que para adicionar uma coluna basta escrever ADD seguido do nome da coluna e seu respectivo tipo. Não existe ADD COLUMN (e isso pode cair na prova), apenas ALTER COLUMN.
Para a sintaxe completa de ALTER TABLE consulte este link.
Conclusão e Dica Final
Teremos um tópico específico sobre constraints brevemente e, por conta disso, não falamos nada a respeito. A recomendação que deixo é: pratique bastante; crie e recrie tabelas. Como dica deixo o Template Explorer do SQL Server Management Studio – vá até o menu View – Template Explorer. Este é um recurso que traz dezenas de templates que pode ajudar no processo de aprendizagem.
IMAGEM – image
Caro Adeilson,
Apenas uma dúvida: tentei criar a tabela com o campo Login sem os colchetes e o SQL Server 2012 deixou criar normalmente, sem erro. Apesar de ser uma palavra reservada, tanto que apareceu em azul.
Num caso como esse eu poderia ter algum problema depois?
Obrigado!
Ola Laércio, nao vai haver problema nenhum, mesmo sendo palavras reservadas podemos utilizar normalmente (testes realizados nas versoes acima de 2008), mas se poder especificar com colchetes melhor. (Nunca se sabe se algum dia essa funcionalidade de nao usar colchetes sera barrada pela fabricante). Espero ter ajudado.
Excelente iniciativa! Parabéns pelo post.