Java-mysql:MYSQL数据操作

article/2025/8/21 5:52:54

添加记录:1.一次添加一条记录:INSERT [INTO] 数据表名[(字段名称1,2……)] {VALUE|VALUES}(值1,2……);2.一次添加多条记录:INSERT [INTO] 数据表名[(字段名称1,2……)] VALUES(值1,2……),(值1,2……),(值1,2……)……;3.INSERT……SET的形式:INSERT 数据表名 SET 字段名称1=值1,字段名称2=值2……;

  • 首先创建数据库,创建数据表;
CREATE DATABASE IF NOT EXISTS imooc1 DEFAULT CHARACTER SET 'UTF8';
USE imooc1;
CREATE TABLE IF NOT EXISTS user1(id INT UNSIGNED AUTO_INCREMENT KEY COMMENT "编号",username VARCHAR(20) NOT NULL UNIQUE COMMENT "用户名",age TINYINT UNSIGNED DEFAULT 18 COMMENT "年龄",email VARCHAR(50) NOT NULL DEFAULT "imooc@qq.com" COMMENT "邮箱"
)ENGINE=INNODB CHARSET=UTF8;
  • 以不指定字段名称的方式向表中添加记录;
-- 不指定字段名称
INSERT user1 VALUE(1, "coco", 22, "coco@qq.com");
INSERT user1 VALUES(DEFAULT, "lili", 18, "lili@qq.com");
  • 以列出指定字段的形式向表中添加记录;
-- 列出指定字段的形式
INSERT user1(username, email) VALUES("rose", "rose@qq.com");
  • 一次向表中添加多条记录;
-- 一次添加多条记录
INSERT user1 VALUES(NULL, "mini", 23, "mini@qq.com"), 
(DEFAULT, "jack", 25, "jack@qq.com");
  • 以INSERT……SET的形式添加记录;
-- INSERT……SET的形式
INSERT user1 SET username = "a", email = "a@qq.com";

修改记录UPDATE 表名 SET 字段名称=值,字段名称=值 [WHERE 条件];如果不添加条件,整个表中的记录都会被更新。

  • 修改某条记录的指定字段名称的值;
UPDATE user1 SET age = 24 WHERE id = 1;
UPDATE user1 SET username = "lyly", age = 22, email = "lyly@qq.com" WHERE id = 3;
  • 向表中所有用户的年龄加10;
-- 向表中所有用户年龄加10
UPDATE user1 SET age = age + 10;
  • 向表中id<=3的用户年龄减20,将邮箱改为默认值
-- 向表中id<=3的用户年龄减20,将邮箱改为默认值
UPDATE user1 SET age = age - 20, email = DEFAULT WHERE id <= 3;

删除记录

  • DELETE FROM 表名 [WHERE 条件];如果不添加条件,整个表中的记录都会被更新。
DELETE FROM user1 WHERE username = "coco";
  • DELETE清空数据表的时候不会重置AUTO_INCREMENT的值,可以通过ALTER语句将其重置为1。
ALTER TABLE user1 AUTO_INCREMENT = 1;
  • 彻底清空数据表:TRUNCATE [TABLE] 表名;作用1:清除表中所有记录。作用2:会重置AUTO_INCREMENT的值。
TRUNCATE user1;

查询记录

  • SELECT 要查询内容1…… FROM 表名 [WHERE 条件] [GROUP BY {字段名称|位置} HAVING 二次筛选] [ORDER BY {字段名称|位置|表达式}[ASC|DESC]] [限制结果集的显示条数];
  • 查询表中所有记录(所有字段):SELECT * FROM 表名;
SELECT * FROM user1;
  • 指定字段的信息:SELECT 字段名称,…… FROM 表名;
SELECT username, age FROM user1;
  • 库名.表名:SELECT 字段名称,…… FROM 数据库名.表名;
-- 查询imooc数据库下user1表中的所有记录
SELECT * FROM imooc.user1;
  • 给字段起别名:SELECT 字段名称 [AS] 别名名称,…… FROM 数据库名.表名;
-- 给字段起别名 id 编号  username 用户名 email 邮箱
SELECT id AS "编号", username AS "用户名", email AS "邮箱" FROM user1;
  • 给数据表起别名:SELECT 字段名称,…… FROM 表名 [AS] 别名;
-- 给表起别名
SELECT id, username FROM user1 AS u;
  • 表名.字段名称:SELECT 表名.字段名称,…… FROM 表名;
