Sobre o uso do tipo de dados varchar(MAX) na criação de uma ...
I. Define colunas de caracteres com tamanho fixo, de acordo com o parâmetro MAX estabelecido por ocasião da instalação do SQL Server.
II. Colunas assim definidas podem ser usadas na chave primária, mas não podem ser especificadas numa chave estrangeira.
III. Colunas assim definidas são armazenadas juntamente com as demais colunas da tabela.
Sobre essas afirmativas, é correto afirmar que:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A questão aborda conceitos sobre banco de dados, especificamente no que se refere ao tipo de dados varchar(MAX).
I. ERRADA. Utilize max para indicar um tamanho de restrição de coluna até um armazenamento máximo de 2^31-1 bytes (2 GB). Varchar é uma cadeia de caracteres não fixo.
II. ERRADA. Pessoal, nesse caso, pode ser usado tanto como chave estrangeira ou chave primária.
III. CERTA. "Se os dados a serem armazenados forem menores ou iguais a 8.000 bytes, varchar(n) ou varchar(max) os armazena in-row no registro junto com as outras colunas. No entanto, se os dados excederem o tamanho de 8.000 bytes, eles serão tratados como um objeto grande (LOB) e não serão armazenados in-row, mas em páginas LOB separadas (LOB_DATA)".
Nesse caso, quando definimos uma coluna VARCHAR(MAX) em uma tabela relacional, essa coluna será armazenada da mesma maneira que as outras colunas na tabela, caso seja menor que 8000 bytes. Caso passe de 8.000 bytes, é armazenada de forma separada. Nesse caso, podemos concluir que colunas assim são armazenadas juntamente com as demais colunas da tabela.
Fonte: Suporte Microsoft - char e varchar (Transact-SQL)
Gabarito do monitor: LETRA D
Gabarito da banca: LETRA A
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
A afirmativa III está correta, pois colunas definidas como varchar(MAX) são armazenadas juntamente com as demais colunas da tabela.
A afirmativa II está incorreta, pois colunas definidas como varchar(MAX) podem ser especificadas tanto na chave primária quanto na chave estrangeira.
A afirmativa I está incorreta, pois o tipo de dados varchar(MAX) não define colunas de caracteres com tamanho fixo, mas sim com tamanho variável, podendo armazenar até 2^31-1 bytes de dados.
Portanto na minha concepção o Gabarito correto seria Letra D.
Qual o erro da 3?
✍ GABARITO(A) ✅
A questão III está errada! A questão esta sendo taxativa em informar que coluna desse tipo são armazenadas com a demais, sem dar chances a outras possibilidades. Apesar de poderem ser armazenadas juntas, o padrão não é!
VARCHAR (MAX) é considerado como um “tipo de valor grande”. Tipos de valores grandes são normalmente armazenados ‘out of row'(fora de linha). Isto significa que a linha de dados terá um ponteiro para outro local onde o ‘valor grande’ está armazenado.
Não é ruim usar os tipos VARCHAR (MAX). Se você estiver armazenando valores “pequenos” de dados em uma coluna VARCHAR (MAX), ele será tratado normalmente. Sendo assim, se não for necessário indexar a coluna, então você pode utilizar a opção VARCHAR (MAX) tranquilamente.
A maioria dos profissionais, especialmente os que trabalham com banco de dados ou nomenclatura de dados, não aconselham a utilização deste tipo (VARCHAR(MAX)) sem ser realmente necessário. Um exemplo simples é que possuir uma coluna VARCHAR (MAX) pode confundir alguém que olha para os dados mais tarde. Por exemplo, se você deseja armazenar um comentário de 100 caracteres ou de endereço de 80 caracteres, por que você utilizaria um VARCHAR (MAX)? Se você usar Endereço VARCHAR (MAX), comentários VARCHAR (MAX), nome VARCHAR (MAX), alguém ou até mesmo você futuramente pode ter dificuldade para identificar o que deve realmente ser armazenado. Em um bloqueio/limitação do tamanho (qauntidade de caracteres a ser informada) deverá ser feita via software, o que poderá resultar em mais tempo de análise de impacto e etc.
Fonte: https://guilhermeferrera.wordpress.com/2013/04/02/sql-server-varcharmax-vs-varcharn/
Gabarito: A
VARCHAR(MAX)
Tamanho variável, podendo armazenar até 2^31-1 bytes de dados.
Podem ser usadas tanto na chave primária quanto na chave estrangeira.
Armazenadas ‘out of row' - Há um ponteiro para outro local onde o ‘valor grande’ está armazenado.
Detalhes:
https://learn.microsoft.com/pt-br/sql/t-sql/data-types/char-and-varchar-transact-sql?view=sql-server-ver16
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo