一些实用的MySql方法(持续更新)

在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


 

猜你喜欢

转载自blog.csdn.net/wszhm123/article/details/88342941