|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最近由权威调查机构Evans数据公司进行的一项调查显示,MySQL在过去两年已经获得了25%的市场份额。该调查公司还预测,相比其他的开源数据库和闭源数据库。本文为你先容MySQL中十条不为人知的技能。
MySQL易学易用,且附带丰厚的手艺文档,这二个要素使之被普遍使用。但是,跟着MySQL开展之敏捷,即便一个MySQL内行偶然也会为该软件出乎意料的功效叹息。本文将为你先容这些不为人知的特征。
以xml格局检察查询了局
经由过程利用传统―xml选项挪用MySQL命令行客户程序,你能够以XML格局(而不是传统的列表情势)来检察MySQL查询了局。假如你盘算将查询输入与别的程序集成在一同,这一技能十分有效,这里是一个例子:
表A
shell>mysql--xml
mysql>SELECT*FROMtest.stories;
<?xmlversion="1.0"?>
<resultsetstatement="SELECT*FROMtest.stories">
<row>
<id>1</id>
<headline>Thisisatest</headline>
<tstamp>2005-07-2800:14:57</tstamp>
</row>
<row>
<id>2</id>
<headline>Thisisthesecondtest</headline>
<tstamp>2005-07-2800:15:11</tstamp>
</row>
</resultset>
2rowsinset(0.11sec)
疾速重修索引
一般情形下,假如你想改动服务器的全文搜刮变量,你必要在表格中从头创建全文索引,以确保你的更新失掉映照。这一操纵将会消费大批的工夫,出格是假如你必要处置良多数据的时分。一种疾速的办理办法是利用REPAIRTABLE命令,以下为演示历程:
表B
mysql>REPAIRTABLEcontentQUICK;
+-----------+--------+----------+----------+
|Table|Op|Msg_type|Msg_text|
+-----------+--------+----------+----------+
|content|repair|status|OK|
+-----------+--------+----------+----------+
1rowinset(0.05sec)
紧缩必定的表格范例
假如你处置的是只读MyISAM表格,MySQL同意你将其紧缩以节俭磁盘空间。对此可使用包含myisampack,以下所示:
表C
shell>myisampackmovies.MYI
ComPRessingmovies.MYD:(146records)
-Calculatingstatistics
-Compressingfile
41.05%
利用传统SQL
MySQL撑持SQL查询中的传统用法,撑持IF与CASE布局。以下是一个复杂的例子:
表D
mysql>SELECTIF(priv=1,admin,guest)AsusertypeFROMprivsWHEREusername=joe;
+----------+
|usertype|
+----------+
|admin|
+----------+
1rowinset(0.00sec)
以CSV格局输入表格数据
MySQL输入文件包括一个全体SQL命令列表。假如你想将输入文件导进到MySQL,这一功效十分有用,但假如方针程序(好比Excel)不克不及与SQL互相通信,这一办法将行欠亨。在这类情形下,能够经由过程告知MySQL以CSV格局创建输入文件,这类CSV格局很便利地导进到尽年夜部分的程序。这里演示了mysqldump的操纵历程:
shell>mysqldump-T.--fields-terminated-by=","mydbmytable
这将在以后目次中天生一个文本文件,包括来自mydb.mytable列表中以逗号为距离符的纪录。
以激活strict形式削减“bad”数据的呈现
MySQL服务器可以以多种分歧的形式运转,而每种都针关于特定的目标而优化。在默许情形下,没有设置形式。但是,经由过程在服务器命令行中增加以下选项能够很简单地改动形式的设置并将MySQL以“strict”形式运转:
shell>mysqld--sql_mode="STRICT_ALL_TABLES"&
在“strict”形式下,经由过程MySQL的中断查询实行并前往一个毛病,服务器的良多主动修改功效都被有效化。一样,该形式下也将会实行更加严厉的工夫反省。
监督服务器
你能够经由过程运转SHOWSTATUS命令取得一份服务器运转与统计的呈报,包含翻开毗连的次数,激活查询次数,服务器一般运转工夫等等。比方:
表E
mysql>SHOWSTATUS;
+------------------+-------+
|Variable_name|Value|
+------------------+-------+
|Aborted_clients|0|
|Aborted_connects|0|
...
|Uptime|851|
+------------------+-------+
156rowsinset(0.16sec)
主动前往CREATETABLE代码
MySQL同意你主动取得SQL命令从头创建一个特定的表格。只复杂地运转SHOWCREATETABLE命令,并检察表格创建代码,以下所示:
表F
mysql>SHOWCREATETABLEproducts;
-----------------------------------------------------
|Table|CreateTable
+----------+-----------------------------------------
|products|CREATETABLE`products`(
`id`int(8)NOTNULLauto_increment,
`name`varchar(255)NOTNULLdefault,
`price`int(10)defaultNULL,
PRIMARYKEY(`id`)
)ENGINE=MyISAMDEFAULTCHARSET=latin1|
+----------+-----------------------------------------
1rowinset(0.27sec)
创建一个更加有效的命令提醒:
在缺省情形下,MySQL命令行客户程序显现一个复杂的mysql>提醒符。但是,你可使用特定的修正内容来改动这一提醒符使之变得更加无效,这些内容包含:以后用户称号,主机称号,和以后选择的数据库。以下所示:
表G
mysql>promptU:/d>
PROMPTsettoU:/d>
root@localhost:/db1>
从这里的文档文件你能够取得撑持MySQL客户程序变动的一个完全列表。
MySQL的低成本来自于其简单性吗?它的普及性是由于其低成本吗?其实,在MySQL的最“好”与最“不好”的功能之间没有明显的分界线,但它们组合在一起就形成了一副让我们欣赏的作品。 |
|