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
英文地址,請注明出處:http://en.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;都是對外…