加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

坑MySqlDump记得分清-d -t的作用,防止导表不导出数据

(2017-06-29 16:35:07)
标签:

mysql

mysqldump

导出

数据库

分类: 技巧和技术
注意,加-d并不是指定数据库,而是只导出结构不导出数据

1.导出结构不导出数据

mysqldump -d 数据库名 -uroot -p > xxx.sql

2.导出数据不导出结构

mysqldump -t 数据库名 -uroot -p > xxx.sql

3.导出数据和表结构

mysqldump 数据库名 -uroot -p > xxx.sql

4.导出特定表的结构

mysqldump -uroot -p -B数据库名 --table 表名 > xxx.sql
#mysqldump [OPTIONS] database [tables]

——————————————————————————
导入数据:
mysql -u username -ppassword schema_name < somefile.sql

清空某表数据
TRUNCATE TABLE tablename;

更新表:
UPDATE sometable SET some_col="somevalue1" WHERE some_col2="somevalue2"
当更新不使用主键作为查询条件时,需要关闭安全模式:
SET SQL_SAFE_UPDATES = 0;

权限赋予,赋予用户从任何节点访问某个库:
GRANT ALL PRIVILEGES ON schema_name.* TO 'user_name'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;

刷新权限:
flush privileges;

——————————————————————————————————————————
【MySQL同表不同条件join查询】
SELECT
    a.col_1,a.col_2,a.col_5,
    b.col_5,b.col_1,
    b.col_3 AS col_3_b,
    b.col_4 AS col_4_b 
FROM table_1 AS a 
JOIN   table_1 AS b 
on (
     a.col_2 = b.col_2 AND 
     a.col_3 = b.col_3)
WHERE 
a.col_1="something" AND 
b.col_2="otherthing" AND
a.col_5 > b.col_5
ORDER BY a.col_5 DESC;


【MySQL删除某几个字段group起来有重复条数的所有重复行】
SET SQL_SAFE_UPDATES = 0;
delete from table1 where uuid in
(select aaa.uuid from
   (select bb.uuid
    from 
table1 AS bb, 
        (SELECT count(1) as count2,col_1,col_2,col_3 
 FROM 
table1 as a 
 GROUP BY a.col_1,a.col_2,a.col_3) AS aa
    where 
bb.col_1=aa.col_1 and
        bb.col_2=aa.col_2 and
        bb.col_3=aa.col_3 and
        aa.count2>1
    ) AS aaa
);
重点是红色部分,因为直接select出来会报错“不允许update正在select的表”,所以要改名为aaa才行。


——————————————————————————————————
外键约束名是全局重名检测的,所以如果你在建别的表的时候,有一个约束名,那么在建另外一个表的时候就不能用这个约束名。
http://s9/mw690/001nffw9zy7fIOToCow78&690-t的作用,防止导表不导出数据" TITLE="坑MySqlDump记得分清-d -t的作用,防止导表不导出数据" />

其实外键的逻辑本来很简单:

新建表 的 某个键A ————(对应)———— 某个表 的 某个键B

然后我们给这个逻辑起个名字,叫做“外键逻辑001”

所以在MySQL Workbench里面,上图Name箭头所指的地方,实际上要填写的是“外键逻辑001”。而这个逻辑名如果在别的地方用过,你就得改名叫“外键逻辑002”,不然会报错:
Error Code: 1022. Can't write; duplicate key in table 'video_collection' 0.312 sec



————————————————华丽的分割线————————————————
【给原有表分组,然后每个分组添加字段】
要点,其实分组以后的效果已经跟distinct类似。一开始钻死胡同,想distinct(a_col, b_col, c_col)这样来搞,结果不行。正解是:

INSERT INTO `table1` 
(`u`, `v`, `m`, `f`, `b`, `s`, `c`, `md`) 
SELECT uuid(), mfr.v, mfr.m, 
'abcdefghijklm', 
mfr.b, 
1, now(), now()
FROM 
table1 as mfr
group by mfr.v, mfr.m, mfr.b
order by m, v;


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有