-- 测试表名.字段名称
SELECT user1.id, user1.username FROM user1;
  • WHERE条件:会筛选出符合条件的记录。
  1. 比较运算符:> >= < <= != <> <=>
    <=> 和 = 的区别:<=>可以检测NULL值。
  2. IS [NOT] NULL :检测值是否为NULL或者NOT NULL。
  3. 指定范围:[NOT] BETWEEN …… AND
-- 测试范围 BETWEEN……AND
-- 查询年龄在18~30之间的用户
SELECT user1.id, user1.username, user1.email FROM user1 
WHERE age BETWEEN 18 AND 30;

4.指定集合:[NOT] IN(值, ……)

-- 测试指定集合 IN
-- 查询id为 1,3,5
SELECT id, username, age FROM user1
WHERE id IN(1, 3, 5);
-- 查询username不为coco, rose
SELECT id, username, age FROM user1
WHERE username NOT IN("coco", "rose");

5.逻辑运算符:AND 逻辑与 OR 逻辑或

-- 测试逻辑运算符
-- 查询id<3且age>20的用户
SELECT id, username, age FROM user1
WHERE id < 3 AND age > 20;

6.匹配字符:①[NOT] LIKE ②% 任意长度的字符串 ③_ 任意一个字符

-- 测试模糊查询 [NOT] LIKE
SELECT id, username, email FROM user1 
WHERE username LIKE "lili";
-- 要求用户名中包含l,查询字母不区分大小写
-- l出现在字符任意位置
SELECT id, username, email FROM user1 
WHERE username LIKE "%l%";   
-- l出现在字符起始位置
SELECT id, username, email FROM user1 
WHERE username LIKE "l%";   
-- l出现在字符末尾位置
SELECT id, username, email FROM user1 
WHERE username LIKE "%l"; 
-- 用户名长度为四位的用户
SELECT id, username, email FROM user1 
WHERE username LIKE "____"; 
SELECT id, username, email FROM user1 
WHERE username LIKE "__s_"; 
  • GROUP BY 分组:
  1. 把值相同的放到一个组中,最终查询出的结果只会显示组中一条记录
-- 按照性别分组
SELECT username, age, sex FROM user1
GROUP BY sex;
  1. 分组配合GROUP_CONCAT() 查看组中某个字段的详细信息
-- 按照用户名分组,查询组中的用户名有哪些
SELECT CONCAT(username), age, email FROM user1
GROUP BY username;
  1. 配合聚合函数使用

(1)COUNT() 统计记录总数,如果写的是COUNT(字段名称),字段中的值为NULL,不统计进来,若写COUNT(*)会统计NULL值

-- 测试COUNT()
SELECT COUNT(*) FROM user1;
SELECT COUNT(id) FROM user1;
SELECT COUNT(*) AS total_username FROM user1;
-- 结合GROUP BY使用
-- 按照sex分组,得到用户名详情,并且分别组中的总人数
SELECT sex, GROUP_CONCAT(username) AS usersDetail, COUNT(*) AS totalUsers FROM user1
GROUP BY sex;

(2)SUM() 求和;MAX() 求最大值;MIN() 求最小值;AVG() 求平均值

-- 按照addr分组,得到用户名详情,总人数,得到组中年龄的总和,年龄的最大值、最小值、平均值和
SELECT addr, 
GROUP_CONCAT(username) AS usersDetail,
COUNT(*) AS totalUsers,
SUM(age) AS sum_age,
MAX(age) AS max_age,
MIN(age) AS min_age,
AVG(age) AS avg_age
FROM user1
GROUP BY addr;
  1. 配合WITH ROLLUP关键使用:会在记录末尾添加一条记录,是上面所有记录的总和
  2. 结合WHERE条件,查询age>=25的用户,查询用户名详情用usersDetail命名,并且按照sex分组
SELECT sex, 
GROUP_CONCAT(username) AS userDetail,
COUNT(*) AS totalUsers
FROM user1
WHERE age >= 25
GROUP BY sex;
  1. HAVING子句对分组结果进行二次筛选
    不进行二次筛选:
-- 按照addr分组,统计总人数、
SELECT addr, 
GROUP_CONCAT(username) AS usersDetail,
COUNT(*) AS	totalUsers
FROM user1
GROUP BY addr;

结果:
在这里插入图片描述
进行二次筛选:

-- 对于分组结果进行二次筛选,条件是组中总人数>=2
SELECT addr,
GROUP_CONCAT(username) AS usersDetail,
COUNT(*) AS totalUsers
FROM user1
GROUP BY addr
HAVING COUNT(*) >= 2;

结果:
在这里插入图片描述

  • ORDER BY 排序 ORDER BY 字段名称 ASC|DESC
    ASC 升序 , DESC 降序
-- 按照id降序排列
SELECT id, username, age
FROM user1
ORDER BY id DESC;

