JAVA开发(手工处理数据库表数据的一些示例算法)

这篇具有很好参考价值的文章主要介绍了JAVA开发(手工处理数据库表数据的一些示例算法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:

在项目开发中,有时候需要手动处理一下数据库表的数据。涉及到数据得到备份、恢复,清洗,计算,合并等操作。

举例记录一下最近对数据的一些处理过程。

1、对数据表进行数据量统计

select count(*) from  table_a;

2、记住数据库表的数据,然后进行备份

create table table_a_bak as  select * from  table_a where  1 = 1;

3、我们再对数据进行处理之前一定记得进行备份,以防错误的操作后能将数据恢复,或最大程度的恢复,这是一个好习惯。然后我们才开始对数据进行处理。

4、建立一个临时表导入需要处理的数据。一般临时表最好是 tmp_开头,这也是一个好习惯,方便数据计算完后,对临时表进行删除,以免误删。

create table  tmp_table_a as  select * from  table_a where 1 = 2;

5、对表数据进行去重的操作,先查询看看有多少手机号重复的记录。

select count(1)  from  (
select  phone ,count(1) cn  from  table_a where  phone is  not  null   group  by phone ) t where t.cn > 1  ;

6、多数据进行去重。先对table_a表进行接收

drop  table  tmp_table_a_1;
create  table  tmp_table_a_1 as
select * from  (
select  phone ,count(1) cn  from  table_a  where  phone is  not  null   group  by phone ) t where t.cn > 1  ;

7、tmp_table_a_1增加一个自增的id字段,先建立一个SEQUENCE

CREATE SEQUENCE tmp_table_a_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

给id增加自增约束

alter table tmp_table_a_1 alter column id set default nextval('tmp_table_a_id_seq'); 

8、将数据重新插回tmp_table_a_1 ,先清空tmp_table_a_1

清空数据

truncate table tmp_table_a_1 ;

插回数据

INSERT INTO tmp_table_a_1 
( user_id, phone, user_name, id_card, wx_account, state, app_id, app_name, head_icon, sex, sex_name, reg_time, user_state, user_state_name, open_id, opt_user, birthday_type, birthday, org_name, last_trading_time, org_code, union_id, orig_phone, update_time, belong_code, belong_name, data_type, client_num, client_name, country_code, inviter, channel_id, channel_name, company)
select  user_id, phone, user_name, id_card, wx_account, state, app_id, app_name, head_icon, sex, sex_name, reg_time, user_state, user_state_name, open_id, opt_user, birthday_type, birthday, org_name, last_trading_time, org_code, union_id, orig_phone, update_time, belong_code, belong_name, data_type, client_num, client_name, country_code, inviter, channel_id, channel_name, company
from  table_a;

9、去重操作

DELETE FROM tmp_table_a_1
WHERE id
NOT IN (
SELECT max(id)
FROM tmp_table_a_1
GROUP BY  phone
);

10、A表中有但是B表中没有的数据

drop table if exists tmp_table_a_2;
create table tmp_table_a_2 as
select  t1.* from tmp_table_a_1 t1
left join tmp_table_b_1 t2
on t1.phone = t2.phone
where t2.phone is null;

JAVA开发(手工处理数据库表数据的一些示例算法)

MySQL 存储过程是一组为了完成特定功能的 SQL 语句集合。你可以将存储过程看作是一个在数据库中存储的脚本,它可以被多次调用,并在需要时执行。存储过程可以包含逻辑控制语句和数据操作语句,可以接受参数、返回单个或多个结果,也可以不返回任何结果。

存储过程的基本语法

  1. 创建存储过程

 

sql复制代码文章来源地址https://www.toymoban.com/news/detail-465809.html

DELIMITER //
CREATE PROCEDURE procedure_name([parameters])
BEGIN
-- SQL语句
END //
DELIMITER ;

其中,DELIMITER 是用来改变SQL语句的结束符的。因为存储过程中可能包含多条 SQL 语句,所以我们需要改变默认的结束符(;)以避免冲突。
2. 调用存储过程

 

sql复制代码

CALL procedure_name(arguments);
  1. 查看存储过程

使用 SHOW CREATE PROCEDURE procedure_name; 可以查看存储过程的定义。
4. 删除存储过程

 

sql复制代码

DROP PROCEDURE IF EXISTS procedure_name;

存储过程的参数类型

  • IN:输入参数,表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不会被返回。
  • OUT:输出参数,可以在存储过程中改变其值,并可返回。
  • INOUT:输入输出参数,调用时指定,并且可被改变和返回。

存储过程的优点

  1. 代码重用:存储过程只需要编写一次,然后可以在多个地方多次调用。
  2. 性能优化:MySQL 会对存储过程进行编译和优化,提高执行效率。
  3. 安全性:可以通过权限设置来限制对数据的访问,只允许用户通过特定的存储过程来访问数据。
  4. 减少网络通信:多个 SQL 语句可以在一个存储过程中执行,从而减少客户端和服务器之间的通信次数。
  5. 更好的错误处理:可以使用 TRY...CATCH 来处理执行过程中可能出现的错误。

示例:一个简单的存储过程

下面是一个简单的存储过程示例,该存储过程接受一个参数(学生ID),并返回该学生的姓名和年龄。

 

sql复制代码

DELIMITER //
CREATE PROCEDURE GetStudentInfo(IN student_id INT, OUT student_name VARCHAR(100), OUT student_age INT)
BEGIN
SELECT name, age INTO student_name, student_age FROM students WHERE id = student_id;
END //
DELIMITER ;

调用这个存储过程的示例:

 

sql复制代码

CALL GetStudentInfo(1, @name, @age);
SELECT @name AS 'Name', @age AS 'Age';

到了这里,关于JAVA开发(手工处理数据库表数据的一些示例算法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络安全进阶学习第十二课——SQL手工注入3(Access数据库)

    判断数据库类型 —— 判断表名 —— 判断列名 —— 判断列名长度 —— 查出数据。 asp的网站,常用数据库为access、sqlserver。 and exsits (select * from msysobjects)0 access and exsits (select * from sysobjects)0 sqlserver 上述语句 会返回1或者0 。 msysobjects是access的默认数据库 , sysobjects是sqlserv

    2024年02月11日
    浏览(38)
  • 〖Python 数据库开发实战 - MongoDB篇⑯〗- MongoDB创建索引时的一些实用的重要选项参数

    订阅 Python全栈白宝书-零基础入门篇 可报销! 白嫖入口-请点击我。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏, 免费阶段订阅数量4300+ , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:加入社区的小伙

    2024年02月02日
    浏览(44)
  • 【JaveWeb教程】(17) MySQL数据库开发之 MySQL简介、安装、数据类型、SQL通用语法 详细代码示例讲解

    在我们讲解SpringBootWeb基础知识(请求响应案例)的时候,我们讲到在web开发中,为了应用程序职责单一,方便维护,我们一般将web应用程序分为三层,即:Controller、Service、Dao 。 之前我们的案例中,是这样子的请求流程:浏览器发起请求,先请求Controller;Controller接收到请求之

    2024年01月25日
    浏览(48)
  • 利用java.sql包--访问和处理数据库数据

    The java.sql package in Java provides the API for interacting with relational databases using JDBC (Java Database Connectivity). JDBC is a standard Java API that allows Java programs to connect to and interact with various database management systems (DBMS) using SQL (Structured Query Language). The java.sql package contains several important interfaces and

    2024年02月10日
    浏览(29)
  • 【JaveWeb教程】(22) MySQL数据库开发之多表查询:内连接、外连接、子查询 详细代码示例讲解(最全面)

    1.1.1 数据准备 SQL脚本: 1.1.2 介绍 多表查询:查询时从多张表中获取所需数据 单表查询的SQL语句:select 字段列表 from 表名; 那么要执行多表查询,只需要使用逗号分隔多张表即可,如: select 字段列表 from 表1, 表2; 查询用户表和部门表中的数据: 此时,我们看到查询结果中包

    2024年01月22日
    浏览(44)
  • 【JaveWeb教程】(20) MySQL数据库开发之 基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询 详细代码示例讲解

    在上次学习的内容中,我们讲解了: 使用DDL语句来操作数据库以及表结构(数据库设计) 使用DML语句来完成数据库中数据的增、删、改操作(数据库操作) 我们今天还是继续学习数据库操作方面的内容:查询(DQL语句)。 查询操作我们分为两部分学习: DQL语句-单表操作

    2024年02月02日
    浏览(67)
  • [开发|数据库] java程序人大金仓数据库适配笔记

    需要去人大金仓https://www.kingbase.com.cn/qd/index.htm下载linux版iso文件和授权文件(license-企业版-90天)。 iso文件需要挂载在指定目录下。 参考:(https://www.cnblogs.com/bluestorm/p/16941812.html)。 人大金仓数据库安装过程中出现乱码/内容不显示是因为jdk版本不匹配,通过asdf更换java版本为

    2024年02月12日
    浏览(30)
  • java八股文面试[数据库]——MySQL死锁的原因和处理方法

    1) 表的死锁 产生原因 : 用户A访问表A(锁住了表A),然后 又访问表B ;另一个用户B访问表B(锁住了表B),然后企图 访问表A ;这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B才能继续,同样用户B要等用户A释放表A才能继续,这就死锁就产生了。 用户A--》A表(表

    2024年02月09日
    浏览(38)
  • 【数据库开发】DataX开发环境的安装部署(Python、Java)

    DataX是阿里云DataWorks数据集成的开源版本。下载即可用,支持linux和windows,只需要短短几步骤就可以完成数据的传输。 官网地址: https://github.com/alibaba/DataX DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括

    2024年02月02日
    浏览(38)
  • JAVA JDBC数据库开发详解:从入门到精通

    简介: Java是一种面向对象,安全灵活的编程语言,已经成为了世界上最流行的编程语言之一。Java语言的一个重要应用领域就是数据库开发。通过Java JDBC(Java Database Connectivity) API,开发人员可以使用Java语言来访问并操作各种数据库。 本篇资料将会详细介绍Java JDBC数据库

    2024年02月02日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包