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>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
>br>>
h5>Sobre o autor
Ver todas as minhas dicas