Java入门级教程7——eclipse新建Maven项目,创建和连接数据库,创建数据库表

目录

1.若没有Maven项目,可以选择新建

2.添加Maven依赖

3.数据库的创建

3.1 新建连接 --> 创建数据库

3.2 创建数据库表

4.连接数据库


1.若没有Maven项目,可以选择新建

步骤一:点击 File --> New --> Project

步骤二:点击 Maven Project

步骤三:点击Browse...选择存放项目的文件夹(或者保持默认位置)

步骤四:默认选项,直接点击next

步骤五:按要求填入标识,项目名称和默认包名

1. Group Id

  • 含义:项目所属组织 / 团体的唯一标识,通常采用反向域名格式(比如公司域名是 hy.com,则 Group Id 写为 com.hy)。

2. Artifact Id

  • 含义:项目本身的唯一名称(比如这里的 javamavendemo)。

3. Version

  • 含义:项目的版本号(比如 0.0.1-SNAPSHOT)。

4. Package

  • 含义:Java 代码的默认包名,用于组织项目内的类(避免不同类重名)。

步骤六:点击Finish完成Maven项目的创建

2.添加Maven依赖

若使用 Maven 管理项目,直接在pom.xml中添加依赖(自动下载驱动):

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.24</version>
</dependency>

3.数据库的创建

这里使用的是Navicat创建数据库

3.1 新建连接 --> 创建数据库

步骤一:新建连接,点击连接 --> MySQL(或者点击文件 --> 新建连接 --> MySQL 同理)

步骤二:输入连接名和密码,点击左下角测试连接,确保连接成功,然后点击确定

步骤三:右击创建的连接(如这里的localmysql),点击新建数据库

步骤四:输入数据库名,字符集和排序规则,点击确定,数据库创建完成

3.2 创建数据库表

步骤一:点击新建查询,右边紫色方框中选择创建的连接和数据库

步骤二:了解基本数据库语句

-- 1.DDL(数据定义语言):CREATE、DROP 、ALTER,只能执行一次 --
-- 2.DML(数据操纵语言):INSERT、UPDATE 、DELETE,可以执行多次 --
-- 3.DQL(数据查询语言):SELECT,可以执行多次 ---- 1.1 创建t_emps表 --
CREATE TABLE t_emps(eid INT PRIMARY KEY auto_increment, -- 员工的编号ename VARCHAR(20) NOT NULL, -- 员工的姓名epwd CHAR(8) NOT NULL, -- 员工的密码ebirthday datetime, -- 员工的出生年月,不设计年龄字段,会造成字段冗余esalary DOUBLE NOT NULL, -- 员工的工资eaddress VARCHAR(100) -- 员工的地址
)-- 1.2 删除t_emps表 --
DROP TABLE t_emps-- 1.3 修改表:给 t_emps 表添加一个字段,字段名称为:状态estate int类型 --
ALTER TABLE t_emps ADD estate INT;-- 2.1 插入数据 --
INSERT INTO t_emps(ename,epwd,ebirthday,esalary,eaddress,estate)
VALUES('赵五','11111','2000-05-28',90000.56,'南京',1);INSERT INTO t_emps(ename,epwd,ebirthday,esalary,eaddress,estate)
VALUES('李六','22222','2004-06-15',88000.69,'盐城',1);-- 2.2 更新表的字段值 --
UPDATE t_emps SET estate =1 WHERE eid =2;
UPDATE t_emps SET estate =0 WHERE eid =1;-- 2.3 删除表中的数据 --
DELETE FROM t_emps-- 3 查询表 --
SELECT * FROM t_emps-- SQL 聚合函数是数据统计分析的核心工具,常用场景包括: --
-- 统计总数(COUNT(*))、求和(SUM())、求平均(AVG()) --
-- 找最大 / 最小值(MAX()、MIN()) --
-- 分组统计(GROUP BY+ 聚合函数)、筛选聚合结果(HAVING) ---- 查询表中信息数量 --
SELECT count(*) FROM t_emps-- 查询表中符合条件的数量(count()括号内有什么,什么就不能为NULL) --
SELECT count(ename) FROM t_emps WHERE ename = '李六' AND epwd = '22222'-- 查询表中最大/小值,平均值和总值 --
SELECT max(esalary) FROM t_emps
SELECT min(esalary) FROM t_emps
SELECT avg(esalary) FROM t_emps
SELECT sum(esalary) FROM t_emps-- 查询表 --
SELECT * FROM t_empsINSERT INTO t_emps(ename,epwd,ebirthday,esalary,eaddress,estate)
VALUES('李老八','22222','1996-12-30',5600,'无锡',1);INSERT INTO t_emps(ename,epwd,ebirthday,esalary,eaddress,estate)
VALUES('赵二','22222','1996-12-30',5800,'无锡',0);-- 带条件查询 --
SELECT * FROM t_emps WHERE ename = '李六';-- 模糊查询 LIKE --
SELECT * FROM t_emps WHERE ename LIKE '李%';-- 查询李字开头,只有一个字的所有的员工信息 --
SELECT * FROM t_emps WHERE ename LIKE '李_';SELECT * FROM t_emps WHERE ename LIKE '李__';-- 查询李字开头,员工的数量 as 可选,起个别名 --
SELECT count(ename) as cn FROM t_emps WHERE ename LIKE '李%';-- 范围的查找,工资大于6000的员工的信息 --
SELECT * FROM t_emps WHERE esalary > 6000;-- 查询工资在5000和10000之间的员工信息 --
SELECT * FROM t_emps WHERE esalary >= 5000 and esalary<=10000;SELECT * FROM t_emps WHERE esalary BETWEEN 5600 and 10000;-- 查询工资最高的员工的姓名 子查询 一个结果作为另外一个查询的条件 --
SELECT ename FROM t_emps WHERE esalary =(SELECT max(esalary) FROM t_emps) -- 多值查询,员工的籍贯属于南京或无锡的员工的信息 --
SELECT * FROM t_emps WHERE eaddress in ('南京','无锡')-- 查询员工的来源地有哪些 去除重复的值用DISTINCT --
SELECT eaddress FROM t_emps SELECT DISTINCT eaddress FROM t_emps -- 查询员工来源地的数量分布 分组查询 --
SELECT count(ename), eaddress FROM t_emps GROUP BY eaddress-- 查询员工来源地的数量分布大于1个人 分组查询限制条件的关键字HAVING --
SELECT count(ename) cn, eaddress FROM t_emps GROUP BY eaddress 
HAVING cn>1-- 出生年月,没有写直接的年龄,age这个字段,一个表中不要出现冗余字段,
-- 表中的字段都是独立的,不要通过一个字段的计算方式得到另外一个字段的值-- 查询系统现在的时间 函数,内置函数SYSDATE() --
SELECT SYSDATE() FROM t_emps-- 查询年龄段 --
-- substring截取substring(字段,第一个字符,长度) --
SELECT substring(SYSDATE(),1,4)- substring(ebirthday,1,4) FROM t_emps-- 查询每个年龄段的员工的数量 ,FROM 表; FROM 临时结果集 --
SELECT count(age) ,age FROM (SELECT (substring(SYSDATE(),1,4)- substring(ebirthday,1,4)) age FROM t_emps) tmp GROUP BY age

步骤三:注明:这里连接数据库用到的sql语句如下

-- 创建t_emps表 --
CREATE TABLE t_emps(eid INT PRIMARY KEY auto_increment, -- 员工的编号ename VARCHAR(20) NOT NULL, -- 员工的姓名epwd CHAR(8) NOT NULL, -- 员工的密码ebirthday datetime, -- 员工的出生年月,不设计年龄字段,会造成字段冗余esalary DOUBLE NOT NULL, -- 员工的工资eaddress VARCHAR(100) -- 员工的地址
)-- 插入数据 --
INSERT INTO t_emps(ename,epwd,ebirthday,esalary,eaddress,estate)
VALUES('赵五','11111','2000-05-28',90000.56,'南京',1);INSERT INTO t_emps(ename,epwd,ebirthday,esalary,eaddress,estate)
VALUES('李六','22222','2004-06-15',88000.69,'盐城',1);INSERT INTO t_emps(ename,epwd,ebirthday,esalary,eaddress,estate)
VALUES('李老八','22222','1996-12-30',5600,'无锡',1);INSERT INTO t_emps(ename,epwd,ebirthday,esalary,eaddress,estate)
VALUES('赵二','22222','1996-12-30',5800,'无锡',0);-- 查询表 --
SELECT * FROM t_emps-- 查询表中信息数量 --
SELECT count(*) FROM t_emps

 注:选中需要运行的sql语句,点击“运行已选择的”,完成sql语句的执行 

4.连接数据库

步骤一:基本框架,初步建立数据库连接(进一步验证需要通过查询语句)

  • 其中数据库名称(此处为mysql2025),以及用户名和密码,需要替换为自己的
package com.hy.chapter1;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class DBDao {// 数据库连接对象,用于与数据库建立连接并执行操作Connection conn;public DBDao() {try {// 加载MySQL JDBC驱动Class.forName("com.mysql.cj.jdbc.Driver");// 建立数据库连接// 数据库地址(本机3306端口,数据库名mysql2025)conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql2025", "root", // 数据库用户名"yourpassword" // 数据库密码);if (conn != null) {System.out.println("数据库连接对象创建成功!");}} catch (ClassNotFoundException e) {System.out.println("Mysql驱动加载失败");e.printStackTrace();} catch (SQLException e) {System.out.println("数据库连接失败");e.printStackTrace();}}public static void main(String[] args) {DBDao dao = new DBDao();}
}

输出结果:

数据库连接对象创建成功!

步骤二:进行数据库表的查询

package com.hy.chapter1;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;public class DBDao {// 数据库连接对象,用于与数据库建立连接并执行操作static Connection conn;public DBDao() {try {// 加载MySQL JDBC驱动Class.forName("com.mysql.cj.jdbc.Driver");// 建立数据库连接// 数据库地址(本机3306端口,数据库名mysql2025)conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql2025", "root", // 数据库用户名"yourpassword" // 数据库密码);if (conn != null) {System.out.println("数据库连接对象创建成功!");}} catch (ClassNotFoundException e) {System.out.println("Mysql驱动加载失败");e.printStackTrace();} catch (SQLException e) {System.out.println("数据库连接失败");e.printStackTrace();}}public static void main(String[] args) {DBDao dao = new DBDao();// 第一个SQL:查询表的记录总数(用于初始化二维数组的行数)String sql = "select count(*) from t_emps";try {// 创建PreparedStatement对象(用于执行SQL语句)PreparedStatement pstmt = conn.prepareStatement(sql);// 执行查询,返回结果集(ResultSet)ResultSet rs = pstmt.executeQuery();int count = 0; // 记录总数while (rs.next()) { // 遍历结果集(此处只有一条记录,即总数)count = rs.getInt(1); // 获取第一列的值(即count(*)的结果)}System.out.println("count为:" + count); // 打印记录总数} catch (SQLException e) {e.printStackTrace();} finally {// 关闭数据库连接(避免资源泄漏)if (null != conn) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}
}

输出结果:

数据库连接对象创建成功!
count为:4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/96330.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/96330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

请求库-axios

Axios 是一个基于 Promise 的 HTTP 客户端库&#xff0c;用于浏览器和 Node.js 环境。它支持发送异步 HTTP 请求&#xff0c;并提供了简洁的 API 来处理请求和响应。1、安装axios因为axios是一个第三方库&#xff0c;所以在使用之前我们需要先安装第三方模块。安装 Axios 需通过…

