Diferenças do SQL Server de tipos de dados char, nchar, varchar e nvarchar

Por Sherlee Dizon | Actualizado: 2016-06-14 | Comentários (4) | Relacionados: 1 | 2 | 3 | Mais > Tipos de dados

br>>h5>Problema

As diferenças de char, nchar, varchar e nvarchar do SQL Server são frequentemente discutidas não só durante as entrevistas, mas também pelos programadores durante as discussões sobre a concepção da base de dados. Nesta dica, gostaria de partilhar não só as diferenças básicas, mas também o que precisamos de saber e estar atentos quando usamos cada tipo de dados.

Solução

Char, nchar, varchar e nvarchar são todos utilizados para armazenar dados de texto ou string em bases de dados do servidorSQL.

  • char – é o sinónimo de caracteres SQL-92. Os dados são preenchidos com espaços em branco/espaços para preencher o tamanho do campo. Tipo de dados de comprimento fixo.
  • nchar – é o sinónimo de SQL-92 para char nacional e carácter nacional. Tipo de dados de comprimento fixo.
  • varchar – é o sinónimo de SQL-92 para caracteres variáveis. Tipo de dados de comprimento variável.
  • nvarchar – é o sinónimo SQL-92 para a variação de caracteres nacionais e de caracteres nacionais. Tipo de dados de comprimento variável.

O que significa N no SQL Server

P>Pode perguntar-se o que significa o N? N significa Conjunto de caracteres de língua nacional e é utilizado para especificar uma cadeia de caracteres Unicode. Ao utilizar tipos de dadosUnicode, uma coluna pode armazenar qualquer caracter definido pelo Unicode Standard,que inclui todos os caracteres definidos nos vários conjuntos de caracteres. Note-se que os tipos de dados Unicode ocupam o dobro do espaço de armazenamento que os tipos de dados não Unicode.

Unicode é tipicamente utilizado em aplicações de base de dados que são concebidas para facilitar páginas de código que se estendem para além das páginas de código inglesas e da Europa Ocidental. Isto significa que os tipos de dados de caracteres Unicode são limitados a metade do espaço, porque cada byte leva realmente dois bytes para armazenar os dados (Unicode é por vezes referido como “largura dupla”). O SQL Server tem suportado Unicode desde SQL Server7.0, fornecendo tipos de dados nchar/nvarchar/ntext. O SQL Server não suporta a codificaçãoUTF-8 para dados Unicode, mas suporta a codificaçãoUTF-16.

p>Fiz uma tabela abaixo que servirá como uma referência rápida.

Diferenças de char, nchar, varchar e nvarchar no SQL Server

th>nchar th>varchar

até 2 bytes por caractere Unicode/Non-Unicodeaté 1 byte por caractereaté 2 bytes por caractere Unicode/Non-Unicodeaté 1 byte por caractereaté 2 bytes por caractere Unicode/Non-Caractere unicode

>query que usa um parâmetro varchar procura um índice devido a conjuntos de columncollation

th>char nvarchar
Caracter Data Type Non-Unicode comprimento fixo Unicode comprimento fixo pode armazenar tanto caracteres não Unicode como Unicode(i.e. Japonês, Coreano, etc.) Non-Unicode comprimento variável Unicode comprimento variável pode armazenar tanto caracteres não-Unicode como Unicode(i.e. Japonês, Coreano, etc.))
Comprimento máximo até 8.000 caracteres até 4.000 caracteres até 8.000 caracteres até 4,000 caracteres
Tamanho do caractere
Tamanho do armazenamento n bytes 2 vezes n bytes Comprimento real (em bytes) 2 vezes Comprimento real (em bytes)
Utilização utilização quando o comprimento dos dados é constante ou colunas de comprimento fixo use apenas se necessitar de suporte Unicode como os caracteres japoneses Kanji ou KoreanHangul devido à sobrecarga de armazenamento utilizado quando o comprimento dos dados é variável ou colunas de comprimento variável e ifactual os dados são sempre muito inferiores à capacidade utilização apenas se necessitar de suporte Unicode, como os caracteres japoneses Kanji ou KoreanHangul devido à sobrecarga de armazenamento
/td> query que usa um parâmetro nvarchar faz um scan de índice devido a conjuntos de columncollation

Vantagens e Desvantagens do char, nchar, varchar e nvarchar em SQLServer

Tipos de dados Vantagens Desvantagens
char Desempenho da coluna é melhor, uma vez que não há necessidade de mover a coluna enquanto se actualiza.
Não há necessidade de armazenar o comprimento do cordel nos dois últimos bytes.
Se não for devidamente utilizado, pode ocupar mais espaço do que varchar, uma vez que é comprimento fixo e não sabemos o comprimento da corda a armazenar. Não é bom para compressão uma vez que incorpora caracteres de espaço no final.
varchar Desde que seja comprimento variável, ocupa menos espaços de memória. Diminui o desempenho de algumas consultas SQL.
nchar/nvarchar Suporta muitos computadores clientes que estão a correr diferentes locais. Se não for devidamente utilizado, pode utilizar muito espaço de armazenamento extra.

Com o crescimento e inovação das aplicações web, é ainda mais importante suportar computadores clientes que estão a correr locais diferentes. A forma mais fácil de gerir dados de caracteres em bases de dados internacionais é utilizar sempre os tipos de dados Unicodenchar, nvarchar, e ntext, em vez dos seus equivalentes não-Unicode, char, varchar, e texto.

Unicode é um padrão para o mapeamento de pontos de código para caracteres. Como foi concebido para cobrir todos os caracteres de todas as línguas do mundo, não há necessidade de páginas de código diferentes para lidar com diferentes conjuntos de caracteres. O SQL Server suporta o Unicode Standard, Versão 3.2. Se todas as aplicações que funcionam com bases de dados internacionais também utilizam variáveis Unicode em vez de variáveis não-Unicode, as traduções de caracteres não têm de ser realizadas em qualquer parte do sistema. Os clientes verão os mesmos caracteres nos dados que todos os outros clientes.

SQL Server armazena todos os dados do catálogo do sistema textual em colunas com dados Unicode. Os nomes dos objectos da base de dados, tais como tabelas, vistas, e procedimentos armazenados, são armazenados em colunas Unicode. Isto permite que as aplicações sejam desenvolvidas utilizando apenas Unicode, e ajuda a evitar problemas com conversões de páginas de código.

Remembrar ao desenvolver novas aplicações para considerar se serão utilizadas globalmente, porque isto ajudará a determinar se se deve utilizar nchar e nvarchar para apoiar línguas diferentes.

Passos seguintes

Aprenda mais lendo e explorando o seguinte:

  • Tem tempo para ler também esta dica que poderá ajudá-lo no planeamento da sua base de dadosDefinir tipos e tamanhos de dados
  • Saiba mais sobre a importância da consistência do tipo de dadosConsistência do tipo de dados do servidorSQL
  • Comparar os tipos de dados do servidor SQL e Oracle
  • Se tiver uma aplicação que planeia levar a cabo globalmente, tente explorar com caracteres globais. Quem sabe se tiver sucesso poderá aumentar as suas vendas e levar as suas aplicações para o próximo nível.

Lest Updated: 2016-06-14

get scripts

>br>>

next tip buttonbotão da próxima dica

h5>Sobre o autor

Sherlee Dizon, autora de dicas Sherlee DizonSherlee Dizon é uma consultora de TI e desenvolvedora de aplicações web com mais de 14 anos de experiência como desenvolvedora de software e web.
Ver todas as minhas dicas

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *