MSSQL网页编程之字符集成绩的开端切磋(二)
支持多种存储引擎。成绩字符集成绩的开端切磋(二)
--数据库的字符集
Saturday,2004-09-1111:38Eygle
原文宣布于itpub手艺丛书《Oracle数据库DBA专题手艺精炼》,未经允许,严禁转载本文.
原文链接:
http://www.eygle.com/special/NLS_CHARACTER_SET_02.htm
2.数据库的字符集
字符集在创立数据库时指定,在创立后一般不克不及变动,以是在创立数据库时可否选择一个准确的字符集就显得尤其主要。
在创立数据库时,我们能够指定字符集(CHARACTERSET)和国度字符集(NATIONALCHARACTERSET)。
字符集用来存储:
CHAR,VARCHAR2,CLOB,LONG等范例数据
用来标示诸如表名、列名和PL/SQL变量等
SQL和PL/SQL程序单位等
国度字符集用以存储:
NCHAR,NVARCHAR2,NCLOB等范例数据
这些设置在数据库创立时指定,我们能够看一下数据库的创立剧本:
connectSYS/change_on_installasSYSDBA
setechoon
spoolE:oracleora92assistantsdbcalogsCreateDB.log
startupnomountpfile="E:oracleadmineyglecriptsinit.ora";
CREATEDATABASEeygle
MAXINSTANCES1
MAXLOGHISTORY1
MAXLOGFILES5
MAXLOGMEMBERS3
MAXDATAFILES100
DATAFILEE:oracleoradataeygleystem01.dbfSIZE250MREUSEAUTOEXTENDONNEXT10240KMAXSIZEUNLIMITED
EXTENTMANAGEMENTLOCAL
DEFAULTTEMPORARYTABLESPACETEMPTEMPFILEE:oracleoradataeygle emp01.dbfSIZE40MREUSEAUTOEXTEND
ONNEXT640KMAXSIZEUNLIMITED
UNDOTABLESPACE"UNDOTBS1"DATAFILEE:oracleoradataeygleundotbs01.dbfSIZE50MREUSEAUTOEXTEND
ONNEXT5120KMAXSIZEUNLIMITED
CHARACTERSETZHS16GBK
NATIONALCHARACTERSETAL16UTF16
LOGFILEGROUP1(E:oracleoradataeygleedo01.log)SIZE10M,
GROUP2(E:oracleoradataeygleedo02.log)SIZE10M,
GROUP3(E:oracleoradataeygleedo03.log)SIZE10M;
spooloff
exit;
以上用粗体显现的就是对我们相当主要的字符集设置。
在创立数据库的过程当中,在以下界面选择你的字符集,关于简体中文平台,缺省的字符集是:ZHS16GBK
一旦你的字符集选定了,数据库中可以存储的字符就遭到了限定,以是你选择的字符集的应当能够包容一切你将用到字符。
罕见的中笔墨符集有:
ZHS16CGB231280CGB2312-8016-bitSimplifiedChineseMB,ASCII
ZHS16GBKGBK16-bitSimplifiedChineseMB,ASCII,UDC
个中GB2312码是中华国民共和国国度汉字信息互换用编码,全称《信息互换用汉字编码字符集--基础集》,由国度尺度总局公布,
1981年5月1日实行,通行于年夜陆。新加坡等地也利用此编码。
GBK编码是1995年12月公布的引导性标准。
GBK与国度尺度GB2312-80信息处置互换码所对应的、现实上的内码尺度兼容;同时,在字汇一级撑持ISO/IEC10646-1和
GB13000-1的全体中日韩(CJK)汉字(20902字)。包括了更多的编码。
可是我们说,ZHS16GBK并不是是ZHS16CGB231280的严厉超集(固然后者的汉字在前者中都存在,可是一样的编码在分歧两个
字符会合大概表达分歧的汉字),以是在做数据库字符转换时仍旧必要出格注重。
Oracle的字符集定名遵守以下定名划定规矩:
<Language><bitsize><encoding>
即:<言语><比特位数><编码>
好比:ZHS·16·GBK
必要申明的是,有些字符集定名违反了这个标准,Oracle8/Oralce8i中的UTF-8是第一个冲破这个定名标准的字符集。
我们能够看到一类字符集以AL开首,如:
AL16UTF16
个中AL代表ALL,指合用于一切言语(AllLanguages),依照这个尺度昔时UTF-8本应被定名为AL24UTF8。
上面我们说了DML的闪回方案。但对于DDL却无能为力,对于大多数的DDL,即使是rowbase格式,二进制日志binlog中仍只记录语句本身。对于删表操作,只记录一个语句droptablet。仅凭这句话,无法还原表的数据。 比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。 其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。 再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。 无法深入到数据库系统层面去了解和探究 比如日志传送、比如集群。。。 比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。 现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层. XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
页:
[1]