结果:
在这里插入图片描述

-- 按照多个字段排序
SELECT id, username, age
FROM user1
ORDER BY age ASC, id DESC;

结果:
在这里插入图片描述

-- 实现随机记录
SELECT id, username, age
FROM user1
ORDER BY RAND();

结果:
在这里插入图片描述

  • LIMIT限制结果集显示条数
    LIMIT值:显示结果集的前几条记录
SELECT id, username, age, sex
FROM user1
LIMIT 5;

LIMIT offset, row_count :从offset开始,显示row_count条记录,

SELECT id, username, age, sex
FROM user1
ORDER BY id DESC
LIMIT 0, 5;

练习

-- 更新user1表中的前3条记录,将age+5
UPDATE user1 SET age = age + 5
LIMIT 3;-- 将user1表中id字段降序排列,更新前三条记录,将age-10
UPDATE user1 SET age = age - 10
ORDER BY id DESC
LIMIT 3;-- 删除user1表中前三条记录
DELETE FROM user1 LIMIT 3;-- 删除user1表中id字段降序排列的前三条记录
DELETE FROM user1 
ORDER BY id DESC
LIMIT 3;

http://chatgpt.dhexx.cn/article/rEOmsrUH.shtml

相关文章

java JDBC操作Mysql解析

一. 概念&#xff1a; Java DataBase Connectivity Java 数据库连接&#xff0c; Java语言操作数据库。JDBC本质&#xff1a;其实是官方&#xff08;sun公司&#xff09;定义的一套操作所有关系型数据库的规则&#xff0c;即接口。各个数据库厂商去实现这套接口&#xff0c;提…

java对mysql的简单操作——增加数据

java连接mysql5.1教程&#xff08;含代码&#xff09; 查询数据 下面是数据添加片段的代码 Connection conn null; Statement stmt null; PreparedStatement psnull;try{// 注册 JDBC 驱动Class.forName(JDBC_DRIVER);// 打开链接//连接数据库conn DriverManager.getConne…

Java和MySQL的连接和操作(JDBC)

一、数据库的连接 1. 引入JDBC驱动程序 1.1 如何获取驱动程序 驱动程序由数据库提供商提供下载。 MySQL 的驱动下载地址&#xff1a;http://dev.mysql.com/downloads/ 依次点击 Connector/J -> Platform Independent &#xff0c;如然后下载下面那个 1.2 如何在Java …

Java连接MySQL数据库具体操作

一&#xff0c;主要分为5个步骤 1&#xff0c;获取驱动 首先下载自己mysql版本的jar包 下载地址&#xff1a;MySQL :: Download Connector/J 将下载好的jar包复制到jdk的安装目录下的jre下的lib下的ext目录下 mysql.5及以下的版本获取驱动是Class.forName("com.mysql.jdb…

MySQL学习(五)JDBC 使用java操作数据库

目录 1.JDBC基本原理 2.数据库驱动包的导入&#xff08;环境配置&#xff09; 3.JDBC的使用步骤 4.JDBC的常用接口和抽象类 5.核心小结&#xff1a; 1.JDBC基本原理 现在&#xff0c;要使用java操作数据库&#xff0c;则我们的项目的构建或者说代码的组成增加为了三方&…

Java JDBC操作MySQL

DBMS里有多个数据库&#xff0c;每个库中又有多张表。 客户端有命令终端(DoS)、SQLyog、Java等。 Mysql数据库、普通表的本质仍然是文件。 表的一行称为一条记录&#xff0c;对应Java中的一个对象。 SQL语句的分类为 1、DDL数据定义语言 create 表、库 2、DML 数据操作语言 in…

Java对MySQL数据库进行操作【java】

数据库几乎是每一个应用型的程序都会用到&#xff0c;学会如何高效操作数据库也是开发一个重点。今天我总结了具体的操作步骤以及注意点。Java访问数据库主要用的方法是JDBC&#xff0c;它是java语言中用来规范客户端程序如何来访问数据库的应用程序接口&#xff0c;提供了诸如…

Java 中使用 MySql以及一些Mysql 基本的命令

Linux mint 环境下配置 mysql 打开终端输入 sudo apt-get install mysql-server,回车即可安装 mysql&#xff0c;当然如果你想使用最新的 mysql&#xff0c;可以去官方下载并且配置&#xff0c;教程网上有很多&#xff0c;就不再赘述。 安装完成之后&#xff0c;在终端中输入…

【java对MySQL的操作详解】java学习之增查

