安装MySql提示不含ASCII怎么办

安装MySql提示不含ASCII怎么办,第1张

mysqlworkbench这个也是免安装的?

根据提示上说是缺少字符集,可能性1,确实缺少文件;2,安装路径是中文,程序不支持中文路径;3,免安装有问题。

解决方法:1,上官网下载安装。

2,换英文路径。

MySQL包含了一些可能在其他SQL数据库找不到的扩充 要注意如果你使用他们 你的代码将不与其他SQL服务器兼容 在一些情况下 你可以编写包括MySQL扩展的代码 但是仍然是可移植的 通过使用/! /形式的注释 在这种情况下 MySQL将进行词法分析并且执行在注释内的代码 好像它是任何其它MySQL语句 但是其他SQL服务器将忽略扩展 例如 SELECT /! STRAIGHT_JOIN / col_name FROM table table WHERE 如果你在 ! 后增加一个版本数字 该语法将仅在MySQL版本是等于或比使用的版本数字新时才执行 CREATE /! TEMPORARY / TABLE (a int);上面的意思是如果你有 或更新 那么MySQL将使用TEMPORARY关键词 MySQL扩展被列在下面 字段类型MEDIUMINT SET ENUM和不同的BLOB和TEXT类型 字段属性AUTO_INCREMENT BINARY UNSIGNED和ZEROFILL 缺省地 所有的字符串比较是忽略大小写的 由当前的字符集决定了(缺省为ISO Latin )排序顺序 如果你不喜欢这样 你应该用BINARY属性或使用BINARY强制符声明列 它导致根据MySQL服务器主机的ASCII顺序进行排序 MySQL将每个数据库映射一个MySQL数据目录下面的目录 将数据库表映射到数据库目录下的数据库文件名 这有 个含意 在区分大小写文件名的 *** 作系统(象大多数 Unix 系统一样)上的MySQL中数据库名字和表名是区分大小写的 如果你有困难记得表名 接受一个一致的约定 例如总是用小写名字创建数据库和表 数据库 表 索引 列或别名可以以数字开始(但是不能仅由数字组成) 你可以使用标准的系统命令备份 重命名 移动 删除和拷贝表 例如 重命名一个表 重命名 MYD MYI 和 frm 文件为相应的表 在SQL语句中 你可以用db_name tbl_name语法访问不同数据库中的表 一些SQL服务器提供同样的功能但是称它们为这User space(用户空间) MySQL不支持类似在create table ralph my_table IN my_tablespace中的表空间 LIKE在数字列上被允许 在一SELECT语句里面使用INTO OUTFILE和STRAIGHT_JOIN 见 SELECT句法 在一个SELECT语句中SQL_SMALL_RESULT选项 EXPLAIN SELECT得到如何联结表的描述 在一个CREATE TABLE语句里面使用索引 在字段前缀上的索引和使用INDEX或KEY 见 CREATE TABLE 句法 CREATE TABLE使用TEMPORARY或IF NOT EXISTS 使用COUNT(DISTINCT list) 这里 list 超过一个元素 在一个ALTER TABLE语句里面使用CHANGE col_name DROP col_name或DROP INDEX 见 ALTER TABLE句法 在一个ALTER TABLE里面语句使用IGNORE 在一个ALTER TABLE语句中使用多重ADD ALTER DROP或CHANGE子句 使用带关键词IF EXISTS的DROP TABLE 你能用单个DROP TABLE语句抛弃多个表 DELETE语句的LIMIT子句 INSERT和REPLACE语句的DELAYED子句 INSERT REPLACE DELETE和UPDATE语句的LOW_PRIORITY子句 使用LOAD DATA INFILE 在多数情况下 这句法与Oracle的LOAD DATA INFILE兼容 见 LOAD DATA INFILE 句法 OPTIMIZE TABLE语句 SHOW语句 见 SHOW句法(得到表 列等的信息) 字符串可以被 或 包围 而不只是 使用 \ 转义字符 SET OPTION语句 见 SET OPTION句法 你不需要命名所有在GROUP BY部分的被选择的列 这为一些很特定的情况给出更好的性能 而不是一般的查询 为了方便来自于SQL环境其他为用户 MySQL对许多函数支持别名 例如 所有的字符串功能都支持ANSI SQL句法和 ODBC句法 MySQL理解||和&&意味着逻辑的OR和AND 就像在C程序语言中 在MySQL中 ||和OR是同义词 &&和AND是同义词 正因为这个好的句法 MySQL对字符串并置的不支持ANSI SQL || *** 作符 相反使用CONCAT() 因为CONCAT()接受任何数量的参数 很容易把|| *** 作符使用变换到MySQL CREATE DATABASE或DROP DATABASE 见 CREATE DATABASE句法 % *** 作符是MOD()一个同义词 即 N % M等价于MOD(N M) %支持C程序员并与PostgreSQL兼容 = <> <=,<, >=,> <<, >> <=> AND OR或LIKE *** 作符可以放在SELECT语句的FROM左边用于比较列 例如 mysql> SELECT col = AND col = FROM tbl_name;LAST_INSERT_ID()函数 见 mysql_insert_id() 扩展的正则表达式 *** 作符REGEXP和NOT REGEXP CONCAT()或CHAR()有一个参数或超过 个参数 (在MySQL中 这些函数可取任何数量的参数 )BIT_COUNT() CASE ELT() FROM_DAYS() FORMAT() IF() PASSWORD() ENCRYPT() md () ENCODE() DECODE() PERIOD_ADD() PERIOD_DIFF() TO_DAYS() 或WEEKDAY()函数 使用TRIM()整修子串 ANSI SQL 只支持单个字符的删除 GROUP BY函数STD() BIT_OR()和BIT_AND() 使用REPLACE而不是DELETE+INSERT 见 REPLACE句法 FLUSH flush_option语句 在一个语句用:=设置变量的可能性 SELECT @a:=SUM(total) @b=COUNT() @a/@b AS avg FROM test_table;SELECT @t :=(@t := )+@t := @t @t @t ; 以ANSI模式运行MySQL 如果你用 ansi选项启动mysqld MySQL的下列行为改变 ||是字符串并置而不是OR 可在一个函数名字之间与 ( 有任何数量的空格 这也使所有的功能名字成为保留词 将是一个标识符引号字符(象MySQL `引号字符一样)而不是一个字符串引号字符 REAL将是FLOAT一个同义词 不是DOUBLE一个同义词 MySQL相比ANSI SQL 的差别我们尝试使得MySQL遵照ANSI SQL标准和ODBC SQL标准 但是在一些情况下 MySQL做一些不同的事情 只是一个注释 如果后面跟一个白空字符 ` 作为一个注释的开始 对于VARCHAR列 当值被存储时 拖后的空格被删除 见E MySQL已知的错误和设计缺限 在一些情况下 CHAR列偷偷地被改变为VARCHAR列 平静的列指定变化 当你删除一个表时 对表的权限不自动地废除 你必须明确地发出一个REVOKE来废除对一个表的权限 见 GRANT和REVOKE句法 MySQL缺乏的功能 下列功能在当前的MySQL版本是没有的 对于一张优先级表指出何时新扩展可以加入MySQL 你应该咨询在线MySQL TODO 表 这是本手册最新的TODO表版本 见F 我们想要在未来加入到MySQL的事情列表(TODO) 子选择 在MySQL中下列语句还不能工作 SELECT FROM table WHERE id IN (SELECT id FROM table );SELECT FROM table WHERE id NOT IN (SELECT id FROM table );然而 在很多情况下 你可以重写查询 而不用子选择 SELECT table FROM table table WHERE table id=table id;SELECT table FROM table LEFT JOIN table ON table id=table id where table id IS NULL对于更复杂的子查询 通常你可以创建临时的表保存子查询 然而在一些情况下 这种选择将行不通 最经常遇到的情形是DELETE语句 对于它标准SQL不支持联结(join)(除了在子选择) 对于这种情况 有 个可用选择 直到子选择被MySQL支持 第一个选择是使用一种过程化的程序语言(例如Perl或PHP)来提交一个SELECT查询获得要被删除记录主键 并然后使用这些值构造DELETE语句(DELETE FROM WHERE IN (key key )) 第二个选择是使用交互式SQL自动构造一套DELETE语句 使用MySQL扩展CONCAT()(代替标准|| *** 作符) 例如 SELECT CONCAT( DELETE FROM tab WHERE pkid = tab pkid ; )FROM tab tab WHERE l = l ;你可以把这个查询放在一个脚本文件并且从它重定向输入到mysql命令行解释器 将其输出作为管道返回给解释器的第 个实例 prompt> mysql skip column names mydb < myscript sql | mysql mydbMySQL仅支持INSERT SELECT 和REPLACE SELECT 独立的子选择将可能在 得到 然而 在其他环境下 你现在可以使用函数IN() SELECT INTO TABLEMySQL还不支持Oracle SQL的扩展 SELECT INTO TABLE 相反MySQL支持ANSI SQL句法INSERT INTO SELECT 基本上他们是一样的 另外 你可使用SELECT INTO OUTFILE 或CREATE TABLE SELECT解决你的问题 事务处理 不支持事务处理 MySQL将在短时间内支持原子(atomic) *** 作 它象没有回卷的事务 用原子 *** 作 你能执行一组INSERT/SELECT/whatever 命令并且保证没有其他线程介入 在本文中 你通常不会需要回卷 目前 你可通过使用LOCK TABLES和UNLOCK TABLES命令阻止其他线程的干扰 见 LOCK TABLES/UNLOCK TABLES句法 存储过程和触发器 一个存储过程是能在服务器中编译并存储的一套SQL命令 一旦这样做了 顾客不需要一直重新发出全部查询 而可以参考存储过程 因为查询仅需一次词法分析并且较少的信息需要在服务器和客户之间传送 因此这提供了更好的性能 你与可以通过拥有在服务器中的函数库提升概念上的层次 lishixinzhi/Article/program/MySQL/201311/29423

个人观点:由于MYSQL没有模式匹配,不支持正则表达式,字符串处理功能完全不能和PHP相比。一般的数据库只要支持REPLACE、SUBSTR(或者EXCEL的LETT、RIGHT、MID)基本上就够用了,不过MYSQL的字符串函数确实非常丰富(其实MYSQL的日期处理函数也很丰富),有下面这些:ASCII(str)返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。ORD(str)如果字符串str最左面字符是一个多字节字符,通过以格式((firstbyteASCIIcode)256+(secondbyteASCIIcode))[256+thirdbyteASCIIcode]返回字符的ASCII代码值来返回多字节字符代码。如果最左面的字符不是一个多字节字符。返回与ASCII()函数返回的相同值。CONV(N,from_base,to_base)在不同的数字基之间变换数字。返回数字N的字符串数字,从from_base基变换为to_base基,如果任何参数是NULL,返回NULL。参数N解释为一个整数,但是可以指定为一个整数或一个字符串。最小基是2且最大的基是36。如果to_base是一个负数,N被认为是一个有符号数,否则,N被当作无符号数。CONV以64位点精度工作。BIN(N)返回二进制值N的一个字符串表示,在此N是一个长整数(BIGINT)数字,这等价于CONV(N,10,2)。如果N是NULL,返回NULL。OCT(N)返回八进制值N的一个字符串的表示,在此N是一个长整型数字,这等价于CONV(N,10,8)。如果N是NULL,返回NULL。HEX(N)返回十六进制值N一个字符串的表示,在此N是一个长整型(BIGINT)数字,这等价于CONV(N,10,16)。如果N是NULL,返回NULL。CHAR(N,)CHAR()将参数解释为整数并且返回由这些整数的ASCII代码字符组成的一个字符串。NULL值被跳过。CONCAT(str1,str2,)返回来自于参数连结的字符串。如果任何参数是NULL,返回NULL。可以有超过2个的参数。一个数字参数被变换为等价的字符串形式。LENGTH(str)OCTET_LENGTH(str)CHAR_LENGTH(str)CHARACTER_LENGTH(str)返回字符串str的长度。LOCATE(substr,str)POSITION(substrINstr)返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0LOCATE(substr,str,pos)返回子串substr在字符串str第一个出现的位置,从位置pos开始。如果substr不是在str里面,返回0。INSTR(str,substr)返回子串substr在字符串str中的第一个出现的位置。这与有2个参数形式的LOCATE()相同,除了参数被颠倒。LPAD(str,len,padstr)返回字符串str,左面用字符串padstr填补直到str是len个字符长。RPAD(str,len,padstr)返回字符串str,右面用字符串padstr填补直到str是len个字符长。LEFT(str,len)返回字符串str的最左面len个字符。RIGHT(str,len)返回字符串str的最右面len个字符。SUBSTRING(str,pos,len)SUBSTRING(strFROMposFORlen)MID(str,pos,len)从字符串str返回一个len个字符的子串,从位置pos开始。使用FROM的变种形式是ANSISQL92语法。SUBSTRING(str,pos)SUBSTRING(strFROMpos)从字符串str的起始位置pos返回一个子串。SUBSTRING_INDEX(str,delim,count)返回从字符串str的第count个出现的分隔符delim之后的子串。如果count是正数,返回最后的分隔符到左边(从左边数)的所有字符。如果count是负数,返回最后的分隔符到右边的所有字符(从右边数)。LTRIM(str)返回删除了其前置空格字符的字符串str。RTRIM(str)返回删除了其拖后空格字符的字符串str。TRIM([[BOTH|LEADING|TRAILING][remstr]FROM]str)返回字符串str,其所有remstr前缀或后缀被删除了。如果没有修饰符BOTH、LEADING或TRAILING给出,BOTH被假定。如果remstr没被指定,空格被删除。SOUNDEX(str)返回str的一个同音字符串。听起来“大致相同”的2个字符串应该有相同的同音字符串。一个“标准”的同音字符串长是4个字符,但是SOUNDEX()函数返回一个任意长的字符串。你可以在结果上使用SUBSTRING()得到一个“标准”的同音串。所有非数字字母字符在给定的字符串中被忽略。所有在A-Z之外的字符国际字母被当作元音。SPACE(N)返回由N个空格字符组成的一个字符串。REPLACE(str,from_str,to_str)返回字符串str,其字符串from_str的所有出现由字符串to_str代替。REPEAT(str,count)返回由重复countTimes次的字符串str组成的一个字符串。如果countSELECT1+"1";->2mysql>SELECTCONCAT(2,'test');->'2test'如果你想要明确地变换一个数字到一个字符串,把它作为参数传递到CONCAT()。如果字符串函数提供一个二进制字符串作为参数,结果字符串也是一个二进制字符串。被变换到一个字符串的数字被当作是一个二进制字符串。这仅影响比较。补充:我都全部列举完毕了,还继续什么呀,你有补充吗?

MySQL包含了一些可能在其他SQL数据库找不到的扩充 要注意如果你使用他们 你的代码把不与其他SQL服务器兼容 在一些情况下 你可以编写包括MySQL扩展的代码 但是仍然是可移植的 通过使用/! /形式的注释 在这种情况下 MySQL把进行词法分析并且执行在注释内的代码 好像它是任何其它MySQL语句 但是其他SQL服务器把忽略扩展 例如 SELECT /! STRAIGHT_JOIN / col_name FROM table table WHERE 如果你在 ! 后增加一个版本数字 该语法把仅在MySQL版本是等于或比使用的版本数字新时才执行 CREATE /! TEMPORARY / TABLE (a int);上面的意思是如果你有 或更新 那么MySQL把使用TEMPORARY关键词 MySQL扩展被列在下面 字段类型MEDIUMINT SET ENUM和不同的BLOB和TEXT类型 字段属性AUTO_INCREMENT BINARY UNSIGNED和ZEROFILL 缺省地 所有的字符串比较是忽略大小写的 由当前的字符集决定了(缺省为ISO Latin )排序顺序 如果你不喜欢这样 你应该用BINARY属性或使用BINARY强制符声明列 它导致根据MySQL服务器主机的ASCII顺序进行排序 MySQL把每个数据库映射一个MySQL数据目录下面的目录 把数据库表映射到数据库目录下的数据库文件名 这有 个含意 在区分大小写文件名的 *** 作系统(象大多数 Unix 系统一样)上的MySQL中数据库名字和表名是区分大小写的 如果你有困难记得表名 接受一个一致的约定 例如总是用小写名字创建数据库和表 数据库 表 索引 列或别名可以以数字开始(但是不能仅由数字组成) 你可以使用标准的系统命令备份 重命名 移动 删除和拷贝表 例如 重命名一个表 重命名 MYD MYI 和 frm 文件为相应的表 在SQL语句中 你可以用db_name tbl_name语法访问不同数据库中的表 一些SQL服务器提供同样的功能但是称它们为这User space(用户空间) MySQL不支持类似在create table ralph my_table IN my_tablespace中的表空间 LIKE在数字列上被允许 在一SELECT语句里面使用INTO OUTFILE和STRAIGHT_JOIN 见 SELECT句法 在一个SELECT语句中SQL_SMALL_RESULT选项 EXPLAIN SELECT得到怎么样联结表的描述 在一个CREATE TABLE语句里面使用索引 在字段前缀上的索引和使用INDEX或KEY 见 CREATE TABLE 句法 CREATE TABLE使用TEMPORARY或IF NOT EXISTS 使用COUNT(DISTINCT list) 这里 list 超过一个元素 在一个ALTER TABLE语句里面使用CHANGE col_name DROP col_name或DROP INDEX 见 ALTER TABLE句法 在一个ALTER TABLE里面语句使用IGNORE 在一个ALTER TABLE语句中使用多重ADD ALTER DROP或CHANGE子句 使用带关键词IF EXISTS的DROP TABLE 你能用单个DROP TABLE语句抛弃多个表 DELETE语句的LIMIT子句 INSERT和REPLACE语句的DELAYED子句 INSERT REPLACE DELETE和UPDATE语句的LOW_PRIORITY子句 使用LOAD DATA INFILE 在多数情况下 这句法与Oracle的LOAD DATA INFILE兼容 见 LOAD DATA INFILE 句法 OPTIMIZE TABLE语句 SHOW语句 见 SHOW句法(得到表 列等的信息) 字符串可以被 或 包围 而不只是 使用 \ 转义字符 SET OPTION语句 见 SET OPTION句法 你不需要命名所有在GROUP BY部分的被选择的列 这为一些很特定的情况给出更好的性能 而不是一般的查询 为了方便来自于SQL环境其他为用户 MySQL对许多函数支持别名 例如 所有的字符串功能都支持ANSI SQL句法和 ODBC句法 MySQL理解||和&&意味着逻辑的OR和AND 就像在C程序语言中 在MySQL中 ||和OR是同义词 &&和AND是同义词 正因为这个好的句法 MySQL对字符串并置的不支持ANSI SQL || *** 作符 相反使用CONCAT() 因为CONCAT()接受任何数量的参数 很容易把|| *** 作符使用变换到MySQL CREATE DATABASE或DROP DATABASE 见 CREATE DATABASE句法 % *** 作符是MOD()一个同义词 即 N % M等价于MOD(N M) %支持C程序员并与PostgreSQL兼容 = <> <= < >= > << >> <=> AND OR或LIKE *** 作符可以放在SELECT语句的FROM左边用于比较列 例如 mysql> SELECT col = AND col = FROM tbl_name;LAST_INSERT_ID()函数 见 mysql_insert_id() 扩展的正则表达式 *** 作符REGEXP和NOT REGEXP CONCAT()或CHAR()有一个参数或超过 个参数 (在MySQL中 这些函数可取任何数量的参数 )BIT_COUNT() CASE ELT() FROM_DAYS() FORMAT() IF() PASSWORD() ENCRYPT() md () ENCODE() DECODE() PERIOD_ADD() PERIOD_DIFF() TO_DAYS() 或WEEKDAY()函数 使用TRIM()整修子串 ANSI SQL 只支持单个字符的删除 GROUP BY函数STD() BIT_OR()和BIT_AND() 使用REPLACE而不是DELETE+INSERT 见 REPLACE句法 FLUSH flush_option语句 在一个语句用:=设置变量的可能性 SELECT @a:=SUM(total) @b=COUNT() @a/@b AS avg FROM test_table;SELECT @t :=(@t := )+@t := @t @t @t ; 以ANSI模式运行MySQL 如果你用 ansi选项启动mysqld MySQL的下列行为改变 ||是字符串并置而不是OR 可在一个函数名字之间与 ( 有任何数量的空格 这也使所有的功能名字成为保留词 把是一个标识符引号字符(象MySQL `引号字符一样)而不是一个字符串引号字符 REAL把是FLOAT一个同义词 不是DOUBLE一个同义词 MySQL相比ANSI SQL 的差别我们尝试使得MySQL遵照ANSI SQL标准和ODBC SQL标准 但是在一些情况下 MySQL做一些不同的事情 只是一个注释 如果后面跟一个白空字符 ` 作为一个注释的开始 对于VARCHAR列 当值被存储时 拖后的空格被删除 见E MySQL已知的错误和设计缺限

lishixinzhi/Article/program/MySQL/201404/30560

分不同的类型,可按以下三种方式查询:

一、查看MySQL数据库服务器和数据库MySQL字符集。

命令:

mysql> show variables like '%char%';

二、查看MySQL数据表(table)的MySQL字符集。

命令:

mysql> show table status from sqlstudy_db like '%countries%';

三、查看MySQL数据列(column)的MySQL字符集。

命令:

mysql> show full columns from countries;

1ASCII

用途:用来映射简单的单字节字符,比如大小写英文字母、阿拉伯数字、常用的标点符、运算符、控制字符等。

编码范围:U0000-U007F

注意:对于用这类字符的场景够用了,但是却无法表达比如汉字,日文等编码。

2UNICODE

用途:用来映射包含ASCII以内的其他的所有字符。

编码范围:U0000-U10FFFF

注意:ASCII是UNICODE的子集,ASCII编码的字符可以无损转换为UNICODE编码的字符。

MySQL常用字符集

1Latin1

Latin1是cp1252或者ISO-8859-1的别名。ISO-8859-1编码是单字节编码,向下兼容ASCII。

编码范围:U0000-U00FF

ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。

单字节内的空间都被ISO-8859-1编码占用,所以能够用ISO-8859-1编码存储、传输其他任何编码的字节流。

比如把一个Utf8mb4的编码或者GBK的编码存入Latin1,不会有任何问题。因为Latin1保留了原始的字节流,这也就是MySQL长期以来把Latin1做默认字符集的原因。

但是由于Latin1对任何字符都存放字节流,造成了字符个数的浪费。

比如:

CHAR(10)CHARACTERSETLATIN1;CHAR(10)CHARACTERSETUTF8;

该字段中存储字符个数UTF8是Latin1的三倍!!!

2GB18030

GB18030是中国官方标准字符集,向前兼容GBK、GB2312,是这两个的超集。用1、2、4个字节分别表示一个符号。比如对一般中文字符,默认是用两个字节编码存储。Windows系统,默认用的就是GB18030。

若只是存储中文字符,那GB18030最佳。

原因有两点:

1)占用空间小,比如比UTF8小。

2)存储的汉字根据拼音来排序,检索快。

3UTF8

UTF8是Unicode的编码实现,可以存储UNICODE编码对应的任何字符,这也是使用最多的一种编码。最大的特点就是变长的编码方式,用1到4个字节表示一个符号,可以根据不同的符号编码字节长度。

字母或数字用1字节,汉字用3字节,emoji表情符号用4字节。UTF8字符集目前是使用最广泛的。

注意!MySQL里常说的UTF8是UTF8MB3的别名,UTF8MB3是UTF8MB4的子集,UTF8MB4才是真正的4字节UTF8字符集!

UTF8MB3表示最大支持3个字节存储字符,UTF8MB4表示最大4个字节存储字符。根据实际需要和未来展望,MySQL80已经默认用UTF8MB4基础字符集。

以上就是关于安装MySql提示不含ASCII怎么办全部的内容,包括:安装MySql提示不含ASCII怎么办、MySQL中文参考手册--- MySQL与标准的兼容性、mysql中有哪些常用 *** 作字符串和数值的函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9559655.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存