在mysql中我们会经常遇到一些常用但是猛一想,想不到的sql。下面我们总结一些:
建表以及一些数据
-- ----------------------------
-- Table structure for `product`
-- ----------------------------
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`brand_info` varchar(255) DEFAULT '' COMMENT '品牌信息',
`customer_code` varchar(40) DEFAULT '' COMMENT '客户编码',
`final_code` varchar(200) DEFAULT '' COMMENT '入库码',
`height` decimal(10,2) DEFAULT '0.00' COMMENT '高',
`length` decimal(10,2) DEFAULT '0.00' COMMENT '长',
`min_qty` int(11) DEFAULT NULL COMMENT '安全库存',
`pm_id` int(11) DEFAULT NULL COMMENT '包材ID',
`product_code` varchar(100) DEFAULT '' COMMENT '天珅库内编码',
`product_name` varchar(255) DEFAULT '' COMMENT '商品中文名',
`product_name_en` varchar(255) DEFAULT '' COMMENT '商品英文名',
`product_package_type` varchar(10) DEFAULT '' COMMENT '货物类型,信封,包裹',
`product_receive_status` varchar(2) DEFAULT '' COMMENT '0:新产品;1:已收过货产品',
`product_sku` varchar(200) DEFAULT '' COMMENT '客户编码(SKU)',
`pv_id` int(11) DEFAULT NULL COMMENT '材积ID',
`volume` decimal(10,6) DEFAULT '0.000000' COMMENT '体积(立方米)',
`weight` decimal(10,3) DEFAULT '0.000' COMMENT '重',
`width` decimal(10,2) DEFAULT '0.00' COMMENT '宽',
`warehouse` varchar(20) DEFAULT NULL COMMENT '仓库code',
`delete_flag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '逻辑删除标识',
`org_code` varchar(30) DEFAULT NULL COMMENT '组织代码',
`org_type` tinyint(1) DEFAULT NULL COMMENT '组织类型 1-行政组织 2-财务组织 3-仓库组织 4-销售组织 5-物流组织',
`env` tinyint(1) NOT NULL DEFAULT '1' COMMENT '环境标识符:0测试环境 1正式环境',
`creator_id` varchar(40) NOT NULL COMMENT '创建人ID',
`create_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',
`updater_id` varchar(40) DEFAULT NULL COMMENT '修改人ID',
`update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='仓库货品属性表';
-- ----------------------------
-- Records of product
-- ----------------------------
INSERT INTO `product` VALUES ('1', '无', '10021', 'SD-M-10021-000047AA', '1.00', '1.00', '0', null, 'SD-M-10021-000047', 'mc01', 'yw01', 'package', '1', 'TEST-2018121903', '0', '0.000001', '1.000', '1.00', 'PVG1', '0', '00002', '3', '1', 'sdpmb', '2018-12-27 15:40:10', 'sdpmb', '2019-03-06 17:41:59');
INSERT INTO `product` VALUES ('2', '无品牌', '10021', 'SD-M54UGAJM', '1.00', '1.00', '0', null, 'SD-M54UGAJM', '名-称', '“”ms', 'package', '1', 'MEI_20181101183220_415754', '0', '0.000001', '1.000', '1.00', 'PVG1', '0', '00002', '3', '1', 'sdpmb', '2018-12-27 15:40:10', 'sdpmb', '2018-12-27 15:57:53');
INSERT INTO `product` VALUES ('3', 'wongsbedding', '200880', 'SD-M35D37SE', '1.00', '1.00', '0', null, 'SD-M35D37SE', '床单套件', 'duvet cover set', 'package', '1', 'AQ08068Q3', '0', '0.000001', '1.000', '1.00', 'PVG1', '0', '00002', '3', '1', 'sdpmb', '2018-12-27 15:40:10', 'sdpmb', '2018-12-27 15:57:53');
一些基本操作:
1:删除表里的数据(记住delete后面要加from)
delete from product where product_id=1;
2:修改字段的长度
alter table product MODIFY final_code VARCHAR(128) DEFAULT '' COMMENT '入库码';
3:添加字段
alter table product add product_pic_url varchar(255) DEFAULT '' comment '产品图片地址'
4:修改一些数据:
update product set delete_flag=0 where delete_flag=1;
5:添加索引
ALTER TABLE product ADD INDEX index_final_code(final_code);
6:批量修改一张表里的两个字段的内容替换
update product as a, product as b set a.product_code=b.final_code, a.final_code=b.product_code where a.id=b.id
比较常用的查询方法
1:查询重复的数据的条数(需要使用Having这个方法)
SELECT final_code,COUNT(*) FROM product GROUP BY final_codeHAVING COUNT(*) > 1//查看重复数据的条数
2:IF语句的判断
select if(delete_flag=1,'是','否') as '是否删除' from product
3:case when的用法
select NOW() as createTime,NULL AS min_qty,CASE warehouse
WHEN 'PVG1' THEN
'123'
ELSE
''
END AS org_code from product