文章目录 前言一&#xff0c;封装JDBC二&#xff0c;增2.1&#xff0c;UserDAO.java2,2&#xff0c;UserServier.java2,3&#xff0c;userUI.java添加用户 三&#xff0c;查3.1&#xff0c;UserUI伪iu3.2&#xff0c;UserServier.java3.3&#xff0c;UserDAO.java END 前言 具…

在Java中操作MySQL(JDBC)

准备工作 ideamysql 官方的 jdbc 驱动 先在 idea 中建立一个新的 java 工程 直到这一步之前&#xff0c;一直按下一步就行了 把名字改改直接 finish 在这个工程下面建立一个名字为 lib 的空文件夹 去官方下载依赖的包 https://dev.mysql.com/downloads/connector/j/ 选…

java操作mysql数据库

java操作mysql数据库 学习到数据库操作这一章&#xff0c;遇到了很多问题&#xff0c;只能说无论什么时候&#xff0c;用什么工具来操作数据库&#xff0c;都不是一件简单的事情。 简单记录一下 数据库连接 先看代码界面 要连接数据库&#xff0c;首先需要导入mysql依赖包&…

用Java操作MySQL

用Java操作MySQL目录 一、创建数据库1、建库2、建表 二、开始准备jdbc1、导入mysql驱动jar包2、开始写jdbc代码 三、那就运行吧附&#xff1a;最终代码DBUtilMaindb.properties 一、创建数据库 打开Navicat&#xff08;我用的是DataGrip&#xff09;的查询控制台 1、建库 sq…

c++ opencv 身份证OCR识别:前期数据训练库准备(tesseractOCR)

前言&#xff1a;本文已经在个人博客更新排版和讲解【传送门】 整个教程已经在有道云写好了&#xff0c;在博客要重新把每个图片再上传一次有点累&#xff0c;先截了图直接看吧&#xff01;如果有需要有提供word版本可以下载 https://download.csdn.net/download/stopping5/11…

身份证正反面识别,身份证扫描识别,二代身份证OCR识别,OCR极速识别身份证所有信息正反面均可。离线无需联网,极速秒扫。

项目说明 极速识别二代身份证、驾驶证、护照 (无需联网&#xff0c;离线秒扫&#xff0c;极速识别)身份证所有信息, 包含姓名、性别、出生年月、详细地址&#xff0c;正反面。不需要联网即可离线识别身份证所有信息包括新疆少数民族身份证&#xff0c;识别速度快&#xff0c;识…

如何对接身份证OCR?

【身份证OCR文字识别】身份证OCR识别-身份证识别-身份证-OCR文字-身份证OCR文字-身份证OCR-身份证OCR图像识别【最新版】_图像识别_身份证识别_OCR-云市场-阿里云 身份证OCR免费体验 Java代码如下 public static void main(String[] args) {String host "https://idcar…

实名二代身份证OCR识别

在银行、信用社、航空、保险、电信等部门单位办理手续或证件时&#xff0c;常需要身份证件&#xff0c;但业务人员手工录入速度慢、办公效率太低是一大亟需解决的问题&#xff0c;通常要先通过扫描或拍照&#xff0c;来获取身份证上面的头像&#xff0c;然后再手工填写用户的身…

Opencv实现身份证OCR识别

Opencv 配置IDEA可参考&#xff1a;https://blog.csdn.net/zwl18210851801/article/details/81075781 opencv位置&#xff1a; OpencvUtil类&#xff1a; package com.x.common.utils;import org.opencv.core.*; import org.opencv.core.Point; import org.opencv.imgcodecs.…

身份证OCR实名认证接口

人工智能&#xff0c;身份证&#xff0c;OCR实名验证 一、接口介绍 自动识别及快速提取二代居民身份证正反面所有字段&#xff0c;包括姓名、性别、民族、出生日期、住址、身份证号、签发机关、有效期限&#xff0c;实时联网核查校验是否一致。对URL网络图片或base64信息进行…

身份证OCR识别SDK

一、身份证OCR识别SDK应用背景 随着Android、IOS智能手机的普及&#xff0c;5G通信技术的发展&#xff0c;移动互联迎来了爆发式增长&#xff0c;越来越多的公司都推出了自己的移动APP、小程序等应用。这些应用多数都涉及到个人身份证信息的输入认证&#xff08;即实名认证&…

阿里云智能身份证OCR文字识别

智能身份证OCR文字识别 做的项目里面涉及到了身份证识别输入的真实姓名与身份证号码是否匹配功能&#xff0c;于是在阿里云接了智能身份证OCR文字识别API&#xff0c;登录阿里云找到对应的产品&#xff0c;如下图 购买使用然后生成对应的APPcode。 使用的demo有蛮多&#xff0c…