首页 > 数据库 >Java学习笔记——数据库

Java学习笔记——数据库

时间:2023-12-03 20:12:03浏览次数:42  
标签:语句 JDBC Java 数据库 表中 笔记 查询 SQL

数据库的基本概念

数据库和数据库管理系统 (DBMS):

  • 数据库是一个组织数据的集合,可以通过一定的结构和规则进行管理和访问。数据库管理系统 (DBMS) 则是用于管理和操作数据库的软件。

关系型数据库管理系统 (RDBMS):

  • 关系型数据库以表格的形式存储数据,其中行被称为记录,列被称为字段。表格的集合被称为
  • 一个表通常代表一个实体,而实体之间存在关系,通过实体关系图 (ER 图) 进行表示。
  • 使用结构化查询语言 (SQL) 进行数据库查询。
    image

记录、字段、表:

  • 记录 (Record): 表示数据库中的一行数据,包含多个字段的值。
  • 字段 (Field): 表示数据库中的一列数据,存储某种类型的信息。
  • 表 (Table): 数据库中的一个结构化数据集合,由多个记录和字段组成。
  • 表头
  • PK表示不能为空且不能重复,YES表示不能为空,NO表示可以为空

image

  • 记录

image

实体和关系:

  • 实体 (Entity): 在数据库中通常表示一个具体的对象或概念,对应数据库中的一个表。
  • 关系 (Relation): 表示不同实体之间的联系,可以通过外键等机制建立实体之间的关系。
  • 实体和关系可以化成一张图(ER图)

结构化查询语言 (SQL):

  • SQL 是一种用于管理和查询关系型数据库的标准化语言。通过 SQL,可以执行数据库的各种操作,包括查询、插入、更新、删除等。

关系型数据库的设计和管理是数据库领域的核心概念,它提供了一种灵活的结构来组织和存储数据,并支持复杂的查询和关系操作。

主键、外键和表的概念

  1. 主键 (Primary Key):
    • 主键是表中的一列或一组列,用于唯一标识表中的每一行数据。主键的值不能重复,且不能为空。通常情况下,主键用于确保表中的数据行可以唯一地被标识和检索。
    • 在学生信息表 (StudentInfo) 中,可能有一个名为 StudentID 的列作为主键,用于唯一标识每个学生的信息。
  2. 外键 (Foreign Key):
    • 外键是表中的一列,它建立了与另一表的关联关系。外键的值通常与另一表的主键值相对应,以建立表之间的关系。通过外键,可以在不同表之间建立引用关系,实现数据的关联和连接。
    • 在课程信息表 (CourseInfo) 中,可能有一个名为 StudentID 的列作为外键,用于关联学生信息表中的主键,建立学生与课程之间的关系。
  3. 表的概念:
    • 表是关系型数据库中的一个基本概念,用于组织和存储数据。每个表由多个列组成,每列包含一个字段的数据。表中的每一行则表示一条记录,记录了表中各列的具体数值。
    • 在学生信息表 (StudentInfo) 和课程信息表 (CourseInfo) 中,分别存储了学生的个人信息和课程的相关信息。

通过主键和外键的设计,可以在不同表之间建立关联,实现更复杂的数据模型和查询操作。主键和外键的使用是数据库设计中的关键步骤,能够有效组织和管理数据库中的数据。

SQL 语法

在关系型数据库中,SQL(Structured Query Language)是一种用于管理和操作数据库的标准化语言。SQL 语言主要包括 CRUD 操作,即对数据的创建、检索、更新和删除。

CRUD 操作和应用:

  • Create (创建): 通过 INSERT 语句在表中添加新的数据行。
    -- 示例:向学生信息表中插入一条新记录
    INSERT INTO StudentInfo (StudentID, FirstName, LastName, Age)
    VALUES (1, 'John', 'Doe', 20);
    
  • Retrieval (检索): 通过 SELECT 语句从表中检索数据。
    -- 示例:检索学生信息表中的所有记录
    SELECT * FROM StudentInfo;
    
  • Update (更新): 通过 UPDATE 语句更新表中的数据。
    -- 示例:更新学生信息表中的记录
    UPDATE StudentInfo
    SET Age = 21
    WHERE StudentID = 1;
    
  • Delete (删除): 通过 DELETE 语句从表中删除数据。
    -- 示例:删除学生信息表中的记录
    DELETE FROM StudentInfo
    WHERE StudentID = 1;
    