电子烟的4种屏幕驱动集成语音方案介绍

目前电子烟在全球市场的表现非常不错&#xff0c;很多国产电子烟厂家都有非常不错的产品&#xff0c;而屏幕驱动方案是电子烟智能化的重要组成部分&#xff0c;今天就给大家带来电子烟的4种主流屏幕驱动方案(含2025年最新版方案)。​  方案一、LED显示方案语音播报集成方案 W…

无法加载 DLL“xxxxxxx.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

(无法加载 DLL“xxxxxxx.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。) 这个错误&#xff1a; 无法加载 DLL“ZH_P2P_Libx64.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E) 意味着你的程序在运行时试图加载一个名为 xxxxxxx.dll 的动态链接库&#…

Flask/Django 生产部署:Gunicorn vs Nginx,Windows 与 Linux 实战指引

Flask/Django 生产部署&#xff1a;Gunicorn vs Nginx&#xff0c;Windows 与 Linux 实战指引 TL;DR Gunicorn&#xff1a;Python WSGI 应用服务器&#xff0c;运行 Flask/Django&#xff08;Linux 用&#xff09;。Nginx&#xff1a;反向代理/网关&#xff08;TLS、静态、限流…

Nginx 优化与防盗链全解析:从性能调优到资源保护

Nginx 优化与防盗链全解析&#xff1a;从性能调优到资源保护 文章目录Nginx 优化与防盗链全解析&#xff1a;从性能调优到资源保护一、基础安全优化&#xff1a;隐藏版本号1.1 查看当前版本号1.2 两种隐藏/修改方案方案一&#xff1a;修改配置文件&#xff08;快速隐藏&#xf…

HOT100--Day20--39. 组合总和,22. 括号生成,79. 单词搜索

HOT100–Day20–39. 组合总和&#xff0c;22. 括号生成&#xff0c;79. 单词搜索 每日刷题系列。今天的题目是《力扣HOT100》题单。 题目类型&#xff1a;回溯。 关键&#xff1a;掌握排列&#xff0c;组合。记得回溯。可以重复选的话&#xff0c;下一层index从哪里开始&#x…

高并发场景下的“命令执行”注入绕道记

环境&#xff1a;CentOS 8 OpenResty 1.21 PHP-FPM 8.0 背景&#xff1a;营销团队上线了一个“图片裁剪”接口&#xff0c;参数直接拼进 shell_exec&#xff0c;结果被打成“矿机”。1. 发现&#xff1a;流量突增 30 倍&#xff0c;却不见数据库慢查询 iftop -i eth0出站 1.8…

【modbus学习】

Modbus通信&#xff08;源于施耐德&#xff09;串行链路&#xff1a;RTU&#xff08;传输大量数据&#xff0c;适合工业&#xff09;、ASCII&#xff08;少量数据&#xff0c;适合计算机&#xff09;TCP/IP&#xff1a;TCP&#xff08;传输严谨&#xff0c;效率低&#xff09;、…

Redis单线程模型为什么快?

Redis的单线程模型指的是redis只使用一个线程来出来所有的命令式指令&#xff0c;但是不是意味着redis内部就只使用一个线程来处理所有的任务。都知道redis是一个客户端-服务器的程序&#xff0c;那么redis就只有一个服务器&#xff0c;但是有多个客户端&#xff0c;就像mysql一…

前端安全攻防:XSS, CSRF 等常见威胁的防范与检测指南

在如今高度互联的 Web 应用世界里&#xff0c;前端安全不再是可有可无的选项&#xff0c;而是构建可信赖、健壮应用的基石。随着 Web 技术的发展&#xff0c;攻击者们也变得越来越狡猾&#xff0c;前端遭受的攻击手段层出不穷。其中&#xff0c;跨站脚本攻击 (XSS) 和跨站请求伪…

Scikit-learn Python机器学习 - 特征降维 压缩数据 - 特征选择 - 移除低方差特征(VarianceThreshold)

