`

MySQL整理

阅读更多

 

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%’;

//…..sSkK2个大小写很难分清,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!'

分享到:
评论
1 楼 csdn_zuoqiang 2010-09-09  
备份语句:
mysql> SELECT * INTO OUTFILE "D:\\data\\db_testtemp.txt" fields terminated by ',
' from db_testtemp where std_state='1';
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * INTO OUTFILE "D:\\data\\db_testtemp.txt" fields terminated by ',
' from db_testtemp ;
Query OK, 2 rows affected (0.00 sec)

只生成一个只有数据的.txt:SELECT * INTO OUTFILE "D:\\data\\db_testtemp.txt" fields terminated by ',' lines terminated by '\r\n' from db_testtemp ;

只生成一个只有数据的.txt:mysqldump -uroot -pncae2010 -w "std_state='1'" -T D:\data --no-create-info --fields-terminated-by=, exam db_testtemp

生成一个创建数据库语句的.sql,一个只有数据的.txt:mysqldump -uroot -pncae2010 -w "std_state='1'" -T D:\data --fields-terminated-by=, exam db_testtemp

只生成insert语句:mysqldump -uroot -pncae2010 -w "std_state='1'" -t exam db_testtemp > D:\data\a.sql

相关推荐

Global site tag (gtag.js) - Google Analytics