Имам SQL заявка за създаване на базата данни в SQLServer, както е посочено по-долу:
create database yourdb
on
( name = "yourdb_dat",
filename = "c:program filesmicrosoft sql servermssql.1mssqldatayourdbdat.mdf",
size = 25mb,
maxsize = 1500mb,
filegrowth = 10mb )
log on
( name = "yourdb_log",
filename = "c:program filesmicrosoft sql servermssql.1mssqldatayourdblog.ldf",
size = 7mb,
maxsize = 375mb,
filegrowth = 10mb )
COLLATE SQL_Latin1_General_CP1_CI_AS;
go
Тя работи добре.
Докато останалата част от SQL е ясна, че съм доста объркан за функционалността на COLLATE SQL_Latin1_General_CP1_CI_AS
.
Може ли някой да ми обясни това? Също така бих искал да знам дали създаването на базата данни по този начин е добра практика?
Отговори:
174 за отговор № 1Той задава начина на сортиране на сървъра на базата данни. в такъв случай:
SQL_Latin1_General_CP1_CI_AS
разделя на интересни части:
latin1
прави сървър лекува струни използвайки charset latin 1, основно asciiCP1
щандове за кодова страница 1252CI
сравнителни данни без значение, така че "ABC" ще бъде равен на "abc"AS
чувствителен акцент, така че "ü" не е равен на
Послепис За по-подробна информация не забравяйте read @ solomon-rutzky 's answer.
22 за отговор № 2
CP1 означава "Код Page 1" - технически това означава код 1252
17 за отговор № 3
Моля, имайте предвид, че приетият отговор е малконепълна. Да, при най-основно ниво сортиране на дръжки. НО, правилата за сравнение, дефинирани от избраното сортиране, се използват на много места извън потребителските заявки срещу потребителски данни.
Най- COLLATE {collation_name}
клауза на CREATE DATABASE
изразът определя подредбата по подразбиране на База данни, и не сървърът; Колорации по подразбиране на ниво база данни и сървърно ниво контролират различни неща.
Ниво на сървъра (т.е. инстанция) контроли:
- Съпоставяне на ниво база данни за системни бази данни:
master
,model
,msdb
, иtempdb
. - Благодарение на контролирането на DB-ниво на сравняване
tempdb
, тогава то е подразбиращото се сортиране за колони от низове във временни таблици (глобални и локални), но не и таблични променливи. - Благодарение на контролирането на DB-ниво на сравняване
master
, тогава се използва Collation Сървър ниво данни, като имената на базата данни (т.е.name
колона вsys.databases
), Имена за вход и т.н. - Обработка на имена на параметри / променливи
- Обработка на имена на курсори
- Работа с
GOTO
етикети - Стандартно сортиране, използвано за новосъздадените бази данни, когато
COLLATE
липсва клауза
База данни на ниво контроли:
- Подреждане по подразбиране, използвано за новосъздадени колони с низове (
CHAR
,VARCHAR
,NCHAR
,NVARCHAR
,TEXT
, иNTEXT
- но не използвайтеTEXT
илиNTEXT
) когатоCOLLATE
клауза липсва в дефиницията на колоната. Това важи и за дветеCREATE TABLE
иALTER TABLE ... ADD
изявления. - Стандартно сортиране, използвано за литерали с низ (т.е.
"some text"
) и низови променливи (т.е.@StringVariable
). Тази подредба се използва само при сравняване на низове и променливи с други низове и променливи. Когато се сравняват низове / променливи с колони, ще се използва Съпоставянето на колоната. - Използваната за сортиране База данни на ниво мета-данни, като имена на обекти (т.е.
sys.objects
), имена на колони (т.е.sys.columns
), имена на индекси (т.е.sys.indexes
) и др. - Използваната за сортиране База данни на ниво обекти: таблици, колони, индекси и др.
Също:
- Сортиране, започващо с
SQL_
са старите (и определено остарели, дори ако не са официално отхвърлени) специфични за SQL Server Collations (създадени преди SQL Server да може да използва Collations на ниво OS). - Всички останали съпоставки са съпоставяне на Windows и трябва да бъдат използваните.
- ASCII е кодировка, която е 8-битова (за обичайна употреба; технически "ASCII" е 7-битов с символи 0 - 127, а "Extended ASCII" е 8-битов с символи 0 - 255)
Latin1
отнася се за културата / локал, който определя:- Страница с код за
CHAR
,VARCHAR
, иTEXT
данни (колони, литерали и променливи). Кодовата страница е "разширената" част на Extended ASCII и контролира кои символи се използват за стойности 128 - 255. - Правилата, по които знаците се сортират и сравняват. Това обхваща и двете
VARCHAR
иNVARCHAR
(т.е. Unicode) данни.
- Страница с код за
15 за отговор № 4
Най- сверявам ключова дума определя какъв тип набор от символи и правила (ред, правила за конфронтация), които използвате за низови стойности.
Например в случая използвате латински правила с нечувствителен към регистър (CI) и чувствителен акцент (КАТО)
Можете да се обърнете към това документация
8 за отговор № 5
Това указва подредбата по подразбиране за базата данни. Всяко текстово поле, което създавате в таблици в базата данни, ще използва това сортиране, освен ако не посочите друго.
Базата данни винаги има подреждане по подразбиране. Ако не посочвате, се използва подразбиращото се сортиране на потребителския модел на SQL Server.
Това се показва от името на подреждането, което използватеизползва код Latin1 код 1, не е чувствителен към регистър (CI) и акцент чувствителен (AS). Това съпоставяне се използва в САЩ, така че ще съдържа правила за сортиране, които се използват в САЩ.
Съпоставянето решава как се сравняват текстовите стойности за равенство и подобие и как те се сравняват при сортиране. Кодовата страница се използва, когато се съхраняват не-unicode данни, напр. Varchar полета.