latin1支持中文吗?
mysqllatin1数据库支持中文编码。
ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。
ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。欧元符号出现的比较晚,没有被收录在ISO-8859-1当中。
MySQL数据库怎么让表名和字段名支持中文?
只要你创建数据库和数据表的时候指定它支持中文的字符集,也就是指定编码为DEFAULTCHARACTERSETgb2312;这样,希望对你有帮助
MySQL可以用中文字段名吗?
mysql支持中文表名和字段名,前提是设置好支持中文的字符集,例如gb2312例如:
--创建数据库时指定字符集gb2312createdatabasetest1DEFAULTCHARACTERSETgb2312;--转到刚创建的数据库usetest1;--创建中文数据表即中文字段createtable学生表(idintauto_incrementprimarykey,sidchar(10)uniquenotnull,姓名varchar(50)notnull,性别bit,生日date);
mysql不能识别中文怎么解决?
解决办法:
第一种,实际上是可以插入中文的,但是前提是重新插入内容才可以解码,你之前插入的无法读取成中文,所以你只需要把以前插入的都删除重新插入就可以了;
第二种,实际上mysql具体使用什么编码不仅仅是设置MYSQL,它是取决于你的php脚本所使用的编码,如果是这种情况,不知道你的文本编辑器使用的什么工具,它默认的编码应该是UTF-8,所以你插入到GBK编码的数据库中就是
mysql全文索引如何支持中文?
全文检索在MySQL里面很早就支持了,只不过一直以来只支持英文。缘由是他从来都使用空格来作为分词的分隔符,而对于中文来讲,显然用空格就不合适,需要针对中文语义进行分词。
这不,从MySQL5.7开始,MySQL内置了ngram全文检索插件,用来支持中文分词,并且对MyISAM和InnoDB引擎有效。
在使用中文检索分词插件ngram之前,先得在MySQL配置文件里面设置他的分词大小,比如,[mysqld]ngram_token_size2这里把分词大小设置为2。要记住,分词的SIZE越大,索引的体积就越大,所以要根据自身情况来设置合适的大小。示例表结构:
CREATETABLEarticles(idINTUNSIGNEDAUTO_INCREMENTNOTNULLPRIMARYKEY,titleVARCHAR(200),bodyTEXT,FULLTEXT(title,body)WITHPARSERngram)ENGINEInnoDBCHARACTERSETutf8mb4;示例数据,有6行记录。mysqlselect*fromarticlesG**************************
*1.row***************************id:1title:数据库管理body:在本教程中我将向你展示如何管理数据库***************************2.row***************************id:2title:数据库应用开发body:学习开发数据库应用程序***************************3.row***************************id:3title:MySQL完全手册body:学习MySQL的一切***************************4.row***************************id:4title:数据库与事务处理body:系统的学习数据库的事务概论***************************5.row***************************id:5title:NoSQL精髓body:学习了解各种非结构化数据库***************************6.row***************************id:6title:SQL语言详解body:详细了解如果使用各种SQL6rowsinset(0.00sec)显式指定全文检索表源mysqlSETGLOBALinnodb_ft_aux_tablenew_feature/articles;QueryOK,0rowsaffected(0.00sec)通过系统表,就可以查看到底是怎么划分articles里的数据。
mysqlSELECT*FROMinformation__FT_INDEX_CACHELIMIT20,10;--------------------------------------------------------------|WORD|FIRST_DOC_ID|LAST_DOC_ID|DOC_COUNT|DOC_ID|POSITION|--------------------------------------------------------------|中我|2|2|1|2|28||习m|4|4|1|4|21||习了|6|6|1|6|16||习开|3|3|1|3|25||习数|5|5|1|5|37||了解|6|7|2|6|19||了解|6|7|2|7|23||事务|5|5|1|5|12||事务|5|5|1|5|40||何管|2|2|1|2|52|--------------------------------------------------------------10rowsinset(0.00sec)这里可以看到,把分词长度设置为2,所有的数据都只有两个一组。上面数据还包含了行的位置,ID等等信息。
接下来,我来进行一系列检索示范,使用方法和原来英文检索一致。1.自然语言模式下检索:A,得到符合条件的个数,mysqlSELECTCOUNT(*)FROMarticles-WHEREMATCH(title,body)AGAINST(数据库INNATURALLANGUAGEMODE);----------|COUNT(*)|----------|4|----------1rowinset(0.05sec)B,得到匹配的比率,mysqlSELECTid,MATCH(title,body)AGAINST(数据库INNATURALLANGUAGEMODE)ASscoreFROMarticles;--------------------------|id|score|--------------------------|1|0.12403252720832825||2|0.12403252720832825||3|0||4|0.12403252720832825||5|0.062016263604164124||6|0|--------------------------6rowsinset(0.00sec)2.布尔模式下搜索,这个就相对于自然模式搜索来的复杂些:A,匹配既有管理又有数据库的记录,mysqlSELECT*FROMarticlesWHEREMATCH(title,body)-AGAINST(数据库管理INBOOLEANMODE);------------------------------------------------------|id|title|body|------------------------------------------------------|1|数据库管理|在本教程中我将向你展示如何管理数据库|------------------------------------------------------1rowinset(0.00sec)B,匹配有数据库,但是没有管理的记录,mysqlSELECT*FROMarticlesWHEREMATCH(title,body)-AGAINST(数据库-管理INBOOLEANMODE);--------------------------------------------------|id|title|body|--------------------------------------------------|2|数据库应用开发|学习开发数据库应用程序||4|数据库与事务处理|系统的学习数据库的事务概论||5|NoSQL精髓|学习了解各种非结构化数据库|--------------------------------------------------3rowsinset(0.00sec)C,匹配MySQL,但是把数据库的相关性降低,mysqlSELECT*FROMarticlesWHEREMATCH(title,body)-AGAINST(数据库MySQLINBOOLEANMODE);------------------------------------|id|title|body|------------------------------------|3|MySQL完全手册|学习MySQL的一切|------------------------------------1rowinset(0.00sec)3,查询扩展模式,比如要搜索数据库,那么MySQL,oracle,DB2也都将会被搜索到,mysqlSELECT*FROMarticles-WHEREMATCH(title,body)-AGAINST(数据库WITHQUERYEXPANSION);------------------------------------------------------------|id|title|body|------------------------------------------------------------|1|数据库管理|在本教程中我将向你展示如何管理数据库|4|数据库与事务处理|系统的学习数据库的事务概论|2|数据库应用开发|学习开发数据库应用程序||5|NoSQL精髓|学习了解各种非结构化数据库||6|SQL语言详解|详细了解如果使用各种SQL||3|MySQL完全手册|学习MySQL的一切|------------------------------------------------------------6rowsinset(0.01sec)当然,我这里只是功能演示,更多的性能测试,大家有兴趣可以进行详细测试。由于N-grm是中文检索常用的分词算法,已经在互联网大量使用,这次集成到mysql中,想必效果上不会有太大的问题。