mysql 常用操作
建表tempTest ,里面基本涵盖工作中用到的数据类型
CREATE table tempTest (
name varchar(50) DEFAULT NULL COMMENT '申请员工名称',
applyStaffId int(10) DEFAULT NULL COMMENT '申请员工id',
age smallint(1) NOT NULL COMMENT '年龄',
cash decimal(14,2) DEFAULT '0.00' COMMENT '可用现金余额 这条记录中的值才是用户真正可用的钱',
createTime datetime DEFAULT NULL COMMENT '创建时间',
remark varchar(255) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表tempTest';
desc tempTest 查看表结构:
* DML
写操作:
1 单条插入数据 eg::
INSERT INTO tempTest ( name ,applyStaffId ,age ,cash ,createTime ,remark ) values ( 'name5',5,5,5,NOW(),'rem5');
2 批量插入eg:
INSERT INTO tempTest( name ,applyStaffId ,age ,cash ,createTime ,remark) values ('name7',7,7,7,NOW(),'rem7'),('name8',8,8,8,NOW(),'rem8')
读操作:
模糊查询读操作:
select * from tempTest a where a.name like '%remark%'
范围查询读操作
select * from tempTest a where a.name in ('rem5','rem6')
* DDL
给某表加时间字段,建议下面方式添加,然后初始化一个时间就ok了
时间字段:①语句:
ALTER TABLE tempTest ADD COLUMN `updateTime` timestamp not null default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP comment '更新时间';
执行完,可查看如图:
执行初始化sql
update tempTest set updateTime=NOW();
查看如下图:
好处:
这样新增的字段不必改代码,只要物理更新,就会更新updateTime时间。比如插入一条记录,并没有updateTime字段,但是查表却更新了该字段,所以①语句 添加该字段时,非空也是没问题的,不必改动代码。下图为效果,看update时间字段即使没插入值,但是查询依然有值eg::
INSERT INTO `tempTest` (`name`, `applyStaffId`, `age`, `cash`, `createTime`, `remark` ) VALUES ( 'name9', 9, 9, 9.00, '2018-6-8 16:47:43', 'ark6' );
select * from tempTest where name='name9'
添加其他字段,建议不要设置非空,因为:运维一般上线先执行sql,后部署应用,在执行完sql后,应用部署之前,客户在平台做业务不会出错
ALTER table tempTest add COLUMN isAutoSeller SMALLINT(1)
null DEFAULT 0 COMMENT '是否支持自动贩卖: 0 不支持 1 支持';
INSERT INTO `tempTest` (`name`, `applyStaffId`, `age`, `cash`, `createTime`, `remark` )
VALUES ( 'name10', 10, 10, 10.00, NOW(), '嗨,海盗仙子' );
select * from tempTest;
结果: