目錄
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