当前位置: 首页 > news >正文

数据库总结/个人总结

目录

  • 数据库
  • 数据和信息
    • Data数据
  • 数据库
  • 数据库管理系统
  • 总结
  • 常见的数据库管理系统
    • 关系型数据库
  • 连接查询
    • 交叉连接、笛卡尔积
    • 内连接
    • 左连接
    • 右连接
  • 嵌套查询
  • Jar
  • 在Java项目中使用.jar文件
  • JDBC
    • 核心接口
  • 单表查询
  • SQL注入
  • 简化JDBC
  • 视图View
    • 创建视图
    • 使用视图
    • 删除视图
  • 事务transaction
    • 事务的特性ACID
      • Atomicity原子性
      • Consistency一致性
      • Isolation隔离性
      • Durability持久性
  • 存储引擎

数据库

顾名思义,保存数据

数据和信息

Data数据

  • 任何描述事物的文字或符号都可以称为数据。
  • 软件开发就是为了收集数据,从中筛选出有用的信息。
  • 信息就是进过分析筛选后的数据。
  • 数据需要保存,保存的介质有内存或硬盘。
  • 内存中的数据是临时的,随着系统的关闭,数据也会消失。
  • 硬盘中的数据是永久,就算系统关闭,数据依然保留。
  • excel等文件保存数据是一种保存到硬盘中的途径,
  • 如果需要大量数据保存,文件系统就不再方便。
  • 使用一个系统化的数据仓库才能高效地管理数据。

数据库

  • DataBase ,称为数据库,简称DB运行在操作系统上,按照一定的数据结构,保存数据的仓库。是一个电子化的文件柜。
  • 数据永久保存在硬盘中。

数据库管理系统

  • DataBase Manager System,简称DBMS
    通常所说的数据库,其实是指数据库管理系统,如MySQL、SQLServer、Oracle等。
  • 是一种操作和管理数据库的大型软件,用于建立、使用和维护数据库。

总结

数据Data需要永久保存在数据库中
学号(字段) 姓名(字段) 专业(字段)
1001 小王 计算机
1002 小李 计算机
1003 小赵 计算机
数据库DB是运行在操作系统上的一个软件
数据库管理系统DBMS是管理数据库的一个软件
学习数据库就是学习如何使用DBMS创建、使用数据仓库来管理数据

常见的数据库管理系统

关系型数据库

  • 关系型数据库是主流的数据库类型。
  • 数据通过行row和列column的形式(表格)保存。

每行称为一条记录。
每列称为一个字段。

连接查询

交叉连接、笛卡尔积

将两张表中的数据两两组合,得到的结果就是交叉连接的结果,也称为笛卡尔积

集合A:{a,b}

集合B:{1,2,3}

集合A x 集合B = {a1,a2,a3,b1,b2,b3}

select * from1,2;
select * from1 cross join2;  
select * from1 inner join2;

以上三种方式都能将两张表中的数据互相组合,其中有很多无效数据。

内连接

在交叉连接的基础上,筛选出关联的数据。

select * from1,2 where1.字段 =2.字段;
select * from1 inner join2 on1.字段 =2.字段;-- 如查询所有图书详情和类型名
select * from 图书详情表 t1,图书类型表 t2 where t1.类型编号 = t2.类型编号;select * from 图书详情表 t1 inner join 图书类型表 t2 on t1.类型编号 = t2.类型编号;
  • 通常是通过主表的主键字段关联从表的外键字段
  • 如果两张表中关联的字段名一致,一定要通过"表名.字段名"进行区分,通常还会给表重命名
  • 如果使用inner join,带条件时需要加入where子句;如果使用,隔开多个表,带条件时需要使用and拼接条件
  • 内连接只会显示两张表中有关联的数据

左连接

-- 保证左表数据显示完整的情况下,关联右表中的数据,没有关联的用null表示
select * from1 left join2 on1.字段 =2.字段
-- 最终显示表1中的所有数据,关联表2中的数据

右连接

-- 保证右表数据显示完整的情况下,关联左表中的数据,没有关联的用null表示
select * from1 right join2 on1.字段 =2.字段
-- 最终显示表2中的所有数据,关联表1中的数据

嵌套查询

将查询出的结果继续使用在另一个查询语句中

-- 查询价格最低的图书信息
select * from book_info where book_price = (select min(book_price) from book_info)
-- 按类型分组,查询每组中图书价格大于平均价格的图书
select * from book_info bi inner join 
(select type_id,avg(book_price) as avg from book_info group by type_id)temp
on bi.type_id = temp.type_id  where book_price > avg

Jar

以.jar为后缀的文件,称为Java的归档文件。保存的是Java的字节码.class文件

在Java程序中导入某个.jar文件后,就能使用其中的.class文件。

在Java项目中使用.jar文件

1.创建一个Java项目,在其中最好新建一个文件夹,将.jar文件保存在里面

2.在.jar文件上右键,点击“add as library”

JDBC

Java DataBase Connectivity Java数据库连接

用于Java程序连接不同的数据库。

实际是Java中定义的相关数据库连接时所需的接口的集合,不同的数据库对其进行了实现。

核心接口

  • Connection:用于设置连接的数据库的地址、账号、密码

  • PreparedStatement:用于预处理、执行SQL语句

  • **ResultSet:**用于保存查询后的数据

以上接口都来自于java.sql包中

单表查询

import java.sql.*;public class Main {public static void main(String[] args) throws ClassNotFoundException, SQLException {//连接mysql数据库实现单表查询//1.加载连接MySQL的驱动Class.forName("com.mysql.cj.jdbc.Driver");//2.连接数据库,提供要连接的数据库的URL、用户名、密码String url = "jdbc:mysql://localhost:3306/gamedb?serverTimezone=Asia/Shanghai";Connection conn = DriverManager.getConnection(url, "root", "root");//3.构造查询的sql语句String sql = "select * from hero";//4.处理sql语句PreparedStatement pst = conn.prepareStatement(sql);//5.处理执行sql语句后的结果ResultSet rs = pst.executeQuery();//6.循环遍历读取查询后的数据while (rs.next()) {//根据字段名获取int id = rs.getInt("id");//根据字段顺序获取String name = rs.getString(2);String sex = rs.getString(3);int price = rs.getInt(4);String makeTime = rs.getString(5);String position = rs.getString(6);System.out.println(id+"\t"+name+"\t"+sex+"\t"+price+"\t"+makeTime+"\t"+position);}//7.关闭连接rs.close();pst.close();conn.close();}
}

SQL注入

在构造sql语句时,如果使用字符串拼接的方式构造可变的sql语句,可能会造成sql注入的风险,导致执行不是预期的sql语句

-- 如删除的sql String sql="delete from 表 where 主键="+参数;
-- 实际传递 '' or 1=1
delete fromwhere 主键= '' or 1=1
-- 导致条件永远成立,最终删除了所有数据-- 查询的sql  String sql="select * from 表 where name="+name +"and pwd="+pwd;
-- 实际第一个参数传递 '' or 1=1 -- 
select * fromwhere name = '' or 1=1 -- pwd=
-- 导致第二个参数被注释,第一个参数永远成立

在构造sql语句时,使用?占位,通过preparestatement方法防止sql注入的风险

简化JDBC

DBUtil数据库工具类

import java.sql.*;/** 定义数据库工具类,简化JDBC操作* 可以简化的操作* 1.加载驱动   √* 2.连接数据库 √* 6.关闭   √* */
public class DBUtil {/** 定义静态代码块用于加载驱动* */static {try {Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {System.out.println("驱动不存在" + e);}}//定义静态常量保存连接数据库的字符串private final static String URL = "jdbc:mysql://localhost:3306/gamedb?serverTimezone=Asia/Shanghai";private final static String USERNAME = "root";private final static String PASSWORD = "root";/** 定义静态方法获取连接对象* */public static Connection getConn() {Connection connection = null;try {connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);} catch (SQLException e) {System.out.println("连接数据库信息异常" + e);}return connection;}/** 定义静态方法释放资源* */public static void release(Connection conn, PreparedStatement pst, ResultSet rs) {//使用了哪个接口就关闭那个接口try {if (rs != null) {rs.close();}if (pst != null) {pst.close();}if (conn != null) {conn.close();}} catch (SQLException e) {System.out.println("关闭异常" + e);}}
}

视图View

视图可以当做数据库中的一个临时表,保存一些较为复杂的查询后的结果。
之后可以直接通过该视图查询数据,不需要再次编写复杂的sql语句。
视图同时可以隐藏一些查询细节,定制查询数据。

创建视图

create view 视图名 as
查询的sql语句;

使用视图

修改视图中的数据,会直接修改原始表中的数据。

select * from 视图名;

删除视图

drop view 视图名;

事务transaction

事务是由一组sql语句组成的执行单元,这些sql之间一般都互相依赖。
如A给B转账
1.update 表 set money = money-1000 where id=1
2.update 表 set money = money+1000 where id=2
以上两句sql组成了一个转账的事务。一个事务要么全部执行,要么全部不执行。

事务的特性ACID

Atomicity原子性

事务是最小的执行单元,要么全部执行,要么全部不执行。

Consistency一致性

事务执行前后,必须让所有数据保持一致状态。(总体数据守恒)
create view 视图名 as
查询的sql语句;
select * from 视图名;
drop view 视图名;

Isolation隔离性

多个事务并发执行时应该互相隔离,互不影响。

Durability持久性

事务一旦提交,对数据的改变是永久的。

存储引擎

  • MySQL5.5版本之前,默认使用MyIsam存储引擎,不支持事务
  • MySQL5.5版本之后,默认使用InnoDB存储引擎,支持事务

相关文章:

数据库总结/个人总结

目录数据库数据和信息Data数据数据库数据库管理系统总结常见的数据库管理系统关系型数据库连接查询交叉连接、笛卡尔积内连接左连接右连接嵌套查询Jar在Java项目中使用.jar文件JDBC核心接口单表查询SQL注入简化JDBC视图View创建视图使用视图删除视图事务transaction事务的特性A…...

【Maven】开发自己的starter依赖

【Maven】开发自己的starter依赖 文章目录【Maven】开发自己的starter依赖1. 准备工作1.1 创建一个项目1.2 修改pom文件1.3 修改项目结构2. 动手实现2.1 创建客户端类2.2 创建配置类2.3 配置路径2.4 下载到本地仓库3. 测试1. 准备工作 1.1 创建一个项目 打开idea,…...

JVM与Java体系

JVM体系跟着尚硅谷的康师傅学习 JVM内存与垃圾回收概述 除了大部分的Java开发 人员,除了会在项目中使用到与Java平台相关的框架,与API,对于Java的虚拟机了解甚少。但是也需要我们知道如何处理OOM,SOF异常,除了…...

【C++笔试强训】第十二天

选择题 解析:引用:引用是对象的别名,并没有开辟属于自己的空间,两者同用一块内存,引用值改变也会引起引用对象值的改变; 引用在声明的时候必须要初始化,而指针不用,指针可以为空指针…...

C# | 使用DataGridView展示JSON数组

C# | 使用DataGridView展示JSON数组 文章目录C# | 使用DataGridView展示JSON数组前言实现原理实现过程完整源码前言 你想展示一个复杂的JSON数组数据吗?但是你却不知道该如何展示它,是吗?没问题,因为本文就是为解决这个问题而生的…...

Python入门到高级【第四章】

预计更新第一章. Python 简介 Python 简介和历史Python 特点和优势安装 Python 第二章. 变量和数据类型 变量和标识符基本数据类型:数字、字符串、布尔值等字符串操作列表、元组和字典 第三章. 控制语句和函数 分支结构:if/else 语句循环结构&#…...

【ChatGPT】ChatGPT 能否取代程序员?

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 前言: ChatGPT 的优势 自然语言的生成 文本自动生成 建立了更人性化的人机交互 ChatGPT 的局限性 算法的解释能力较差 程序的可实现性较差 缺乏优化和质量控制 程序员相较于 …...

英飞凌Tricore问题排查01_Det/Reset/Trap排查宝典

目录 1.概述2. 排查方法总览(流程图)3. 进Det排查方法4. 进Reset/Trap排查4.1 通过ErrorHook/ProtectionHook排查4.2. 通过BTV寄存器排查Trap方法4.3 借助英飞凌寄存器排查4.3.1 借助Reset状态寄存器4.3.2 SMU触发的复位4.3.3 CPU触发的复位1.概述 大家在软件开发过程中,可…...

第六章 共享模型之 无锁

JUC并发编程系列文章 http://t.csdn.cn/UgzQi 文章目录JUC并发编程系列文章前言一、问题的引出如何保证取款方法的线程安全解决方案一、使用synchronized锁住临界区代码解决方案二、无锁(AtomicInteger 原子整数类)二、CAS 与 volatileAtomicInteger . compareAndSet( ) 方法的…...

2023Q2押题,华为OD机试用Python实现 -【机智的外卖员】

最近更新的博客 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典【华为 OD 机试】全流程解析+经验分享,题型分享,防作弊指南华为 od 机试,独家整理 已参加机试人员的实战技巧本篇题解:机智的外卖员 题目…...

【华为OD机试真题】密室逃生游戏(javapython)

密室逃生游戏 题目 小强增在参加《密室逃生》游戏,当前关卡要求找到符合给定 密码 K(升序的不重复小写字母组 成) 的箱子, 并给出箱子编号,箱子编号为 1~N 。 每个箱子中都有一个 字符串 s ,字符串由大写字母、小写字母、数字、标点符号、空格组成, 需要在这些字符串中…...

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作

一.商品分类的增、删、改、查,以及商品分类的自关联1.界面展示以及操作说明列表商品分类列表展示说明:(1).增加商品分类按钮(2).商品分类,以及子分类相关数据列表展示(3).排序,状态,修改,删除操作处理 新增编辑删除修改状态,排序2.创建商品分类模型在controllers/admin下创建Go…...

Redis安装-使用包管理安装Redis

这种在Linux上使用apt-get包管理器安装Redis的方式称为“包管理安装”。这种安装方式使用操作系统的官方软件库来获取和安装软件包,可以自动处理软件包的依赖关系,并确保软件包与系统其他部分兼容。这是一种安全、可靠且方便的安装方式,适用于…...

HTML属性的概念和使用

通过前面的学习&#xff0c;我们已经对 HTML标签 有了简单的认识&#xff0c;知道可以在标签中可以添加一些属性&#xff0c;这些属性包含了标签的额外信息&#xff0c;例如&#xff1a; href 属性可以为 <a> 标签提供链接地址&#xff1b;src 属性可以为 <img> 标…...

ChatGPT基础知识系列之一文说透ChatGPT

ChatGPT基础知识系列之一文说透ChatGPT OpenAI近期发布聊天机器人模型ChatGPT,迅速出圈全网。它以对话方式进行交互。以更贴近人的对话方式与使用者互动,可以回答问题、承认错误、挑战不正确的前提、拒绝不适当的请求。高质量的回答、上瘾式的交互体验,圈内外都纷纷惊呼。 …...

‘go install‘ requires a version when current directory is not in a module

背景 安装好环境之后&#xff0c;跑个helloworld看看 目录结构 workspacepathsrchellohelloworld.go代码&#xff1a; package mainimport "fmt"func main() { fmt.Println("Hello World") }1.使用 go run 命令 - 在命令提示符旁&#xff0c;输入 go …...

蓝桥杯嵌入式第十三届(第二套客观题)

文章目录 前言一、题目1二、题目2三、题目3四、题目4五、题目5六、题目6七、题目7八、题目8九、题目9十、题目10总结前言 本篇文章继续讲解客观题。 一、题目1 这个其实属于送分题,了解嵌入式或者以后想要入行嵌入式的同学应该都对嵌入式特点有所了解。 A. 采用专用微控制…...

FFmpeg进阶:各种输入输出设备

文章目录查看设备列表输入设备介绍输出设备介绍查看设备列表 我们可以通过ffmpeg自带的工具查看系统支持的设备列表信息, 对应的指令如下所示: ffmpeg -devices输入设备介绍 通过配置ffmpeg的输入设备,我们可以访问系统中的某个多媒体设备的数据。下面详细介绍一下各个系统中…...

使用Shell笔记总结

一、变量 1、定义变量不加$符号&#xff0c;使用变量要用$&#xff1b;等号两边不能直接接空格符&#xff1b;通常大写字符为系统默认变量&#xff0c;自行设定变量可以使用小写字符。 2、双引号内的特殊字符如 $ 等&#xff0c;可以保有其符号代表的特性&#xff0c;即可以有…...

反常积分的审敛法

目录 无穷先的反常积分的审敛法 定理1&#xff1a;比较判别法 例题&#xff1a; 比较判别法的极限形式&#xff1a; 例题&#xff1a; 定理3&#xff1a;绝对收敛准则 例题&#xff1a; 无界函数的反常积分收敛法 例题&#xff1a; 无穷先的反常积分的审敛法 定理1&#x…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

Java数组Arrays操作全攻略

Arrays类的概述 Java中的Arrays类位于java.util包中&#xff0c;提供了一系列静态方法用于操作数组&#xff08;如排序、搜索、填充、比较等&#xff09;。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序&#xff08;sort&#xff09; 对数组进行升序…...

Linux-进程间的通信

1、IPC&#xff1a; Inter Process Communication&#xff08;进程间通信&#xff09;&#xff1a; 由于每个进程在操作系统中有独立的地址空间&#xff0c;它们不能像线程那样直接访问彼此的内存&#xff0c;所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器&#xff0c;来进行一些算术…...

零基础在实践中学习网络安全-皮卡丘靶场(第十一期-目录遍历模块)

经过前面几期的内容我们学习了很多网络安全的知识&#xff0c;而这期内容就涉及到了前面的第六期-RCE模块&#xff0c;第七期-File inclusion模块&#xff0c;第八期-Unsafe Filedownload模块。 什么是"遍历"呢&#xff1a;对学过一些开发语言的朋友来说应该知道&…...