这些 SQL 语句是进行基本的数据库操作的关键。通过组合和使用这些语句,可以实现对数据库中数据的增删改查操作。在实际应用中,这些操作是数据库管理和开发中的常见任务。

Select

Data

image

  • Queryimage

  • Resultimage



  • Queryimage

  • Result
    image


  • Queryimage

  • Result
    image


  • Queryimage

  • Result
    image



  • Queryimage

  • Result

image


用于日期

  • Queryimage

  • Result

image


模糊查询


  • Queryimage

  • Result

image


排序


  • Queryimage

  • Result

image


统计数据


  • Queryimage

  • Result

image

删除

Data

image

  • Queryimage

  • Result(注意,DELETE是无返回值的,下面的就是一个形象化的结果,实际上是数据库修改后的状态

image

插入

Data

image

  • Queryimage

  • Result(注意,INSERT是无返回值的

注意:有一些列可以不写,所以需要在()内标明你需要写入的内容

Data

image

  • Queryimage

  • Result(注意,UPDATE是无返回值的,下面的就是一个形象化的结果,实际上是数据库修改后的状态

image

JDBC - Java Database Connectivity

JDBC(Java Database Connectivity)是 Java 提供的用于实现与数据库连接和操作的 API。它允许 Java 应用程序通过标准化的方式与数据库进行通信,执行 SQL 查询,更新数据库记录等操作。

JDBC 主要功能和特点:

  1. 数据库连接:
    • JDBC 允许 Java 应用程序通过 JDBC 驱动程序与各种数据库建立连接。每个数据库都需要相应的 JDBC 驱动程序,用于与数据库通信。
  2. SQL 查询和更新:
    • 通过 JDBC,可以执行 SQL 查询语句以检索数据库中的数据,也可以执行更新语句(INSERT、UPDATE、DELETE)以修改数据库记录。
  3. 事务管理:
    • JDBC 支持事务管理,允许在数据库上执行事务操作。通过设置事务的隔离级别、提交或回滚事务,可以确保数据库的一致性和完整性。
  4. 异常处理:
    • JDBC 提供了处理数据库操作过程中的异常的机制。通过捕获和处理异常,可以实现更健壮的数据库操作。
  5. 元数据访问:
    • JDBC 允许访问数据库的元数据,包括表结构、列信息等。这使得在运行时获取和分析数据库的结构成为可能。

JDBC 基本步骤:

  1. 加载驱动程序:

    • 使用 Class.forName("com.mysql.cj.jdbc.Driver"); 加载数据库驱动程序。
  2. 建立连接:

    • 使用 Connection 接口获取数据库连接对象,通常需要提供数据库的 URL、用户名和密码。
  3. 创建 Statement 对象:

    • 使用 Statement 接口创建 SQL 语句的执行对象。
  4. 执行 SQL 语句:

    • 使用 Statement 对象执行 SQL 查询或更新语句。
  5. 处理结果:

    • 处理执行 SQL 后返回的结果,如查询结果集或更新的记录数。
  6. 关闭连接:

    • 使用 close() 方法关闭连接,释放资源。

    image

JDBC 提供了一种灵活和通用的方式,使 Java 应用程序能够与各种关系型数据库进行交互。通过 JDBC,开发人员可以在 Java 应用程序中轻松地实现对数据库的访问和操作。

image

如果写全的话:

image

扩充知识:

ResultSetMetaData 是 JDBC 中的一个接口,它用于获取关于 ResultSet 中列的元数据信息。元数据是描述数据的数据,因此 ResultSetMetaData 提供了关于查询结果集中列的信息,如列的数量、列名、列的数据类型等。

以下是 ResultSetMetaData 的主要方法和用法:

  1. 获取列数:
    • getColumnCount(): 返回结果集中的列数。
    ResultSetMetaData metaData = resultSet.getMetaData();
    int columnCount = metaData.getColumnCount();
    
  2. 获取列名:
    • getColumnName(int column): 返回指定列的名称。
    String columnName = metaData.getColumnName(1); // 获取第一列的列名
    
  3. 获取列的数据类型:
    • getColumnType(int column): 返回指定列的 SQL 数据类型。
    int columnType = metaData.getColumnType(1); // 获取第一列的数据类型
    
  4. 获取列的显示大小:
    • getColumnDisplaySize(int column): 返回指定列的最大显示宽度(以字符为单位)。
    int displaySize = metaData.getColumnDisplaySize(1); // 获取第一列的显示大小
    
  5. 判断列是否允许为空:
    • isNullable(int column): 返回指定列是否允许包含 NULL 值。
    int nullable = metaData.isNullable(1); // 获取第一列是否允许为空
    
  6. 其他方法:
    • 还有其他方法用于获取关于列的精度、标度、表名等信息。

ResultSetMetaData 可以帮助开发人员在运行时了解查询结果集的结构,从而更灵活地处理查询结果中的数据。


在 JDBC 中,有两种常用的执行 SQL 语句的方法,分别是 executeUpdateexecuteQuery

1. executeUpdate 方法

executeUpdate 方法通常用于执行对数据库进行修改的 SQL 语句,比如 INSERT、UPDATE、DELETE 等操作。这些操作不返回结果集,而是返回一个整数值,表示受影响的行数。

Statement statement = connection.createStatement();
int rowCount = statement.executeUpdate("UPDATE tableName SET column1 = value1 WHERE condition");

在上述代码中,executeUpdate 方法执行了一个更新操作,将满足条件的记录的某个列的值进行修改。rowCount 变量将包含被修改的行数。

2. executeQuery 方法

executeQuery 方法用于执行查询操作,返回一个 ResultSet 对象,该对象包含查询结果的数据。通常用于执行 SELECT 语句。

Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT column1, column2 FROM tableName WHERE condition");

在这个例子中,executeQuery 方法执行了一个查询操作,返回了一个包含满足条件的结果集的 ResultSet 对象。

注意事项

  • 使用 executeUpdate 时,应注意 SQL 语句的正确性和合法性,因为该方法通常用于执行对数据库结构进行修改的操作。
  • 使用 executeQuery 时,应处理返回的 ResultSet 对象以获取查询结果的数据。

选择使用哪种方法取决于执行的 SQL 语句的类型以及是否需要处理返回的结果集。


在 JDBC 中,有两种常用的执行 SQL 语句的方法,分别是 executeUpdateexecuteQuery

1. executeUpdate 方法

executeUpdate 方法通常用于执行对数据库进行修改的 SQL 语句,比如 INSERT、UPDATE、DELETE 等操作。这些操作不返回结果集,而是返回一个整数值,表示受影响的行数。

Statement statement = connection.createStatement();
int rowCount = statement.executeUpdate("UPDATE tableName SET column1 = value1 WHERE condition");

在上述代码中,executeUpdate 方法执行了一个更新操作,将满足条件的记录的某个列的值进行修改。rowCount 变量将包含被修改的行数。

2. executeQuery 方法

executeQuery 方法用于执行查询操作,返回一个 ResultSet 对象,该对象包含查询结果的数据。通常用于执行 SELECT 语句。

Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT column1, column2 FROM tableName WHERE condition");

在这个例子中,executeQuery 方法执行了一个查询操作,返回了一个包含满足条件的结果集的 ResultSet 对象。

注意事项

  • 使用 executeUpdate 时,应注意 SQL 语句的正确性和合法性,因为该方法通常用于执行对数据库结构进行修改的操作。
  • 使用 executeQuery 时,应处理返回的 ResultSet 对象以获取查询结果的数据。

选择使用哪种方法取决于执行的 SQL 语句的类型以及是否需要处理返回的结果集。

标签:语句,JDBC,Java,数据库,表中,笔记,查询,SQL
From: https://www.cnblogs.com/xiaoheijun/p/17873643.html

相关文章

  • 学习笔记12
    第十四章MYSQL实践mysql简介MySQL是一个开源数据库管理系统,由服务器和客户机组成。在将客户机连接到服务器后,用户可向服务器输入SQL命令,以便创建数据库,删除数据库,存储、组织和检索数据库中的数据。MySQL有广泛的应用。mysql安装在ubuntu中使用sudoaptinstallmysql-server......
  • Java泛型:类型参数化的优雅解决方案
    一、引言Java泛型是Java语言的一重要特性,它提供了一种在编译时进行类型检查的方式,使得代码更加类型安全。本文将深入探讨Java泛型的概念、用法及其重要性。二、Java范型简介Java范型,也称为泛型,是一种在Java编程语言中处理类型的方法。它允许程序员在类、接口和方法中使用类型参数。......
  • 阅读笔记
    第五篇:在这里工作应该很开心      这一篇强调了工作开心的重要性,并给出了一些建议如何让员工感觉到在这工作开心。     在我们的观念里认为工作是费力的,如果你乐意做某事,那就不是真正的工作。事实上,工作应该是一种乐趣。对于任何一个特定的项目,不要实验多于一种以上......
  • Java语言基础知识全总结
    一.Java的优点1.      跨平台性。一次编译,到处运行。Java编译器会将Java代码编译成能在JVM上直接运行的字节码文件,C++会将源代码编译成可执行的二进制代码文件,所以C++执行速度快2.      纯面向对象。Java所有的代码都必须在类中书写。C++兼具面向对象和面向过程的特......
  • 重构笔记2
    重构的挑战延缓新功能开发实际上,这只是一部分不理解重构真正原因的人的想法,重构是为了从长效上见到收益,一段优秀的代码能让我们开发起来更顺手,要权衡好重构与新功能的时机,比如一段很少使用的代码。就没必要对他重构代码所有权有时候我们经常会遇到,接口发布者与调用者不是同一......
  • Java线程安全问题
    一、共享资源共享资源是指,同时会有多个线程访问的资源。二、线程安全问题线程安全问题是指多个线程同时读写共享资源时并且没有任何同步措施的情况下,出现脏数据或者其他不可预见的结果的问题。当然如果所有线程都只是读取共享资源而不去修改共享资源是不会出现线程安全问题的。......
  • 第十四章学习笔记
    MySQL数据库系统一、课本知识1、数据库指令(Linux)安装mysql:sudoapt-getinstallmysql-servermysql-server包括一个Mysql服务器和一个客户机。安装后Mysql后,可通过运行脚本对其进行配置以获得更好的安全性。mysql_secure_installation进入mysql:mysql-hlocalhost-uroot......
  • Java应用导致CPU使用率过高的排查方法
    1、搭建CentOS7.9,部署JDK8:2、编写测试代码Test.java:publicclassTest{publicstaticvoidmain(String[]args){System.out.println("测试死循环对CPU的影响");while(true){}}}3、编译Test.java:#javacTest.java4、运行Test程序:#jav......
  • Linux配置Java环境变量(详细步骤总结
    (目录)前言Java的环境变量的配置应该是每个java开发者使用Linux必备的一个配置,鉴于之前笔者在配置虚拟机或者云服务器的时候,都需要额外从网页上寻找资料,略显得有点麻烦,故在此总结一篇Java环境变量的详细配置步骤总结,希望可以帮助广大开发者们提高自己的效率下载JDK官网下载j......
  • 学习笔记12
    MySQL数据库系统MySQL介绍MySQL是一个关系数据库系统在关系数据库中,数据存储在表中。每个表由多个行和列组成。表中的数据相互关联。表也可能与其他表有关联。关系结构使得可在表上运行查询来检索信息并修改数据库中的数据。MySQL是一个开源数据库管理系统,由服务器和客户机组......