网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Mysql > 安装&技术 > MySQL数据库中鲜为人知的技巧  

MySQL数据库中鲜为人知的技巧

2007-09-28  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

MySQL易学易用,且附带丰富的技术文档,这二个因素使之被广泛应用。然而,随着MySQL发展之迅速,即使一个MySQL老手有时也会为该软件出其不意的功能感叹。本文将为你介绍这些不为人知的特性。 nf/eqhh-  
pW< shCV  
以XML格式查看查询结果 !)ava \  
~r]XFU  
通过使用传统—xml 选项调用MySQL命令行客户程序,你可以以XML格式(而不是传统的列表形式)来查看MySQL查询结果。如果你打算将查询输出与其它程序集成在一起,这一技巧非常有用,这里是一个例子: $t_pCEw\ e   网管下载dl.bitscn.com
+LZ| hqI  
表A |$;jP<%  
SQlEb)tr  
shell> mysql --xml VSW~YP9  
@.JD_m N  
mysql> SELECT * FROM test.stories; sdYD/Y  
>XUTBJX4  
!/vK Y  
EPG[e7  
\nSVw!$k  
1 wIl}<p)r   网管论坛bbs_bitsCN_com
This is a test gr']aUi09  
2005-07-28 00:14:57 7DBWyUV  
S~Eqn 0\!  
!Z8Kb3MxGF  
S= ev" yN  
2 mZsdvBv:'  
This is the second test "vAnQf  
2005-07-28 00:15:11 iO[sQP]  
{TNT.  
t @-DS.ZR  
2 rows in set (0.11 sec) !8cN8tb  

网管网www.bitscn.com


2dQ! y<  
快速重建索引 T~5wULw'  
lt.BWF  
通常情况下,如果你想改变服务器的全文搜索变量,你需要在表格中重新建立全文索引,以确保你的更新得到映射。这一操作将会花费大量的时间,特别是如果你需要处理很多数据的时候。一种快速的解决方法是使用REPAIR TABLE命令,以下为演示过程: 1#\ X]-  
p:JI $L;)  
表B $ l{ N8LD  
Q r   
mysql> REPAIR TABLE content QUICK; &\UYYJxyz  
+-----------+--------+----------+----------+ H Lit@g  
中国网管联盟bitsCN.com

| Table| Op| Msg_type | Msg_text | Ki}1To  
+-----------+--------+----------+----------+ dK~ 1@  
| content| repair | status| OK| -Wv c$SX  
+-----------+--------+----------+----------+ $CUCXz[>n  
1 row in set (0.05 sec) D~!au:\$  
c%uz6 l  
压缩一定的表格类型 L5NGMF{zNL  
_ }]\ i-  
如果你处理的是只读MyISAM表格,MySQL允许你将其压缩以节省磁盘空间。对此可以使用包括myisampack,如下所示: @=R dG  

网管网www.bitscn.com


