查看表结构
show columns from table_name from db_name;
增加字段
alter table suplychain_flashsale_orderdetail add column inferior_quantity int(11) not Null;
修改字段类型
ALTER TABLE table_name MODIFY COLUMN created datetime;
删除字段
ALTER TABLE table_name drop column ##**;
范围内查找
select product_id,sale_time,ding_huo_num,goods_out_num from supply_chain_stats_order
where product_id in ( select outer_id from shop_items_product where outer_id='802055202') group by product_id;
表连接
select A.id,A.name,B.num from table1 as A left join table2 as B on A.id=B.id
str to date
select id,merge_trade_id,pay_time from shop_trades_mergeorder pay_time>=str_to_date("2015-05-25 0:0:0","%Y-%m-%d %H:%i:%s");
sum使用
select sum(if(status='1',num,0)) from table group by outer_id
#求出状态为1的num的和
更新字段
update shop_items_product set sale_time="2015-09-03" where sale_time="2015-09-04";
MySQL 150 error
1, 两个字段的类型或者大小不严格匹配,例如,如果一个是INT(10), 那么外键也必须设置成INT(10), 而不是 INT(11) 也不能是 TINYINT. 你得使用 SHOW 命令来查看字段的大小,因为一些查询浏览器有时候把 int(10) 和int(11) 都显示为integer。另外,你还必须确定两个字段是否一个为 SIGNED,而另一个又是UNSIGNED, 这两字段必须严格地一致匹配。
2,外键定义服从下列情况:
- 所有tables必须是InnoDB型,它们不能是临时表。
- 在引用表中,必须有一个索引,外键列以同样的顺序被列在其中作为第一列。这样一个索引如果不存在,它必须在引用表里被自动创建。
- 在引用表中,必须有一个索引,被引用的列以同样的顺序被列在其中作为第一列。
- 不支持对外键列的索引前缀。这样的后果之一是BLOB和TEXT列不被包括在一个外键中,这是因为对这些列的索引必须总是包含一个前缀长度。
- 如果CONSTRAINTsymbol被给出,它在数据库里必须是唯一的。如果它没有被给出,InnoDB自动创建这个名字。
MySQL 数据迁移
下载导出数据脚本
导入数据命令 mysql -h hostname -u 用户名 -p 密码 -D 数据库名 < 文件名