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

Java面试第六山!《MySQL基础知识点》

一、引言

MySQL 作为一款广泛使用的开源关系型数据库管理系统,在软件开发领域占据着重要地位。无论是小型项目还是大型企业级应用,都能看到 MySQL 的身影。今天就来和大家分享 MySQL 的相关知识,帮助大家更好地应对日常开发和面试。

二、MySQL 基础概念

(一)数据库与表

  • 数据库:数据库就像是一个大仓库,用于存储和管理数据。可以在一个 MySQL 服务器上创建多个数据库,每个数据库相互独立。例如,一个电商项目可能有一个专门存储商品信息的数据库。
  • :表是数据库中实际存储数据的结构,由行和列组成,类似于 Excel 表格。每一行代表一条记录,每一列代表一个字段。比如商品表中,每一行记录一个商品的信息,列可能包括商品 ID、商品名称、价格等。

(二)数据类型

MySQL 支持多种数据类型,常见的有:

  • 数值类型:如INT(整数)、DOUBLE(双精度浮点数),用于存储数字。例如,商品价格可以用DOUBLE类型存储。
  • 字符串类型:VARCHAR(可变长度字符串)、CHAR(固定长度字符串)。商品名称可以用VARCHAR类型存储,因为不同商品名称长度不同。
  • 日期和时间类型:DATE(日期)、DATETIME(日期和时间)。记录商品上架时间可以用DATETIME类型。

三、常用 SQL 操作

(一)数据定义语言(DDL)

  • 创建数据库
CREATE DATABASE mydatabase;
  • 创建表
CREATE TABLE products (product_id INT PRIMARY KEY AUTO_INCREMENT,product_name VARCHAR(255),price DOUBLE,create_time DATETIME);
  • 修改表结构:添加字段
ALTER TABLE products ADD COLUMN description VARCHAR(500);
  • 删除表
DROP TABLE products;

(二)数据操作语言(DML)

  • 插入数据
INSERT INTO products (product_name, price, create_time) VALUES ('iPhone 15', 7999.0, NOW());
  • 更新数据
UPDATE products SET price = 8499.0 WHERE product_id = 1;
  • 删除数据
DELETE FROM products WHERE product_id = 1;

(三)数据查询语言(DQL)

  • 简单查询
SELECT * FROM products;
  • 条件查询:查询价格大于 8000 的商品
SELECT * FROM products WHERE price > 8000;
  • 排序查询:按价格升序排序
SELECT * FROM products ORDER BY price ASC;
  • 聚合查询:统计商品数量
SELECT COUNT(*) FROM products;

四、索引

(一)索引的作用

索引就像一本书的目录,能加快数据的查询速度。在数据库中,当执行查询语句时,如果没有索引,数据库需要全表扫描来查找数据;有了索引,数据库可以快速定位到符合条件的数据行。

(二)索引类型

  • 主键索引:每个表只能有一个主键索引,用于唯一标识表中的每一行记录,如product_id。
  • 唯一索引:保证索引列的值唯一,但可以为 NULL,例如商品的唯一编号。
  • 普通索引:最基本的索引类型,没有唯一性限制,用于提高查询速度。

(三)创建索引

-- 创建普通索引

CREATE INDEX idx_product_name ON products (product_name);

-- 创建唯一索引

CREATE UNIQUE INDEX idx_unique_product_code ON products (product_code);

五、存储引擎

MySQL 支持多种存储引擎,常见的有:

  • InnoDB:支持事务、行级锁、外键约束,是 MySQL 5.5 之后的默认存储引擎,适合处理大量并发事务的场景,如电商订单系统。
  • MyISAM:不支持事务和行级锁,适合读多写少的场景,如数据仓库。

六、MySQL事务四大特性ACID

  • 原子性:原子性意味着一个事务中的所有操作要么全部成功,要么全部失败。
  • 一致性:一致性确保数据库在事务执行前后保持一致状态。
  • 隔离性:隔离性保证并发执行的事务不会互相干扰。
  • 持久性:持久性确保一旦事务被提交,其修改就会被永久保存。就像你在白纸上写字,只要不擦掉,字迹就会一直在那里。