%[z.zY2=  
表C d*-2+ D 5&  
ikK\9gB)(  
shell> myisampackmovies.MYI k"* \s .C  
Compressing movies.MYD: (146 records) )Xbl<;+x  
- Calculating statistics vP5R"4?  
- Compressing file caa 3MA>  
41.05% - ?0qz[4  
t({t:|h  
使用传统SQL a,G{OtBB  
$_F j   网管联盟bitsCN@com
MySQL支持SQL查询中的传统用法,支持IF与CASE结构。以下是一个简单的例子: @b`@7L}Z  
\J-Tw^E  
表D O8T2(P$Rc  
JRm&Oc9v  
mysql> SELECT IF (priv=1, 'admin', 'guest') As usertype FROM privs WHERE username = 'joe'; #N3blF%v  
+----------+ e&Nm%#9Z;  
| usertype | u[kdlZnqyc  
+----------+ Bk!]Tw s|1  
| admin| YIUj7H  

中国网管论坛bbs.bitsCN.com


+----------+ Cvd^|^&3+!  
1 row in set (0.00 sec) 8nmS;o  
hNBHeK  
以CSV格式输出表格数据 uf@!CLF  
4`K<n  
MySQL输出文件包含一个全部SQL命令列表。如果你想将输出文件导入到MySQL,这一功能非常实用,但如果目标程序(比如Excel)不能与SQL相互通讯,这一方法将行不通。在这种情况下,可以通过告诉MySQL以CSV格式建立输出文件,这种CSV格式很方便地导入到绝大部分的程序。这里演示了mysqldump的操作过程: MTiNuo`M  
网管u家u.bitsCN.com

{6VgfC\  
shell> mysqldump -T . --fields-terminated-by=", " mydbmytable UD@6D>Q~"u  
L{,7Wb+[%)  
这将在当前目录中生成一个文本文件,包含来自mydb.mytable列表中以逗号为间隔符的记录。 b@oLlb4-w  
cHg5 ]dK-  
以激活strict模式减少“bad”数据的出现 DA5WPDj-  
a]BbGS  
MySQL服务器能够以多种不同的模式运行,而每一种都针对于特定的目的而优化。在默认情况下,没有设置模式。然而,通过在服务器命令行中添加以下选项可以很容易地改变模式的设置并将MySQL以“strict”模式运行: 5mM#W:r   网管u家u.bitscn@com
@ZP%T_(  
shell> mysqld --sql_mode="STRICT_ALL_TABLES" & !<KX+}Sk6  
JZ&DefN  
在“strict”模式下,通过MySQL的中止查询执行并返回一个错误,服务器的很多自动修正功能都被无效化。同样,该模式下也将会执行更为严格的时间检查。 ~KtB",$  
8J+x u;  
监视服务器 g]FaGf6us  
o{Y?k=G  
你可以通过运行SHOW STATUS命令获得一份服务器运行与统计的报告,包括打开连接的次数,激活查询次数,服务器正常运行时间等等。例如: [<'V}oUp@#  

网管下载dl.bitscn.com


8o98E6  
表 E vH7'-yhw  
[ =cecFV  
mysql> SHOW STATUS; <"BHu.  
+------------------+-------+ { J b}14 H  
| Variable_name| Value | lQ"}~SQu)  
+------------------+-------+ (O*o;,7C  
| Aborted_clients| 0| K@$5@4'mP  
| Aborted_connects | 0| 0]LOSb.<0  
... Y\!H.[vb;O  

网管网www_bitscn_com


| Uptime| 851| 5ulNz  
+------------------+-------+ Es; o$FN  
156 rows in set (0.16 sec) 830 v\H  
4:Lj!nn(65  
自动返回CREATE TABLE代码 ) 6\vY  
Dhn@]++  
MySQL允许你自动获得SQL命令重新建立一个特定的表格。只简单地运行SHOW CREATE TABLE命令,并查看表格建立代码,如下所示: "a4|g,%  
kokH<CrK{  
表 F U-Dx>^g\4  

网管u家u.bitsCN.com


EqMl20t  
mysql> SHOW CREATE TABLE products; uzD8 J  
----------------------------------------------------- FJmedK23V  
| Table| Create Table 6GAV.'  
+----------+----------------------------------------- ^W8syW=   
| products | CREATE TABLE `products` ( BW^$H#|\  
`id` int(8) NOT NULL auto_increment, Pr[Zcs1d  
`name` varchar(255) NOT NULL default '', Fgzth  
`price` int(10) default NULL, JK 5s2   网管论坛bbs_bitsCN_com
PRIMARY KEY(`id`) In?rn%h  
) ENGINE=MyISAM DEFAULT CHARSET=latin1 | ;*1Ru38  
+----------+----------------------------------------- lX2OsIU  
1 row in set (0.27 sec) ]|Q&Yh Z  
{\ {iZ  
建立一个更为有用的命令提示: |L9{t !|  
a+(3=8m  
在缺省情况下,MySQL命令行客户程序显示一个简单的mysql>提示符。然而,你可以使用特定的修改内容来改变这一提示符使之变得更为有效,这些内容包括:当前用户名称,主机名称,以及当前选择的数据库。如下所示: }mV?GKCH46  

网管论坛bbs_bitsCN_com


-zW~)==x  
表 G goq,Q$\  
+)Hq-jPR;  
mysql> prompt \U:/\d> A:FgjuR  
PROMPT set to '\U:/\d>' F7s/ZL<C  
root@localhost:/db1> NaxIg)9(  
Aq'f6,.J  
从这里的文档文件你可以获得支持MySQL客户程序更改的一个完整列表。

TAGs技巧   数据库   MySQL   一个   命令   mysql   模式   服务器   如果    
 上一篇:配置 MySQL 双机热备份   下一篇:针对MySQL和PostgreSQL两数据库对比
MySQL数据库中鲜为人知的技巧 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: