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

标签:
mysqlmysqldump导出数据库 |
分类: 技巧和技术 |
注意,加-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
FROM table_1 AS a
JOIN
table_1 AS
b
on (
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
table1 AS
bb,
table1 as
a
bb.col_1=aa.col_1
and
);
重点是红色部分,因为直接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;