【MySQL】随手笔记(积跬步至千里)

 一、常用函数

(1)uuid()

select uuid(); //生成随机数
select replace(uuid(),'-','');   //将随机数的-去掉
select upper(replace(uuid(),'-',''));  ///改成大写

应用举例:

(1)非自增主键

【MySQL】随手笔记(积跬步至千里)_第1张图片

 非自增主键,insert语句的value中必须要有这个主键,下面的例子主键是id

 Mapper.xml


   
   SELECT UPPER(REPLACE(UUID(),'-',''))
 
    insert into template_info(id,order_Id,template_id,rec_id,template_type,template_name,template_attachment_id,business_type,start_time,post_no,status,list_no,LINE,isGuarantee,apply_business_name,post_file_id,attachment_id)
    values(#{id},#{orderId},#{templateContractId},#{recId},
    null
 #{templateType}
    ,#{templateName},#{template_attachment_id},
    null
 #{businessType}
    ,#{startTime},#{postNo},#{status},#{listNo},#{line},#{isGuarantee},#{applyBusinessName},#{postFileId},#{attachment_id})
  

 (2)自增主键

【MySQL】随手笔记(积跬步至千里)_第2张图片

自增主键, insert语句的value中不需要有这个主键,因为本来就是自增的,会自动生成+1,下面的例子主键是law_id,value中没有写law_id,不需要

Mapper.xml


  
   select last_insert_id()
  
  insert into lawad_statis_detail(rec_id,branch1_id,SIGN_OUT_DATE) values(#{recId},#{branch1Id},#{date})
 

 

(2) last_insert_id()

一般我们在创建表时,表的主键(id),都会设置为 primary key 和 auto_increment。这样我们在 insert 数据时可以不用指定 id,MySQL 会自动根据上一条的 id,使本次 insert 的数据 id 自增 1。

如果我们在数据库新插入一条数据并且想立即操作 ta(这时想要知道 ta 的 id)。

MySQL 为我们提供了以下方法(只适用于自增主键)

//获取当前执行的最后一个insert语句的自增ID
select last_insert_id();

应用:

可以取得自增主键的值,省去添加完数据还要重新查询一次Id值的麻烦

ServiceImpl.java

Map detailMap = new HashMap();
   detailMap.put("recId",basicInfo.getRecId());
   // todo 不从session获取一级行,待确定
   //detailMap.put("branch1Id", UserUtil.getUser(session).getBranch1());
   detailMap.put("branch1Id", user.get(0).getBranch1());
   detailMap.put("date",signoutDate);
   lawADDao.insertLawAdStatisDetail(detailMap);

   int lawNo = Integer.parseInt(detailMap.get("lawNo") + "");

 

 Mapper.xml


  
   select last_insert_id()
  
  insert into lawad_statis_detail(rec_id,branch1_id,SIGN_OUT_DATE) values(#{recId},#{branch1Id},#{date})
 

二、SQL基础

1、建表

CREATE TABLE `test_detail` (
  `REC_ID` VARCHAR(32) NOT NULL COMMENT '记录id',
  `LAW_NO` INT NOT NULL AUTO_INCREMENT,
  `BRANCH1_ID` VARCHAR(5) DEFAULT NULL COMMENT '一级机构号',
  `SIGN_OUT_DATE` DATETIME DEFAULT NULL COMMENT '签发时间',
  PRIMARY KEY (`LAW_NO`) USING BTREE,
  UNIQUE KEY `REC_ID` (`REC_ID`) USING BTREE
) ENGINE=INNODB AUTO_INCREMENT=6791 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='意见发文号详情'

 

2、备份表

CREATE TABLE test1_20231115 LIKE test1;
INSERT INTO test1_20231115 SELECT * FROM test1;

 

你可能感兴趣的:(mysql,笔记,数据库)