目录
数据库
1.概述
数据库是一种用于存储、管理和检索数据的电子仓库。它采用一定的数据模型组织数据,支持多种数据操作,如查询、插入、更新和删除等,并具备数据完整性、安全性和并发控制等能力。数据库通常被设计为一个或多个表格,每个表格由行和列组成,用于存储不同类型的数据。
关系型数据库(RDBMS)
关系型数据库通过表格的形式来组织数据,每个表格包含一系列行(记录)和列(字段)。它们之间的数据通过关系进行连接,最常见的关系型数据库系统包括MySQL、Oracle、SQL Server和PostgreSQL等。
非关系型数据库(NoSQL)
非关系型数据库不依赖于传统的表格关系模型,它们更适合处理非结构化或半结构化数据。NoSQL数据库可以进一步分为几种类型,包括文档型数据库(如MongoDB)、键值存储(如Redis)、列族存储(如Cassandra)和图形数据库(如Neo4j)。
2.数据库中表与表之间的关系
数据库表之间的关系是数据库设计的重要部分,它决定了数据如何在不同的表之间关联和交互。这些关系通常分为三种类型:一对一、一对多(或多对一)和多对多。
一对一关系:
这种关系意味着两个表中的每一行都与另一个表中的一行相关联。
通常,这种关系是通过将主键和外键设置为相同的字段来实现的。示例:假设我们有一个用户
表和一个用户详细信息
表。每个用户只有一份详细信息,因此这两个表之间存在一对一关系。
CREATE TABLE 用户 (
用户ID INT PRIMARY KEY,
用户名 VARCHAR(50)
);
CREATE TABLE 用户详细信息 (
用户ID INT PRIMARY KEY,
地址 VARCHAR(100),
电话 VARCHAR(20),
FOREIGN KEY (用户ID) REFERENCES 用户(用户ID)
);
一对多(或多对一)关系:
这种关系意味着一个表中的每一行可以与另一个表中的多行相关联,但反之不然。示例:考虑一个订单
表和一个订单项
表。一个订单可以有多个订单项,但每个订单项只属于一个订单。
CREATE TABLE 订单 (
订单ID INT PRIMARY KEY,
订单日期 DATE
);
CREATE TABLE 订单项 (
订单项ID INT PRIMARY KEY,
产品名称 VARCHAR(50),
数量 INT,
订单ID INT,
FOREIGN KEY (订单ID) REFERENCES 订单(订单ID)
);
多对多关系:
这种关系意味着两个表中的每一行都可以与另一个表中的多行相关联。示例:考虑一个学生
表和一个课程
表。一个学生可以参加多个课程,同时一个课程也可以有多个学生。为了表示这种关系,我们通常需要创建一个额外的“关联”表。
CREATE TABLE 学生 (
学生ID INT PRIMARY KEY,
姓名 VARCHAR(50)
);
CREATE TABLE 课程 (
课程ID INT PRIMARY KEY,
课程名称 VARCHAR(50)
);
CREATE TABLE 学生课程 (
学生ID INT,
课程ID INT,
PRIMARY KEY (学生ID, 课程ID),
FOREIGN KEY (学生ID) REFERENCES 学生(学生ID),
FOREIGN KEY (课程ID) REFERENCES 课程(课程ID)
);
3.特点
数据持久化:数据库可以长期保存数据,即使关闭电源或发生其他故障,数据也不会丢失。
数据结构化:数据按照一定的模式(如表格、关系等)进行组织,使得数据的访问和管理更加高效和方便。
数据共享:多个用户或应用程序可以同时访问数据库,实现数据的共享和协同工作。
数据安全性:数据库管理系统提供了多种安全措施,如访问控制、加密和备份恢复等,确保数据的安全性和完整性。
JDBC
1.概述
在Java开发中,数据库连接是一个核心功能,而JDBC(Java Database Connectivity)则是实现这一功能的关键技术,它提供了一种统一的方法来连接和操作数据库,使得Java应用程序能够轻松地与各种数据库进行交互,实现数据的增删改查等操作。通过使用JDBC,Java开发者可以编写出高效、可靠且易于维护的数据库应用程序。
2.使用JDBC
使用JDBC连接数据库通常涉及以下步骤:
1.加载并注册数据库驱动
首先,你需要加载并注册数据库驱动。这通常通过调用Class.forName()
方法实现。
Class.forName("com.mysql.cj.jdbc.Driver");
对于不同的数据库,需要加载不同的驱动类。
2.建立数据库连接
使用DriverManager
类的getConnection()
方法建立与数据库的连接。你需要提供数据库的URL、用户名和密码。
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "username";
String password = "password";
Connection conn = DriverManager.getConnection(url, user, password);
3.创建Statement或PreparedStatement对象
通过Connection
对象,你可以创建Statement
或PreparedStatement
对象来执行SQL语句。
Statement stmt = conn.createStatement();
或者,对于预编译的SQL语句(带有参数),可以使用PreparedStatement
。
String sql = "SELECT * FROM users WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, userId); // 设置参数值
4.执行SQL语句并处理结果
使用Statement
或PreparedStatement
对象的executeQuery()
或executeUpdate()
方法执行SQL语句。对于查询操作,你需要处理返回的ResultSet
对象。
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
// 处理其他列...
}
rs.close();
对于更新操作(如INSERT、UPDATE、DELETE),executeUpdate()
方法返回受影响的行数。
int affectedRows = stmt.executeUpdate("UPDATE users SET name = 'NewName' WHERE id = 1");
System.out.println(affectedRows + " rows updated.");
5.关闭资源
最后,确保关闭所有数据库资源,包括ResultSet
、Statement
和Connection
对象。
rs.close();
stmt.close();
conn.close();
MySQL
1.概述
MySQL是一个流行的开源关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据库管理,提供了强大的数据存储和检索功能。
2.基本语法
1.连接MySQL数据库
使用命令行或图形界面工具连接到MySQL数据库。在命令行中,通常使用以下命令:
mysql -u username -p
输入上述命令后,系统会提示你输入密码。成功连接后,你将看到MySQL的命令行提示符。
2.创建数据库
在MySQL中,可以使用CREATE DATABASE
语句来创建一个新的数据库:
CREATE DATABASE mydatabase;
3.选择数据库
在创建数据库后,你需要选择它以便进行后续操作:
USE mydatabase;
4.创建表
表是数据库的基本组成部分,用于存储数据。使用CREATE TABLE
语句可以创建表:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
age INT
);
上述语句创建了一个名为users
的表,包含四个字段:id
、name
、email
和age
。
5.插入数据
使用INSERT INTO
语句向表中插入数据:
INSERT INTO users (name, email, age) VALUES ('John Doe', 'john@example.com', 30);
6.查询数据
使用SELECT
语句从表中检索数据:
SELECT * FROM users;
上述语句将检索users
表中的所有记录,也可以使用WHERE
子句来添加条件:
SELECT * FROM users WHERE age > 25;
7.更新数据
使用UPDATE
语句修改表中的现有数据:
UPDATE users SET age = 31 WHERE name = 'John Doe';
8.删除数据
使用DELETE
语句从表中删除数据:
DELETE FROM users WHERE id = 1;
3.应用
在Java中,我们通常使用JDBC(Java Database Connectivity)来连接和操作MySQL数据库。以下是一个简单的Java代码示例,展示了如何使用JDBC连接MySQL数据库并执行查询操作:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class MySQLJavaExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "username";
String password = "password";
try {
// 加载并注册MySQL驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立连接
Connection conn = DriverManager.getConnection(url, user, password);
// 创建Statement对象
Statement stmt = conn.createStatement();
// 执行查询
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
// 处理结果集
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
int age = rs.getInt("age");
System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email + ", Age: " + age);
}
// 关闭资源
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.特点
-
结构化数据存储:MySQL使用表格来存储数据,每个表格由行和列组成,每个列有特定的数据类型,如整数、字符串、日期等。
-
ACID事务处理:MySQL支持ACID(原子性、一致性、隔离性、持久性)事务,确保数据完整性和可靠性。
-
标准SQL:MySQL支持标准的SQL语言,使得开发者能够方便地进行数据的增删改查操作。
-
索引:为了提高查询性能,MySQL允许对表中的特定列创建索引。
-
存储引擎:MySQL支持多种存储引擎,如InnoDB、MyISAM等,每种存储引擎都有其特定的优点和适用场景。
-
可扩展性:MySQL支持大量的并发连接,可以处理大量的数据,并且支持分区、复制等高级功能,以满足大规模应用的需求。
-
安全性:MySQL提供了用户权限管理、数据加密等安全措施,保护数据的安全性和隐私性。
-
开源与免费:MySQL是一个开源项目,可以免费使用和修改。同时,它也有一个活跃的社区,为开发者提供了大量的学习资源和支持。