锋哥原创的Scikit-learn Python机器学习视频教程&#xff1a; 2026版 Scikit-learn Python机器学习 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程主要讲解基于Scikit-learn的Python机器学习知识&#xff0c;包括机器学习概述&#xff0c;特征工程(数据…

C#(链表创建与原地反转)

链表创建&#xff08;C#&#xff09; 在C#中&#xff0c;链表可以通过自定义节点类实现。每个节点包含数据域和指向下一个节点的引用。 public class ListNode {public int val;public ListNode next;public ListNode(int val0, ListNode nextnull) {this.val val;this.next…

Android --- AOSP源码导入Android Studio

AOSP代码量庞大&#xff0c;为了开发的方便&#xff0c;我们需要导入到android studio中&#xff0c;其中关键的一 项就是配置跳转。尤其是对于Framework开发来说生成 ipr,iml 工程文件make idegen ./development/tools/idegen/idegen.sh会生成如下文件首先需要修改ipr和iml文件…

游戏中的设计模式——第一篇 设计模式简介

前言 对于设计模式&#xff0c;相信很多开发者并不陌生&#xff0c;我在学习过程中希望把自己的一些总结和心得体会与你分享。 本专栏主要将重点放在设计模式在游戏中的应用&#xff0c;会结合大家熟悉的游戏场景和功能阐述设计模式在该处应用的好处。因为设计模式很多&#xf…

SpringBoot + RustFS 实现文件切片极速上传技术

本文将手把手教你如何通过 SpringBoot 和 RustFS 构建高性能文件切片上传系统&#xff0c;解决大文件传输的痛点&#xff0c;实现秒传、断点续传和分片上传等高级功能。 目录 一、为什么选择 RustFS SpringBoot&#xff1f; 二、环境准备与部署 2.1 安装 RustFS 2.2 Sprin…

在Word和WPS文字中便捷切换英文段落大小写

在Word和WPS文字中编辑英文段落时&#xff0c;有时候英文字母的大小写不规范&#xff0c;或者需要把某一段全部改为大写字母怎么办&#xff1f;使用ShiftF3组合键即可快速在三种模式中切换&#xff1a;全部大写、全部小写、首字母大写——其中首字母大写的Word是每一句话的第一…

成都金牛区哪里租好办公室?国际数字影像产业园享税收优惠

在成都金牛区租赁优质办公室&#xff0c;国际数字影像产业园凭借其享有的税收优惠政策&#xff0c;成为了许多企业的首选之地。税收优惠对于租赁办公室的企业来说&#xff0c;是一笔不小的成本节省。国际数字影像产业园针对入驻企业提供的税收优惠政策&#xff0c;能在企业运营…

CSS `:is()` `:where()` 实战指南:简化选择器,提升可维护性

&#x1f3af; CSS :is() & :where() 实战指南&#xff1a;简化选择器&#xff0c;提升可维护性你是否在项目中写过一大串重复的选择器&#xff1f;比如&#xff1a; h1, h2, h3, h4, h5, h6 { margin-bottom: 1rem; }这样的代码既冗长又难维护。 现在 CSS 提供了 :is() 和…

Linux I/O 访问架构深入分析

Linux I/O 访问架构深入分析 目录 概述I/O 架构层次核心数据结构I/O 处理流程VFS 虚拟文件系统块设备I/O字符设备I/O内存映射I/O异步I/O机制I/O调度器调试工具与方法性能优化策略 概述 Linux I/O 系统是一个多层次、高度抽象的架构&#xff0c;旨在为应用程序提供统一的文件访问…

Linux:6_基础IO

基础IO 一.理解"文件" 文件分类 1.内存级(被打开)文件 2.磁盘级文件 1. 狭义理解 文件在磁盘里磁盘是永久性存储介质&#xff0c;因此文件在磁盘上的存储是永久性的磁盘是外设 (即是输出设备也是输入设备)磁盘上的文件本质是对文件的所有操作&#xff0c;都是对外…