MySQL易学易用:MYSQL不为人知的特性

MySQL易学易用,且附带丰富的技术文档,这二个因素使之被广泛应用。然而,随着MySQL发展之迅速,即使一个MySQL老手有时也会为该软件出其不意的功能感叹。本文将为你介绍这些不为人知的特性。

以XML格式查看查询结果

通过使用传统—xml 选项调用MySQL命令行客户程序,你可以以XML格式(而不是传统的列表形式)来查看MySQL查询结果。如果你打算将查询输出与其它程序集成在一起,这一技巧非常有用,这里是一个例子:

表A

shell> mysql --xml

mysql> SELECT * FROM test.stories;

1
This is a test
2005-07-28 00:14:57

2
This is the second test
2005-07-28 00:15:11

2 rows in set (0.11 sec)

快速重建索引

通常情况下,如果你想改变服务器的全文搜索变量,你需要在表格中重新建立全文索引,以确保你的更新得到映射。这一操作将会花费大量的时间,特别是如果你需要处理很多数据的时候。一种快速的解决方法是使用REPAIR TABLE命令,以下为演示过程:

表B

mysql> REPAIR TABLE content QUICK;
+-----------+--------+----------+----------+
Table Op Msg_type Msg_text
+-----------+--------+----------+----------+
content repair status OK
+-----------+--------+----------+----------+
1 row in set (0.05 sec)

压缩一定的表格类型

如果你处理的是只读MyISAM表格,MySQL允许你将其压缩以节省磁盘空间。对此可以使用包括myisampack,如下所示:

表C

shell> myisampackmovies.MYI
Compressing movies.MYD: (146 records)
- Calculating statistics
- Compressing file
41.05%

使用传统SQL

MySQL支持SQL查询中的传统用法,支持IF与CASE结构。以下是一个简单的例子:

表D

mysql> SELECT IF (priv=1, 'admin', 'guest') As usertype FROM privs WHERE username = 'joe';
+----------+
usertype
+----------+
admin
+----------+
1 row in set (0.00 sec)

以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的中止查询执行并返回一个错误,服务器的很多自动修正功能都被无效化。同样,该模式下也将会执行更为严格的时间检查。

监视服务器

你可以通过运行SHOW STATUS命令获得一份服务器运行与统计的报告,包括打开连接的次数,激活查询次数,服务器正常运行时间等等。例如:

表 E

mysql> SHOW STATUS;
+------------------+-------+
Variable_name Value
+------------------+-------+
Aborted_clients 0
Aborted_connects 0
...
Uptime 851
+------------------+-------+
156 rows in set (0.16 sec)

自动返回CREATE TABLE代码

MySQL允许你自动获得SQL命令重新建立一个特定的表格。只简单地运行SHOW CREATE TABLE命令,并查看表格建立代码,如下所示:

表 F

mysql> SHOW CREATE TABLE products;
-----------------------------------------------------
Table Create Table
+----------+-----------------------------------------
products CREATE TABLE `products` (
`id` int(8) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`price` int(10) default NULL,
PRIMARY KEY(`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
+----------+-----------------------------------------
1 row in set (0.27 sec)

建立一个更为有用的命令提示:

在缺省情况下,MySQL命令行客户程序显示一个简单的mysql>提示符。然而,你可以使用特定的修改内容来改变这一提示符使之变得更为有效,这些内容包括:当前用户名称,主机名称,以及当前选择的数据库。如下所示:

表 G

mysql> prompt \U:/\d>
PROMPT set to '\U:/\d>'
root@localhost:/db1>

从这里的文档文件你可以获得支持MySQL客户程序更改的一个完整列表。

时间: 2024-09-20 04:22:54

MySQL易学易用:MYSQL不为人知的特性的相关文章

MySQL易学易用之MYSQL不为人知的特性_Mysql

本文将为你介绍这些不为人知的特性. 以XML格式查看查询结果 通过使用传统-xml 选项调用MySQL命令行客户程序,你可以以XML格式(而不是传统的列表形式)来查看MySQL查询结果.如果你打算将查询输出与其它程序集成在一起,这一技巧非常有用,这里是一个例子: 表A shell> mysql --xml mysql> SELECT * FROM test.stories; 1This is a test2005-07-28 00:14:57 2This is the second test2

mysql安装时选择产品和特性时 怎么把组件移到右边去

问题描述 mysql安装时选择产品和特性时 怎么把组件移到右边去

mysql安装时选择产品和特性的next不能点

问题描述 mysql安装时选择产品和特性的next不能点 该怎么选择才能点next 解决方案 你得把你要安装的的组件移到右边啊 解决方案二: 挺急的,各路道友,帮忙解惑

MySQL 5.0 数据库的新特性的存储过程

当你提交一个查询的时候,MySQL会分析它,看是否可以做一些优化使处理该查询的速度更快.这一部分将介绍查询优化器是如何工作的.如果你想知道MySQL采用的优化手段,可以查看MySQL参考手册. 当然,MySQL查询优化器也利用了索引,但是它也使用了其它一些信息.例如,如果你提交如下所示的查询,那么无论数据表有多大,MySQL执行它的速度都会非常快: SELECT * FROM tbl_name WHERE 0: 在这个例子中,MySQL查看WHERE子句,认识到没有符合查询条件的数据行,因此根本

MySQL存储过程详解 mysql 存储过程

mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和一些特殊的控制结构组成.当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的

解决windows下的mysql匿名登陆无法使用mysql数据库的问题

原文:解决windows下的mysql匿名登陆无法使用mysql数据库的问题 我在windows下安装了mysql,但是不用密码就能登进去,而root明明是有密码的,我用select user()命令查看当前登录用户是root. 查看数据库,只能看到自带的两个数据库(information_schema和test),mysql这个数据库都看不到.如果运行use mysql,就会出现 Access denied for user ''@'localhost' to database 'mysql'

深入理解MySQL乱码问题及MySQL乱码解决

要了解为什么会出现乱码,我们就先要理解:从客户端发起请求,到MySQL存储数据,再到下次从表取回客户端的过程中,哪些环节会有编码/解码的行为.为了更好的解释这个过程,博主制作了两张流程图,分别对应存入和取出两个阶段. 存入MySQL经历的编码转换过程   上图中有3次编码/解码的过程(红色箭头).三个红色箭头分别对应:客户端编码,MySQL Server解码,Client编码向表编码的转换.其中Terminal可以是一个Bash,一个Web页面又或者是一个APP.本文中我们假定Bash是我们的T

大三时MySQL课程设计《MySQL集群的研究与实现》

Mysql集群 河南中医学院 <MySQL数据库管理>课程设计报告 题目:MySQL集群的研究与实现 所在院系:  信息技术学院 专业年级:  2010级   信息管理与信息系统 完成学生:  2010181055  陈勇 指导教师:  阮 晓 龙 完成日期:  2012 年 12 月 31 日 目  录 1. 课程设计题目概述. 3 2. 研究内容与目的. 3 3. 研究方法. 4 3.1研究方法---------------------------.. 4 3.2实验方法---------

mysql启动错误:mysql.sock丢失

  我的是CentOS6.3+MySQL5.1.57.重启了一次服务器后,使用> mysql -u root -p登陆是出现下面的错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 于是,我检察mysql状态: > /etc/rc.d/init.d/mysqld status 显示stop,未运行. >/etc/rc.d/init.d/mysqld