1. 备份
mysqldump -u root -p dbname>dbname.time.sql
2.还原
mysql dbname<dbname.time.sql -u root -p
3.表导入数据
LOAD DATA INFILE '/var/lib/mysql/inval.txt' INTO TABLE tablename;
//一般先在EXECL里面整理好格式,然后整个复制粘贴到文本文档再导入,格式一定要严格
4.时间转换
FROM_UNIXTIME(number)
UNIX_TIMESTAMP(sysdate)
5.mysql update同时更新一表多列,注意列与列之间用逗号分开!
update tablename set col1=val1,col2=val2 where exp1=expval1;
//虽然语言一通万通,数据库也基本都是遵循sql-99标准,但是经验办事经常要吃亏,不能不够自信(怀疑自己的正确性),也不能过于自信(通常粗心源于自己的定势思维,觉得那样肯定是对的,在判断前就已经做出了错误的判断);而且要注意一些本地化的东西,所谓的方言。
6.查询结果导入文件
select col from tablename where col=val into outfile “/path/file.file”;
7.ANSI,UTF-8,UNICODE字符之间的转换注意,乱码处理
8.mysql模糊匹配与replace匹配
select * from tabelname where col like ‘%val%’;
select * from tabelname where col like ‘%VAL%’;
select * from tabelname where col like ‘%vAl%’;
//这里的匹配val不区分大小写,三查询返回相同结果(mysql)
update tablename set col =replace(col,’val1’,’val2’);
update tablename set col =replace(col,’val1’,’vAL2’);
update tablename set col =replace(col,’vaL1’,’vAL2’);
//replace严格区分大小写,三更新语句更新不同的内容
update tablename set col =replace(col,’Abc’,’bac’) where col like ‘%abc%’;
update tablename set col =replace(col,’aBc’,’cba’) where col like ‘%abc%’;
//…..sSkK这2个大小写很难分清,在replace的时候最好不要用复制,自己输..
9.mysql多表连接更新,删除,注意delete语句from前和update语句set后列的表别名使用,连接一定注意加连接条件,要不然,笛卡尔积…
delete a from table1 a, table2 b where a.col1=b.col1 and a.col2=’bbb’;
update table1 a, table2 b set a.col1=’aaa’, b.col2=’ccc’ where a.col3=b.col3 and a.col4=’ddd’;
10. mysql (rollback, commit, savepoint)事务操作
(1).表必须是InnoDB类型表才支持事务操作
ALTER TABLE table_name ENGINE=INNODB;
(2).修改 dbname.sql ,首行加set autocommit=0;末行加 commit;
并把所有的 type=myisam 修改为type=innodb.
(3).使用事务
START TRANSACTION
if there is an error
ROLLBACK
else
COMMIT
11.模式匹配,转义
expr LIKE pat [ESCAPE 'escape-char']
% 匹配任何数目的字符,甚至包括零字符
_ 只能匹配一种字符
\% 匹配一个 ‘%’字符
\_ 匹配一个 ‘_’ 字符
要指定一个不同的转义字符,可使用ESCAPE语句:
mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|';
->1
mysql> SELECT 'David_' LIKE 'David\_';
-> 1
注释: 由于 MySQL在字符串中使用 C转义语法(例如, 用‘\n’代表一个换行字符),在LIKE字符串中,必须将用到的‘\’双写。例如, 若要查找 ‘\n’, 必须将其写成 ‘\\n’。而若要查找 ‘\’, 则必须将其写成 it as ‘\\\\’;原因是反斜线符号会被语法分析程序剥离一次,在进行模式匹配时,又会被剥离一次,最后会剩下一个反斜线符号接受匹配。
REGEXP (not like)
mysql> SELECT 'Monty!' REGEXP 'm%y%%';
-> 0
SELECT 'a' REGEXP 'A';
-> 1
SELECT 'a' REGEXP 'A%';
-> 0
//有点迷糊..
QUOTE(str)
引证一个字符串,由此产生一个在SQL语句中可用作完全转义数据值的结果。 返回的字符串由单引号标注,每例都带有单引号 (‘'’)、 反斜线符号 (‘\’)、 ASCII NUL以及前面有反斜线符号的Control-Z 。如果自变量的值为NULL, 则返回不带单引号的单词 “NULL”。
mysql> SELECT QUOTE('Don\'t!');
-> 'Don\'t!'