Sql server 什么是';核对SQL拉丁语通用CP1 CI AS';做
我使用SQL查询在SQLServer中创建数据库,如下所示:Sql server 什么是';核对SQL拉丁语通用CP1 CI AS';做,sql-server,database,tsql,collation,Sql Server,Database,Tsql,Collation,我使用SQL查询在SQLServer中创建数据库,如下所示: 创建数据库数据库 在…上 (名称='yourdb_dat', 文件名='c:\program files\microsoft sql server\mssql.1\mssql\data\yourdbdat.mdf', 大小=25mb, 最大大小=1500mb, 文件增长=10mb) 登录 (名称='yourdb_log', 文件名='c:\program files\microsoft sql server\mssql.1\mssql
创建数据库数据库
在…上
(名称='yourdb_dat',
文件名='c:\program files\microsoft sql server\mssql.1\mssql\data\yourdbdat.mdf',
大小=25mb,
最大大小=1500mb,
文件增长=10mb)
登录
(名称='yourdb_log',
文件名='c:\program files\microsoft sql server\mssql.1\mssql\data\yourdblog.ldf',
大小=7mb,
最大大小=375mb,
文件增长=10mb)
核对SQL拉丁语通用CP1 CI AS;
去
它运行良好
虽然SQL的其余部分很清楚,但我对校对SQL\u拉丁1\u常规\u CP1\u CI\u AS
的功能相当困惑
谁能给我解释一下吗?另外,我想知道以这种方式创建数据库是否是最佳做法?COLLATE关键字指定用于字符串值的字符集和规则(顺序、对峙规则)的类型
例如,在本例中,您使用的拉丁语规则不区分大小写(CI)和区分重音(AS)
您可以参考此设置数据库服务器排序(比较文本片段)的方式。在这种情况下:
SQL_Latin1_General_CP1_CI_AS
分成有趣的部分:
latin1
使服务器使用字符集latin 1(基本上是ascii)处理字符串CP1
代表代码页1252CI
不区分大小写的比较,因此“ABC”等于“ABC”AS
区分重音,因此'u'不等于'u'p.S.有关详细信息,请确保。这指定了数据库的默认排序规则。除非指定不同的排序规则,否则在数据库表中创建的每个文本字段都将使用该排序规则 数据库始终具有默认排序规则。如果未指定任何排序规则,则使用SQL Server实例的默认排序规则 您使用的排序规则的名称显示它使用了Latin1代码页1,不区分大小写(CI)和重音(AS)。此排序规则在美国使用,因此它将包含在美国使用的排序规则
排序规则决定如何比较文本值的相等性和相似性,以及排序时如何进行比较。代码页用于存储非unicode数据,例如varchar字段。CP1表示“代码页1”-从技术上讲,这转换为代码页1252请注意,接受的答案有点不完整。是的,在最基本的级别上,排序规则处理排序。但是,所选排序规则定义的比较规则在用户查询用户数据之外的许多地方使用 如果“什么是
COLLATE SQL\u Latin1\u General\u CP1\u CI\u AS
do?”表示“创建数据库的COLLATE
子句做了什么?”,那么:
CREATE DATABASE
语句的COLLATE{collation\u name}
子句指定数据库的默认排序规则,而不是服务器;数据库级别和服务器级别的默认排序规则控制不同的内容
服务器(即实例)-级别控制:
- 系统数据库的数据库级排序:
、master
、model
和msdb
tempdb
- 由于控制
的数据库级排序规则,因此它是临时表(全局和本地)中字符串列的默认排序规则,而不是表变量tempdb
- 由于控制
的数据库级排序规则,因此它是用于服务器级数据的排序规则,例如数据库名称(即master
中的sys.databases
列)、登录名等name
- 参数/变量名称的处理
- 游标名称的处理
- 处理
标签GOTO
- 缺少
子句时,用于新创建数据库的默认排序规则COLLATE
- 用于新创建的字符串列的默认排序规则(
,CHAR
,VARCHAR
,NCHAR
,NVARCHAR
和TEXT
——但在列定义中缺少NTEXT
子句时,不要使用COLLATE
或TEXT
)。这适用于NTEXT
和CREATE TABLE
语句ALTER TABLE。。。添加
- 用于字符串文本(即
)和字符串变量(即'some text'
)的默认排序规则。此排序规则仅在将字符串和变量与其他字符串和变量进行比较时使用。将字符串/变量与列进行比较时,将使用列的排序规则@StringVariable
- 用于数据库级元数据的排序规则,例如对象名称(即
)、列名(即sys.objects
)、索引名称(即sys.columns
)等sys.indexes
- 用于数据库级对象的排序规则:表、列、索引等
- ASCII是一种8位编码(通常使用;从技术上讲,“ASCII”是7位,字符值为0-127,“ASCII扩展”是8位,字符值为0-255)。这一群体在不同文化中是相同的
- 代码页是扩展ASCII的“扩展”部分,控制哪些字符用于值128-255。这一群体因文化而异
并不意味着“ASCII”,因为标准ASCII只包含值0-127,所有代码页(可以在SQL Server中表示,甚至Latin1
)都将这些相同的128个值映射到相同的字符NVARCHAR
collatesql\u Latin1\u General\u CP1\u CI\u AS
do?”表示“这个特殊的排序规则做什么?”,那么:
- 由于该名称以
开头,因此这是一个SQL\uuu