七、四种事务隔离级别

  • 读未提交:是最低的级别,只允许读取未提交的数据,可能导致脏读、幻读或不可重复读。
  • 读已提交:较低级别,只允许读取已提交的数据,可以避免脏读,但仍可能出现幻读或不可重复读
  • 可重复读:较高级别,确保在一个事务内多次读取同一数据时结果一致,避免了不可重复读,但仍可能出现幻读。
  • 串行化:最高级别,完全避免脏读、不可重复读和幻读,但执行效率最低。

八、MySQL中的锁

  • 表级锁(Table-level lock):锁定整个表,防止其他事务对表进行写操作。
  • 行级锁(Record Locks):只锁定需要操作的行,允许其他事务访问未被锁定的行。 锁的是完整的数据 是索引树 
  • 页级锁:锁定数据页,介于表级锁和行级锁之间。
  • 乐观锁(Optimistic Lock):假设冲突不会发生,只在提交时检查是否有冲突。
  • 悲观锁(Pessimistic Lock):假设冲突总会发生,因此在操作开始时就上锁。

结语:以上都是我在面试过程中被问到过的内容,后续还会继续补充,

下期预告《MySQL中的索引》

翻过这座山,他们就会听到你的故事!

相关文章:

Java面试第六山!《MySQL基础知识点》

一、引言 MySQL 作为一款广泛使用的开源关系型数据库管理系统,在软件开发领域占据着重要地位。无论是小型项目还是大型企业级应用,都能看到 MySQL 的身影。今天就来和大家分享 MySQL 的相关知识,帮助大家更好地应对日常开发和面试。 二、My…...

云计算中的API网关是什么?为什么它很重要?

在云计算架构中,API网关(API Gateway)是一个重要的组件,主要用于管理、保护和优化不同服务之间的接口(API)通信。简单来说,API网关就像是一个中介,它充当客户端和后端服务之间的“桥…...

【WebGL】fbo双pass案例

双pass渲染案例&#xff08;离线渲染一个三角面&#xff0c;然后渲染到一个占满屏幕的矩阵上&#xff09; 离线渲染如何需要开启深度测试的话&#xff0c;需要额外操作&#xff0c;这里不展开 <!DOCTYPE html> <html lang"en"><head><meta ch…...

Unity面板介绍_层级面板(23.1.1)

一、Inspector(检视面板) 显示当前选定游戏对象附加的组件及其属性信息。为重要游戏物体选择图标 二、面板详情...

详解Nginx 配置

一、Nginx 介绍 Nginx 是一款轻量级的 Web 服务器 / 反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。它由俄罗斯的程序设计师 Igor Sysoev 所开发&#xff0c;自 2004 年发布以来&#xff0c;凭借其高性能、低内存消耗、高并发处理能力等特点&#xf…...

数据库系统概念

