【JAVA篇】/*数据库操作具体概述*/

hello,大家好,我依旧是你们熟悉的槿凉!那么最近呢也是快把java基础部分学完啦!然后今天赶上没有课。赶紧给大家更新博客,不然我就成了名副其实的"断更"博主了???

ok,废话不多说,今天我们要讲的内容就是数据库部分的知识点了,那么不可能一次性全部都讲的那么仔细,当然了我会用最简洁的语言去描述出最重要的知识点,以便于小伙伴们能够读完博客就觉得自己会了!!! 感觉自己是个数据库大佬  ?? 嗯……我有信心!

【JAVA篇】/*数据库操作具体概述*/_第1张图片

一:数据库基础:

1.什么是数据库?

定义:数据库是一种存储结构,它允许使用各种格式输入、处理和检索数据,不必在每次需要数据时重新输入。例如,当需要某人的电话号码时,需要查看电话薄,按照姓名来查阅,这个电话簿就是一个数据库。

数据库特点:

【JAVA篇】/*数据库操作具体概述*/_第2张图片

 我觉得书本内容大家看的更舒服……嗯没错就是这样。

【JAVA篇】/*数据库操作具体概述*/_第3张图片

 ok,这里已经了解到了数据库的概念和基本特点,我们这里再来介绍一下SQL语句。那什么是SQL语句呢?

定义:SQL即结构化查询语言,被广泛应用于大多数数据库中,使用SQL语言可以方便地查询、操作、定义和控制数据库中的数据。

1:select语句(用于从数据表中检索数据)

那么怎么用呢?

假设数据表名称是tb,要检索出tb表中所有女员工的姓名,年龄,并按年龄升序排序,代码如下:

select name,age from tb where sex = '女' order by age;

2:insect 语句(用于向表中插入新数据)

假设要向数据表tb中插入数据,代码如下:

insert into tb values('lili','女','销售部');

3:update语句(用于更新数据表中某些记录)

假设要将数据表tb中2号员工的年龄修改为24,代码如下:

update tb set age = 24 where id = 2;

4:delete语句(用于删除语句)

假设要删除数据表tb中编号为1024的员工,代码如下:

delete from tb where id = 1024;

那么到这里呢大家已经大致了解到数据库的部分知识啦,好了,接下来我们讲JDBC的具体概述!

首先,老样子,那么什么是JDBC呢?

定义:JDBC(全称是java database connectivity)是一种可用于执行SQL语句的javaAPI,(API的意思就是应用程序设计接口)是连接数据库和java应用程序的纽带。

JDBC的任务:

1:与数据库建立一个连接。

2:向数据库发送 SQL语句。

3:处理从数据库返回的结果。

注意:JDBC并不能直接访问数据库,必须依赖于数据库厂商提供的JDBC驱动程序。

JDBC的总体结构由4个组件构成:

应用程序、 驱动程序管理器、驱动程序和数据源。我们附上一张知识点图:

【JAVA篇】/*数据库操作具体概述*/_第4张图片

 是不是看的非常懵呢?其实我也很懵哈哈哈哈  那么,没有关系,我刚开始看的也是非常痛苦,其实我们不必要去死扣这些定义,我们直接到程序中来看:

【JAVA篇】/*数据库操作具体概述*/_第5张图片

二:ok,接下来我们来介绍一下JDBC中的常用类和接口。

1.DriverManager类是JDBC的管理层,用于管理数据中的驱动程序。在操作指定数据库之前,需要使用java中Class类的静态方法forName()加载指定数据库的驱动程序。

Class.forName("包名");

 DriverManager类的常用方法:getConnection(String url,String user,String password) 指定三个入口参数(依次是连接数据库的URL、用户名、密码)来获取数据库的连接

 2.Connection接口代表与特定的数据库连接,在连接上下文中执行SQL语句并返回结果。

