1.我装的是英文版,
对于默认的列的char字符型不是ASCII码吗?
是为什么还可以写汉字呢,
看你的排序规则,但也许还是select会乱码char型最多支持多少个汉字?
8000nchar与之区别?
nchar是放Unicode 字符数据最大4000如:
使用 Unicode 数据
Unicode 标准为全球商业领域中广泛使用的大部分字符定义了一个单一编码方案。所有的计算机都用单一的 Unicode 标准 Unicode 数据中的位模式一致地翻译成字符。这保证了同一个位模式在所有的计算机上总是转换成同一个字符。数据可以随意地从一个数据库或计算机传送到另一个数据库或计算机,而不用担心接收系统是否会错误地翻译位模式。对于用一个字节编码每个字符的数据类型,存在的问题之一就是此数据类型只能表示 256 个不同的字符。这就迫使对于不同的字母表(例如相对较小的欧洲字母表)采用多重编码规格(或者代码页)。而且也不可能处理象日文汉字或韩国文字这样具有数千个字符的字母表。每个 Microsoft® SQL Server™ 排序规则都有一个对表示 char、varchar 和 text 值中的每个字符定义位模式进行定义的代码页。可为个别的列和字符常量指派不同的代码页。客户端计算机使用与操作系统区域设置相关联的代码页解释字符位模式。有很多种不同的代码页。一些字符出现在某些代码页上,但并不出现在其它的代码页上。某些字符在一些代码页上用一个位模式定义,而在其它的代码页上却用另一个位模式定义。当您设计必须处理不同语言的国际性系统时,为了满足不同国家/地区的语言需求,给所有的计算机挑选代码页就变得困难了。要保证每一台计算机与使用不同代码页的系统交互时都进行正确的翻译也是困难的。Unicode 规格通过采用两个字节编码每个字符使这个问题迎刃而解。转换最通用商业语言的单一规格具有足够多的 2 字节的模式 (65,536)。因为所有的 Unicode 系统均一致地采用同样的位模式来代表所有的字符,所以当从一个系统转到另一个系统时,将不会存在未正确转换字符的问题。通过在整个系统中使用 Unicode 数据类型,可尽量减少字符转换问题。在 Microsoft SQL Server 中,以下数据类型支持 Unicode 数据: nchar
nvarchar
ntext 
说明  这些数据类型的前缀 n 来自 SQL-92 标准中的 National(Unicode)数据类型。nchar、nvarchar 和 ntext 的用法分别与 char、varchar 和 text 的用法一样,但在以下方面不同: Unicode支持的字符范围更大。
存储 Unicode 字符所需要的空间更大。
nchar 和 nvarchar 列最多可以有 4,000 个字符,而不象 char 和 varchar 字符那样可以有 8,000 个字符。
Unicode 常量使用 N 开头来指定:N'A Unicode string'。
所有 Unicode 数据都使用相同的 Unicode 代码页。排序规则不控制用于 Unicode 列的代码页,仅控制比较规则和是否区分大小写等特性。

解决方案 »

  1.   

    2.新建了几个表之后,这几个表之间存在一对一或一对多关系,给这些表建立关系表(diagram)建立关系是不是必须的?
    一对一不需要
    一对多不需要
    多对多必须要给它们建立关系有什么作用呢?
    数据的完整性
      

  2.   

    举例:1、
    create database mmm
    go
    use mmm
    go
    ALTER DATABASE mmm COLLATE Latin1_General_Ci_Ai
    go
    create table test (a nvarchar(100),varchar(100))
    go
    insert test values(N'大力','大力')
    go
    select * from test where a=N'大力'
    select * from test where a='大力' --没有数据显示2、
    Create database cat
    go
    use cat
    go
    CREATE TABLE s(s# int not null primary key,s_name varchar(8) not null)
    go
    CREATE TABLE c (c# int not null primary key,c_name varchar(8) not null)
    go
    CREATE TABLE cs(c# int not null,s# int not null,cj tinyint not null default(0),
    primary key (c#,s#),foreign key(s#) references s(s#),foreign key(c#) references c(c#))
    go
    insert s values(1,'saa')
    insert c values(1,'caa')--这句是对的
    insert cs values(1,1,86)--这句是错的,sql会报错,应为s表的s#列里没有2
    insert cs vlaues(2,1,45)
      

  3.   

    同意pengdali(大力 V3.0)的说法。
      

  4.   

    一般保存不会有什么问题.查询的时候可能会乱码.用nchar保存就没问题.nchar是以unicode编码保存数据,第个字符用两个字节存放,这样就避免了乱码的问题.