安装mysql
1.如果系统曾经安装过mysql,需要先将mysql全部清除:
dpkg -l |grep 'mysql'显示系统安装了哪些mysql包;
dpkg -r xxx --purge彻底清除已经安装的mysql包;
2.根据http://www.cnblogs.com/168cuiyuan/archive/2012/08/30/2663358.html安装
3.上述安装方法会将mysql默认安装到/opt/mysql目录下,此时不能直接使用mysql命令,需要将/opt/mysql/bin目录加入系统PATH路径‘
4.直接使用mysql命令时,需要先启动/etc/init.d/mysql start则会报错“ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)”
参考:http://blog.csdn.net/byane/article/details/8609086
注:mysql命令不区分大小写!
*mysql.server 启动时从/etc/mysql目录下读取my.cnf文件,如果使用/etc/init.d/mysql start失败,报错找不到socket文件,只需将/etc/mysql目录下的my.cnf文件删除即可。
客户端常用命令
1.进入数据库
mysql -h localhost -u root -p该命令会要求数据root用户的命令
mysql -p123456会默认作为root用户登录,如果root用户的密码是123456,则可以直接进入数据库,否则会连接失败(-p后面没有空格)
mysql -p mydatabse 连接到们又database数据库(-p后面有空格)
2.show databases列出所有的数据库
3.use mydatabase使用mydatabase数据库
4.show tables显示某个数据库下的所有表
5.load data local file "/home/tmp/tables.txt" into table mytable;在/home/tmp/tables.txt中列出mytable表中需要插入的数据,用tab键隔开,该命令能够批量插入记录。
6.select database();该命令检查当前用户使用的数据库,如果没有选择数据库,则返回为NULL
7.describe mytable;显示mytable表有哪些字段, 以及各个字段的属性
8.使用脚本运行mysql命令
mysql -h localhost -u user -p < batch-filebatch-file是含义mysql命令的脚本文件,执行该命令要求输入user的密码
9.在命令后加\G参数,能够将结果按列显示;
DBA常用命令(使用innodb引擎)
1、show variables like "innodb_buffer_%“; 查看innodb缓冲池的参数;
2、show engine innodb status \G查看过去几个小时内innodb引擎的使用情况,判断数据库运行的状态;
mysql常用函数
1.Concat()将select的结果结合到一起;
RTrim()和Trim()将select的列值右边/左边的空格删除;
Upper()和Lower()将字符串转换为大写或小写;
Left()返回串左边的字符;
Length()返回串长;
Locate()找到串的一个子串
Soundex()可以匹配发音相同的字符串;
SubString();
2.AddDate()
AddTime()
CurDate()
CurTime()
Date()提取时间中的日期
Time()获得完整的时间
.……
3.Abs()
Cos()
Exp()返回指数值
Mod()
Pi()
Rand()产生一个随机数
Sin()
Sqrt()
Tan()
……
关键字
SELECT,CREATE TABLE…表名…(…列名 列类型 列限定属性…)…ENGINE=引擎类型…,DELETE…表名…WHREE…限定条件…,DROP…表名…,UPDATE…表名…SET…列名=列值…WHERE…限定条件…,ALTER TABLE —待更改结构的表名—,RENAME TABLE…原表名…TO…新表名…,
DESC,ASC,ORDER BY,GROUP BY,
MAX,MIN,COUNT,LIMIT,
INNER JOIN ... ON ...,LEFT JOIN ... ON ...,
AUTO_INCREMENT,
LIKE,REGEXP
AS,HAVING组级过滤
DELIMITER 临时更改mysql命令行的语句结束标志 常用在存储过程的定义中,
存储过程:
1.DELIMIER ##
CREATE PROCEDURE……
BEGIN
……
END##
DELIMITER ;
2.SHOW CREATE PROCEDURE …过程名… STATUS;
3.SHOW PROCEDURE STATUS;
4.CALL PROCEDURE …过程名…(…参数…);
事务:
START TRANSACTION;
COMMIT;
ROLLBACK;ROLLBACK TO 保留点;
SAVEPOINT …保留点名称…;
RELEASE SAVEPOINT;
备注
1.LIKE和REGEXP的区别:
like匹配整个列的值,而REGEXP只匹配目标内容;eg,匹配“HUST”,LIKE只有当列值为HUST时才为匹配,而REGEXP可以匹配“I'm HUSTER”,"HUST is huzhong university."等等内容。
2.REGEXP匹配的通配符:
* 任意个字符
+ 一个或一个以上的字符
? 0个或1个字符
{n} {n,} {n,m} n到m个字符
^ 从头开始匹配
$ 匹配到结尾
[[:<:]] 单词的开始
[[:>:]] 单词的结尾
3.MyISAM vs Innodb
Innodb是可靠的事务处理引擎,但是不支持全文本搜索;MyISAM数据存储在内存中,速度快,但是不支持事务处理;