【JAVA篇】/*数据库操作具体概述*/_第6张图片

 3.Statement接口用于在已经建立连接的基础上向数据库发送SQL语句。

【JAVA篇】/*数据库操作具体概述*/_第7张图片

 4.ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。ResultSet实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,通过next()方法可将指针往下移。

三:数据库操作

1:首先我们来连接本地数据库

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionUtil {

	public static void main(String[] args) {
		Connection con = null; // 声明数据库连接对象
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");// 加载数据库驱动类
			// 通过访问数据库的URL,获取数据库连接对象
			con = DriverManager.getConnection(
					"jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&allowPublicKeyRetrieval=true",
					"root", "123456");
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

		if (con != null) {// 如果数据库不为空
			System.out.println("数据库连接成功!");
			System.out.println(con);
		}
	}

}

   2.向数据库发送SQL语句(语法如下):

Statement stmt = con.createStatement();

  3.处理查询结果集(语法如下):

ResultSet res = stmt.executeQuary("select*from tb_stu");

   4.顺序查询(ResultSet类的next()方法的返回值是boolean类型的数据,当游标移动到最后一行之后会返回false。

例:下面的实例就是将数据表tb_stu表中的全部信息显示在控制台上。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCDemo {

	public static void main(String[] args) {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");// 加载数据库驱动类
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		try {
			// 通过访问数据库的URL,获取数据库连接对象
			Connection con = DriverManager.getConnection(
					"jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&allowPublicKeyRetrieval=true",
					"root", "123456");
			Statement stmt = con.createStatement();
			ResultSet res = stmt.executeQuery("select * from tb_stu");
			while (res.next()) { // 如果当前语句不是最后一条,则进入循环
				String id = res.getString("id"); // 获取列名是id的字段值
				String name = res.getString("name"); // 获取列名是name的字段值
				String sex = res.getString("sex"); // 获取列名是sex的字段值
				String birthday = res.getString("birthday"); // 获取列名是birthday的字段值
				System.out.print("编号:" + id); // 将列值输出
				System.out.print(" 姓名:" + name);
				System.out.print(" 性别:" + sex);
				System.out.println(" 生日:" + birthday);
			}
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

  运行结果如下:

【JAVA篇】/*数据库操作具体概述*/_第8张图片

 5.模糊查询

SQL语句中提供了LIKE操作符御用模糊查询,可使用"%"来代替0个或多个字符,使用下划线“—”来代替一个字符。例如,在查询姓张的同学信息时,可以使用以下SQL语句:

select* from tb_stu where name like'张%'

例:<找出所有姓张的同学>

​


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCDemo2 {

	public static void main(String[] args) {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");// 加载数据库驱动类
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		try {
			// 通过访问数据库的URL,获取数据库连接对象
			Connection con = DriverManager.getConnection(
					"jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&allowPublicKeyRetrieval=true",
					"root", "123456");
			Statement stmt = con.createStatement();
			ResultSet res = stmt.executeQuery("select * from tb_stu where name like '张%'");
			while (res.next()) { // 如果当前语句不是最后一条,则进入循环
				String id = res.getString("id"); // 获取列名是id的字段值
				String name = res.getString("name"); // 获取列名是name的字段值
				String sex = res.getString("sex"); // 获取列名是sex的字段值
				String birthday = res.getString("birthday"); // 获取列名是birthday的字段值
				System.out.print("编号:" + id); // 将列值输出
				System.out.print(" 姓名:" + name);
				System.out.print(" 性别:" + sex);
				System.out.println(" 生日:" + birthday);
			}
			con.close();							// 关闭数据库连接
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}
}

[点击并拖拽以移动]
​

     五: 咳咳,终于讲完啦! 

【JAVA篇】/*数据库操作具体概述*/_第9张图片

 好了,欢乐的学习时间总是这么短暂,那么到这里也就要和大家说拜拜啦,我们下篇博客见!

你可能感兴趣的:(JAVA篇,java,数据仓库,数据库架构)