lt;可攻可受>全员国王游戏来玩吗

转& 经典的很&字符集及编码转换学习篇
mysql中有六个关键位置使用了字符集的概念,他们是:client 、connection、、results、server,
a、其中client是使用的字符集,相当于中的字符集设置如下&meta http-equiv="Content-Type" content="text/ charset=utf-8"&。
b、其中的connection是连接的字符集设置类型,如果没有指明连接使用的字符集类型就按照服务器端默认的字符集设置。
c、其中database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。
d、server是服务器安装时指定的默认字符集设定。 server是最高的字符集设定,database没有单独设定就按照server的字符集设定,其他都是按照server的设定设置字符集。还有,数据库内的每个表和字段也都有字符集的概念,一般都是根据上一级结构决定自身的字符集,比如表就根据database库的设定决定自己的字符集,字段根据表来决定自己的字符集。 二、统一字符集的方法:(以utf-8字符集为例,因为他是目前支持文字种类最广的字符集)
1、彻底解决字符集的方法:
要彻底解决字符集的方法就是让mysql在安装的时候就是用utf-8的字符集设定,这样可以使上面的六个关键点的编码都为utf-8。
a、 在下安装mysql有提示可以选择字符集,我们选择utf-8就可以了。
b、在下有三种安装方法,第一种是rpm包安装,这种因为我没有使用过所以没有发言权。
第二种为可执行安装,这种安装因为已经被成了latin1这种瑞典语的字符集,所以无法完全解决字符集问题,这个版本我们后面会讲到怎么解决字符集问题。
第三种为自行编译安装,这种安装可以在编译时设置字符集类型,这部分主要讲这种安装方式。
在编译mysql是我们可以用这样的指令:./configure --default-character-set=utf8这样,在编译的时候,就会把mysql的server项编译成utf8的编码,这样这个mysql下建立的所有数据库都将使用utf8编码,所有有关的方面都是utf8编码。
2、局部坚决字符集的方法:
如果遇到自己的数据库使用的是默认安装的latin1字符集的(很奇怪为什么mysql要使用这么个默认字符集)的情况我们可以这样来解决。
a、默认请况下我们在mysql命令行使用status指令察看状态,可以看到:
还可以用SHOW VARIABLES LIKE 'character_set_%';指令察看内容如下: 这就说明,除是utf8之外的所有内容的字符集都为latin1,我们怎么样才能使用utf字符集呢?有人说可以在my.cnf文件的[mysqld]段中加入default-character-set=utf8这一项就可以解决,但经过我的实验,这一条完全没有必要,以下是增加了这一项后得显示结果。 从上面可以看出,使用了文件中修改默认字符集的方法,并没有把client、connection、results这三项改成utf8,而且在建数据库的时候我们可以通过这样的指令实现数据库的字符集设置:
CREATE DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ 这样此数据库内的所有表和字段都将为utf8字符集编码,所以在文件中修改的方法也就失去了意义。
b、我的解决办法。
我们可以完全无视数据库默认的字符集是什么,我们关心的只有数据库在建立的时候是不是加入了字符集选择。
(1)使用如下指令建立数据库:
CREATE DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_
(2)另外一种解决办法参看上一篇;数据库字符集尽量使用utf8(utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的字符集,尽管你在命令行工具上无法正确查看数据库中的内容,我依然强烈建议使用utf8作为默认字符集.接下来是完整的一个例子:创建数据库表mysql&CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_#注意后面这句话 "COLLATE utf8_general_ci",大致意思是在排序时根据utf8编码格式来排序#那么在这个数据库下创建的所有数据表的默认字符集都会是utf8了mysql&create table my_table (name varchar(20) not null default '')type=myisam default charset utf8;#这句话就是创建一个表了,制定默认字符集为utf8 如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询排序等问题,可以使用ary属性约束,例如:create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;附:旧数据升级办法以原来的字符集为latin1为例,升级成为utf8的字符集。原来的表: old_table (default charset=latin1),新表:new_table(default charset=utf8)。第一步:导出旧数据mysqldump --default-character-set=latin1 -h -u -B my_db --tables old_table & old.sql第二步:转换编码iconv -t utf-8 -f gb2312 -c old.sql & new.sql在这里,假定原来的数据默认是gb2312编码。第三步:导入修改old.sql,增加一条sql语句: "SET NAMES utf8;",保存。mysql -h localhost -uroot my_db & new.sql.cn/s/blog_5d5c29c20100cufb.html~type=v5_one&label=rela_prevarticle
无相关信息话说MySQL两种不等号(!=和):《MySQL必知必会》P37页的6.2.2不匹配检查末有SELECT vend_id,prod_nameFROM productsWHERE vend_id !=1003;和SELECT vend_id,prod_nameFROM productsWHERE vend_id 1003;想说明和!=有什么区别,结果是: The != operator is converted to
in the parser stage. It is not possible to implement != and
operators that do different things.没区别。。。参考:1、/questions/7040305/whats-the-difference-between-and-in-mysql 2、http://www.sql.org/sql-database/postgresql/manual/functions-comparison.html
&select&设置css
最新教程周点击榜
微信扫一扫&1重定向1.1&&&&& 重定向符号&&&&&&&&&&&&&&& 输出重定向到一个文件或设备 覆盖原来的文件&!&&&&&&&&&&&&& 输出重定向到一个文件或设备 强制覆盖原来的文件&&&&&&&&&&&&&& 输出重定向到一个文件或设备 追加原来的文件&&&&&&&&&&&&&&& 输入重定向到一个程序&1.2标准错误重定向符号2&&&&&&&&&&&&& 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件& b-shell2&&&&&&&&&&&& 将一个标准错误输出重定向到一个文件或设备 追加到原来的文件2&&1&&&&&&&& 将一个标准错误输出重定向到标准输出 注释:1 可能就是代表 标准输出&&&&&&&&&&&&&& 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件& c-shell|&&&&&&&&&&&&&& 将一个标准错误 管道 输送 到另一个命令作为输入1.3命令重导向示例在 bash 命令执行的过程中,主要有三种输出入的状况,分别是:1. 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 &2. 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1&3. 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2&[test @test test]# ls -al&&&list.txt将显示的结果输出到 list.txt 文件中,若该文件以存在则予以取代![test @test test]# ls -al&&&&list.txt将显示的结果累加到 list.txt 文件中,该文件为累加的,旧数据保留![test @test test]# ls -al&&1&&list.txt&&&2&&list.err将显示的数据,正确的输出到 list.txt&错误的数据输出到 list.err[test @test test]# ls -al 1& list.txt 2&&&1将显示的数据,不论正确或错误均输出到 list.txt 当中!错误与正确文件输出到同一个文件中,则必须以上面的方法来写!不能写成其它格式![test @test test]# ls -al 1& list.txt 2& /dev/null将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃!&/dev/null ,可以说成是黑洞装置。为空,即不保存。1.4为何要使用命令输出重导向o 当屏幕输出的信息很重要,而且我们需要将他存下来的时候;o 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;o 一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;o 一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2& /dev/null 』将他丢掉时;o 错误讯息与正确讯息需要分别输出时。2&& 管线命令 ( pipe )就如同前面所说的, bash 命令执行的时候有输出的数据会出现,那么如果这群数据必需要经过几道手续之后才能得到我们所想要的格式,应该如何来设定?这就牵涉到管线命令的问题了( pipe ),管线命令使用的是『 | 』。例子:简单的管线命令假设我们要读取 last 这个指令中,那个 root 登入的『次数』应该怎么作?那么我所进行的步骤是:1. 执行 last ,将所有这个月的所有人登入数据取出来;2. 使用 grep 将上面的输出数据(stdout)当中的 root 撷取出来,其它的不要;3. 使用 wc 这个可以计算行数的指令将上一步的数据计算行数!由于 last 的输出是一行代表一次登入,所以只要计算几行就代表登入几次的意思,经由上面三个步骤,将 last 数据逐步的筛选,就可以得到我们的数据了!整个命令可以写成如下: [test @test bin]# last | grep root | wc -l这个管线命令『 | 』仅能处理经由前面一个指令传来的正确信息,也就是standard output ( STDOUT ) 的信息,对于 stdandard error 并没有直接处理的能力。2.1基本的管线命令指令介绍o cut语法:[root @test /root ]# cut -d &分隔字符& [-cf] fields参数说明:-d :后面接的是用来分隔的字符,预设是『空格符』-c :后面接的是『第几个字符』-f :后面接的是第几个区块?范例:[root @test /root]# cat /etc/passwd | cut -d &:& -f 1将 passwd 这个文件里面,每一行里头的 : 用来作为分隔号,而列出第一个区块!也就是姓名所在啦![root @test /root]# last | cut -c1-20将 last 之后的数据,每一行的 1-20 个字符取出来!o sort语法:[root @test /root ]# sort [-t 分隔符] [(+起始)(-结束)] [-nru]参数说明:-t 分隔符:使用分隔符来隔开不同区间,预设是 tab+start -end:由第 start 区间排序到 end 区间-n :使用『纯数字』排序(否则就会以文字型态来排序)-r :反向排序-u :相同出现的一行,只列出一次!范例:[root @test /root]# cat /etc/passwd | sort将列出来的个人账号排序![root @test /root]# cat /etc/passwd | sort -t: +2n将个人账号中,以使用者 ID 来排序(以 : 来分隔,第三个为 ID ,但第一个代号为 0 之故)[root @test /root]# cat /etc/passwd | sort -t: +2nr反相排序啰!o wc语法:[root @test /root ]# wc [-lmw]参数说明:-l :多少行-m :多少字符-w :多少字范例:[root @test /root]# cat /etc/passwd | wc -l这个文件里头有多少行?[root @test /root]# cat /etc/passwd | wc -w这个文件里头有多少字!?o uniq这个指令用来将『重复的行删除掉只显示一个』语法:[root @test /root ]# uniq范例:[root @test /root]# last | cut -d& & -f1 | sort | uniqo tee命令重定向到文件的同时将数据显示在屏幕上语法:[root @test /root ]# last | tee last.list | cut -d & & -f1范例:[root @test /root]# last | tee last.list | cut -d & & -f1o tr语法:[root @test /root ]# tr [-ds] SET1参数说明:-d :删除 SET1 这个字符串&&-s :取代掉重复的字符!范例:[root @test /root]# last | tr '[a-z]' '[A-Z]' &==将小写改成大写[root @test /root]# cat /etc/passwd | tr -d : &== : 这个符号在 /etc/passwd 中不见了![root @test /root]# cat /home/test/dostxt | tr -d '/r' & dostxt-noMo split语法:[root @test /root ]# split [-bl] 输入文件 输出文件前导字符参数说明:-b :以文件 size 来分-l :以行数来分范例:[root @test /root]# split -l 5 /etc/passwd test &==会产生 testaa, testab, testac... 等等的文件说明:在 Linux 底下就简单的多了!你要将文件分割的话,那么就使用 -b size 来将一个分割的文件限制其大小,如果是行数的话,那么就使用 -l line 来分割!管线命令在 bash 的连续的处理程序中是相当重要的!另外,在 log file 的分析当中也是相当重要的一环。管道输送到一个命令的标准输入可以使用标准输入参数”-“ 进行更仔细的控制.如cat命令的示例eg:& sort mylist | moresort mylist | cat –n | lprpwd | cat – mylist | lpr
版权声明:本文为博主原创文章,未经博主允许不得转载。
&select&设置css
最新教程周点击榜
微信扫一扫国王游戏|LOFTER(乐乎) - 让兴趣,更有趣
LOFTER for ipad —— 让兴趣,更有趣
让兴趣,更有趣
166位喜爱 #国王游戏 的小伙伴邀你来玩
查看高清大图
喜欢并收藏内容
关注达人获取动态
评论私信与同好交流
10秒注册,查看更多优质内容
网易公司版权所有 & ICP备:浙B2-增值电信业务经营许可证:浙B2-
{if x.type==1}
{if !!x.title}${x.title}{/if}
{if !!x.digest}${x.digest}{/if}
{if x.type==2}
{if x.type==3}
{if x.type==4}
加入 LOFTER 开通功能特权
查看高清大图
喜欢并收藏内容
关注达人获取动态
评论私信与同好交流sql语句中的&&和inselect * from ( select rownumber() over() as rownumber_, row_.* from ( select distinct userpo1_.ID as col_0_0_ from RUN08110.T_ACCUSR accountuse0_ inner join RUN08110.T_USRINFO userpo1_ on accountuse0_.USER_ID=userpo1_.ID where 1=1 and accountuse0_.CHK_FLAG&&0 and (userpo1_.IDENTITY in (4 , 5 , 6 , 7)) ) as row_ ) as temp_ where rownumber_ &= ?很简单的一条语句,没有必要详细的解释。看起来任何问题都没有,运行时肯定不会报错,但查询速度非常非常慢,从后台取出数据到前台分页显示,如果性能不太好,可能需要1分半钟的时间,问题困扰了我很长时间,我尝试着更换表之间的连接方式,但是效果很不明显,真是百思不得其解。后来和同事一起分析了一下,我把'&&'换成了'&',把 'in (4 , 5 ,6 , 7)'换成了'&3'(和以前的条件是等价的),重启,再执行一遍查询,简直太不可思议了,查询速度非常非常快,优化成功!看来用sql查询时'&&'以及'in'不是随便用的,使用得不当可能会严重影响查询速度,要慎用!
无相关信息}

我要回帖

更多关于 gt lt 大于小于 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信