1. 绪论 数据库的基本概念: 数据(data): 数据库中存储的基本对象, 可以是文字, 声音, 图片, 视频等。 数据库(DB): 概括来说就是永久存储, 有组织, 可共享的大量数据的集合。 数据库管理系统(DBMS): 和操作系统一样是计算机基础软件, 主要有数据定义语言(DDL, 对数据对象的组…...

51单片机学习之旅——定时器

打开软件 1与其它等于其它&#xff0c;0与其它等于0 1或其它等于1&#xff0c;0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作&#xff0c;高四位保持&#xff0c;低四位清零&#xff0c;高四位定时器1&#xff0c;低四位定时器0 TMODTMOD|0x01;//0x010000 0…...

一台服务器将docker image打包去另一天服务器安装这个镜像

一台服务器将docker image打到去另一天服务器安装这个镜像 1. 打包2.另一台服务器执行 1. 打包 docker save -o nebula-graph-studio.tar harbor1.vm.example.lan/dockerio/vesoft/nebula-graph-studioxxx.tar 是打包好的文件 后面的是 docker image 2.另一台服务器执行 docke…...

QT串口通信之二,实现单个温湿度传感器数据的采集(采用Qt-modbus实现)

接上 QT串口通信之一,实现单个温湿度传感器数据的采集 上述文章中用QSerialPort实现了温湿度传感器的采集,实际上比较麻烦的,因为需要自定义解析帧, 接下来,用Qt-modbus-封装度更高的协议,来实现温湿度的采集; #include "MainWindow.h" #include "ui_M…...

基于SpringBoot的校园消费点评管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

【小沐学Java】VSCode搭建Java开发环境

文章目录 1、简介2、安装VSCode2.1 简介2.2 安装 3、安装Java SDK3.1 简介3.2 安装3.3 配置 4、安装插件Java Extension Pack4.1 简介4.2 安装4.3 配置 结语 1、简介 2、安装VSCode 2.1 简介 Visual Studio Code 是一个轻量级但功能强大的源代码编辑器&#xff0c;可在桌面上…...

《操作系统 - 清华大学》8 -4:进程管理:进程控制结构

深度剖析进程控制块&#xff1a;操作系统进程管理的核心关键 在操作系统的复杂体系中&#xff0c;进程控制块&#xff08;PCB&#xff09;是实现高效进程管理的关键所在。接下来&#xff0c;将从多个维度深入剖析进程控制块&#xff0c;帮助更好地理解其在操作系统中的重要作用…...

RPC 框架项目剖析

RPC 框架项目剖析 说明 本文用于梳理一个 rpc项目的实现细节&#xff0c;此项目基于cpp语言 大概三千行左右&#xff0c;用于学习目的。 项目链接&#xff1a;rpc项目 项目底层类 1.抽象消息类 描述&#xff1a; 各种消息的基类 属性&#xff1a; 消息id&#xff0c;消息类型…...

C++ Boost面试题大全及参考答案

目录 boost::thread_group 如何实现批量线程管理? 解释 boost::asio 中 proactor 模式的设计原理 使用 boost::atomic 实现无锁环形缓冲区 boost::mutex 与 std::mutex 在异常安全上的差异 如何用 boost::condition_variable 实现生产者 - 消费者模型 当 boost::shared_p…...

关于Transparent native-to-ascii conversion

1、功能 自动转换ASCII编码&#xff0c;即在文件系统上&#xff0c;文件的编码格式为ascii编码&#xff0c;在编辑器&#xff08;idea/pycharm&#xff09;中&#xff0c;其展现结果为配置的编码格式&#xff0c;仅展现方便阅读 使用UTF-8并勾选自动转换ASCII编码结果&#x…...

js数据类型检测

JavaScript的数据类型检测 typeof操作符 适用场景 基本数据类型快速判断&#xff1a;适用于快速判断变量是否为number、string、boolean、undefined、function等基本数据类型。比如在函数参数检查中&#xff0c;若要求传入数字参数&#xff0c;可用typeof来初步判断。函数类型…...

go 模块管理

go version 查看版本 go version go1.21.12 windows/amd64 需要保证:go的版本升级为1.11以上,go mod依赖的最底版本 go env 查看go的环境变量 go env 开启go mod # 标识开启go的模块管理 set GO111MODULE=on GO111MODULE有三个值:off, on和auto(默认值)。 GO111M…...

记一次复杂分页查询的优化历程:从临时表到普通表的架构演进

1. 问题背景 在项目开发中&#xff0c;我们需要实现一个复杂的分页查询功能&#xff0c;涉及大量 IP 地址数据的处理和多表关联。在我接手这个项目的时候,代码是这样的 要知道代码里面的 ipsList 数据可能几万条甚至更多,这样拼接的sql,必然是要内存溢出的,一味地扩大jvm参数不…...

基于 Python 的项目管理系统开发

基于 Python 的项目管理系统开发 一、引言 在当今快节奏的工作环境中&#xff0c;有效的项目管理对于项目的成功至关重要。借助信息技术手段开发项目管理系统&#xff0c;能够显著提升项目管理的效率和质量。Python 作为一种功能强大、易于学习且具有丰富库支持的编程语言&…...

java面试场景问题

还在补充&#xff0c;这几天工作忙&#xff0c;闲了会把答案附上去&#xff0c;也欢迎各位大佬评论区讨论 1.不用分布式锁如何防重复提交 方法 1&#xff1a;基于唯一请求 ID&#xff08;幂等 Token&#xff09; 思路&#xff1a;前端生成 一个唯一的 requestId&#xff08;…...

技术揭秘:如何构建Unity URP高性能卡通渲染着色器

技术揭秘&#xff1a;如何构建Unity URP高性能卡通渲染着色器 【免费下载链接】UnityURPToonLitShaderExample A very simple toon lit shader example, for you to learn writing custom lit shader in Unity URP 项目地址: https://gitcode.com/gh_mirrors/un/UnityURPToon…...

如何快速扩展Connexion框架功能:插件开发的完整指南

如何快速扩展Connexion框架功能&#xff1a;插件开发的完整指南 【免费下载链接】connexion Connexion is a modern Python web framework that makes spec-first and api-first development easy. 项目地址: https://gitcode.com/gh_mirrors/co/connexion Connexion是一…...

SCons源码架构分析:理解构建引擎的核心实现原理

SCons源码架构分析&#xff1a;理解构建引擎的核心实现原理 【免费下载链接】scons SCons - a software construction tool 项目地址: https://gitcode.com/gh_mirrors/sc/scons SCons作为一款强大的软件构建工具&#xff0c;其源码架构设计体现了现代构建系统的核心思想…...

降AI率工具哪个好?背后的判断逻辑你可能没想过

降AI率工具哪个好&#xff1f;背后的判断逻辑你可能没想过 一、一个被问烂了的问题,却很少有人答对 “降AI率工具哪个好?”——这是2026年毕业季被问得最多的问题之一。打开知乎、小红书、百度贴吧,铺天盖地的测评、排行榜、推荐帖,但真正能帮你做决策的内容寥寥无几。 为什…...

为什么传统预警系统仍滞后12分钟?AGI动态权重学习算法,让山洪预警准确率跃升至99.17%——SITS2026核心团队实测数据

第一章&#xff1a;SITS2026专家&#xff1a;AGI与灾害预警 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026大会上&#xff0c;来自全球气候建模中心、神经符号AI实验室及联合国减灾署&#xff08;UNDRR&#xff09;的联合研究团队展示了首个具备自主推理能力的灾害…...

EspoCRM终极指南:如何通过开源CRM系统快速构建企业级客户关系管理平台

EspoCRM终极指南&#xff1a;如何通过开源CRM系统快速构建企业级客户关系管理平台 【免费下载链接】espocrm EspoCRM – Open Source CRM Application 项目地址: https://gitcode.com/GitHub_Trending/es/espocrm EspoCRM是一款功能强大且完全免费的开源客户关系管理系统…...

2.1VMware部署Windows_server_2008_R2

1.创建虚拟机 2.自定义高级 3.默认下一步 4.稍后安装操作系统&#xff0c;下一步 5.选择Windows 2008 R2 64位&#xff0c;下一步 6.虚拟机名称和存放位置如下 7.默认下一步 8.配置如下&#xff0c;下一步 9.推荐内存&#xff0c;下一步 10.选择桥接网络&#xff0c;下一步 11.…...

逆向YouTube Shorts接口:我是如何用Java和Protobuf搞定短视频列表解析的

逆向解析YouTube Shorts接口&#xff1a;Java与Protobuf实战指南 在移动应用逆向工程领域&#xff0c;Google系产品的接口分析向来以高复杂度著称。本文将分享如何突破层层技术障碍&#xff0c;从零开始解析YouTube Shorts短视频列表接口的全过程。不同于常见的API调用教程&…...

SpringBoot项目整合FISCO BCOS 2.9.1 SDK:从WeBASE-Front导出合约到Java调用的保姆级避坑指南

SpringBoot项目整合FISCO BCOS 2.9.1 SDK实战&#xff1a;从合约导出到Java调用的全流程解析 当Java开发者首次尝试将区块链能力整合到现有SpringBoot项目中时&#xff0c;往往会遇到一系列意料之外的挑战。本文将以一个典型的企业级资产管理系统为背景&#xff0c;详细拆解从W…...

AD9364 SPI配置避坑指南:从寄存器0x3DF到0x015,手把手带你走通初始化流程

AD9364 SPI配置避坑指南&#xff1a;从寄存器0x3DF到0x015&#xff0c;手把手带你走通初始化流程 第一次接触AD9364的SPI配置时&#xff0c;我盯着密密麻麻的寄存器列表和长达数十页的配置流程&#xff0c;感觉像是面对一座难以攀登的高山。经过多次调试和失败后&#xff0c;终…...