MySQL 数据库基础
1. MySQL 数据库基础
在这一部分,我们将学习 MySQL 的基本概念和常见的数据库操作,帮助你掌握如何创建数据库、表,并进行数据的增、删、改操作。同时,我们还会探讨一些常见的错误示例及其原因,帮助你避免常见的陷阱。最后,我们还会介绍一些常见的面试问题及其解答,帮助你更好地理解和运用 MySQL。
1.1 数据库、表、字段、记录的概念
- 数据库(Database):数据库是一个用来存储数据的容器。一个 MySQL 数据库可以包含多个表,数据会被存储在这些表中。
- 表(Table):表是数据库中的基本结构,用来存储具体的数据。表由行和列组成,行称为记录,列称为字段。
- 字段(Field):字段是表中的一列,每个字段都有一个名字,用来存储特定类型的数据(如:整数、字符串、日期等)。
- 记录(Record):记录是表中的一行,每一行包含多个字段的具体值。
举个例子,假设你有一个 “users” 表,字段包括 “id”、“name”、“age” 和 “email”。每一行记录则表示一个用户的信息。
1.2 MySQL 客户端工具的使用(使用 DataGrip)
在前一篇文章中,我们已经介绍了如何通过 DataGrip 来连接和配置 MySQL 数据库。如果你还没有配置好 MySQL 数据库连接,请参考先前的文章进行配置。
一旦配置好 MySQL 连接,你可以开始通过 DataGrip 来进行各种数据库管理和操作,包括执行 SQL 查询、查看表结构、编辑数据等。以下是一些常见的操作和技巧:
- 创建和执行 SQL 查询:你可以在 DataGrip 的查询窗口中输入 SQL 语句,并通过 Run 按钮来执行查询。
- 数据库结构管理:DataGrip 提供了图形化界面,可以查看和修改表结构,如添加字段、修改字段类型等。
- 数据编辑:你可以直接在 DataGrip 中查看和编辑表中的数据。
如果你有任何疑问,随时可以参考 DataGrip 的帮助文档或者使用内置的提示功能来帮助你快速掌握更多操作。
1.3 数据库的创建与删除
1.3.1 创建数据库
你可以通过 CREATE DATABASE
命令创建一个新的数据库。例如,创建一个名为 my_database
的数据库:
CREATE DATABASE my_database;
1.3.2 删除数据库
要删除数据库,可以使用 DROP DATABASE
命令。请注意,删除数据库会删除所有的表和数据,所以要小心使用:
DROP DATABASE my_database;
1.4 表的创建与删除
1.4.1 创建表
使用 CREATE TABLE
命令来创建表。在创建表时,您需要定义表的字段及其数据类型。以下是一个创建 “users” 表的例子:
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),age INT,email VARCHAR(100)
);
id
字段是主键,使用AUTO_INCREMENT
可以自动生成唯一的 ID。name
和email
字段的类型是VARCHAR(100)
,表示最多可以存储 100 个字符。age
字段的类型是INT
,表示存储整数。
1.4.2 删除表
删除表的命令是 DROP TABLE
,如下所示:
DROP TABLE users;
删除表后,表中的所有数据将丢失。
1.5 插入、更新、删除数据
1.5.1 插入数据(INSERT INTO)
使用 INSERT INTO
命令将数据插入表中。假设我们要向 users
表插入一条新记录:
INSERT INTO users (name, age, email)
VALUES ('Alice', 25, 'alice@example.com');
在这个例子中,我们插入了一个包含姓名、年龄和邮箱的记录。注意,我们没有插入 id
字段,因为它是 AUTO_INCREMENT
的,会自动生成。
1.5.2 更新数据(UPDATE)
使用 UPDATE
命令修改表中的现有数据。假设我们想修改 Alice
的年龄:
UPDATE users
SET age = 26
WHERE name = 'Alice';
SET
后面指定我们要更新的字段和新值,WHERE
用于限制哪些记录会被更新。如果不加 WHERE
,所有记录都会被更新。
1.5.3 删除数据(DELETE)
使用 DELETE
命令删除表中的数据。例如,删除 name
为 Alice
的记录:
DELETE FROM users
WHERE name = 'Alice';
同样地,如果不加 WHERE
条件,所有记录将会被删除。
1.6 常见的错误示例与原因解析
-
插入数据时字段数量不匹配
INSERT INTO users (name, age) VALUES ('Bob', 30);
错误原因:我们没有为
email
字段提供值,而email
字段并没有设置为可空(NOT NULL
)。解决方法是为email
提供一个值,或者修改表结构使其允许空值。 -
更新时忘记加 WHERE 条件
UPDATE users SET age = 30;
错误原因:这条命令会把所有用户的年龄都更新为 30。为避免这种错误,应始终加上
WHERE
条件以限制更新的范围。 -
删除数据时忘记加 WHERE 条件
DELETE FROM users;
错误原因:此命令会删除
users
表中的所有数据。使用时务必小心,确保加上适当的WHERE
条件。 -
删除不存在的表
DROP TABLE non_existent_table;
错误原因:如果表
non_existent_table
不存在,MySQL 会抛出错误。可以使用IF EXISTS
来避免这种错误:DROP TABLE IF EXISTS non_existent_table;
1.7 常见的面试题及解答
-
MySQL 中的
PRIMARY KEY
和UNIQUE
有什么区别?- PRIMARY KEY:主键是表中的唯一标识,它不能为空,每个表只能有一个主键。
- UNIQUE:唯一约束也要求字段值唯一,但可以有多个唯一约束,且可以为空(除非明确设置
NOT NULL
)。
-
什么是外键(Foreign Key)?
外键是一个表中的字段,它指向另一个表的主键。外键约束确保两个表之间的数据一致性。例如,在orders
表中,user_id
字段可以是users
表的外键,确保每个订单都属于一个有效的用户。 -
什么是事务(Transaction)?
事务是一组 SQL 操作,必须全部成功执行,或者全部失败。事务保证了数据库的一致性和完整性。事务通常包括四个特性:ACID(原子性、一致性、隔离性、持久性)。 -
MySQL 中的
JOIN
有哪些类型?- INNER JOIN:只返回两个表中匹配的记录。
- LEFT JOIN:返回左表的所有记录和右表中匹配的记录。
- RIGHT JOIN:返回右表的所有记录和左表中匹配的记录。
- FULL OUTER JOIN:返回两个表中所有的记录,匹配的部分会显示,未匹配的部分则显示
NULL
。
小结
在这一部分,我们介绍了 MySQL 的基本概念,包括数据库、表、字段、记录等,学习了如何使用 MySQL 客户端工具(如 DataGrip)来管理和操作数据库。我们还了解了如何创建和删除数据库和表,以及如何通过 SQL 命令进行数据的插入、更新和删除。
通过这些基础操作的学习,你可以在 MySQL 中进行常见的数据操作,同时避免一些常见的错误。掌握了这些基础,你将在开发过程中更加得心应手,能够更高效地进行数据存储和管理。
相关文章:
MySQL 数据库基础
1. MySQL 数据库基础 在这一部分,我们将学习 MySQL 的基本概念和常见的数据库操作,帮助你掌握如何创建数据库、表,并进行数据的增、删、改操作。同时,我们还会探讨一些常见的错误示例及其原因,帮助你避免常见的陷阱。…...
如何查看java的字节码文件?javap?能用IDEA吗?
编译指令: javac YourProject.java 查看字节码文件的指令: javap -c -l YourProject.class 不添加-c指令就不会显示字节码文件: 不添加 -l 就不会显示源代码和字节码文件的对应关系: 添加-l之后多出来这些: IDEA不太…...
实战技巧:如何快速提高网站收录的权威性?
快速提高网站收录的权威性是一个系统性的工作,涉及内容质量、网站结构、外部链接、用户体验等多个方面。以下是一些实战技巧,可以帮助你快速提升网站收录的权威性: 一、提升内容质量 原创性: 确保网站内容具备高质量与原创性&a…...
详解传输层协议TCP/UDP
传输层 传输层是OSI模型的第四层,主要负责端到端的数据传输,确保数据可靠、有> 序地从源设备传送到目标设备。其主要功能包括: 端到端通信:在源和目标设备之间建立连接,确保数据准确传输。数据分段与重组࿱…...
案例|某开关站室外轮式巡检机器人解决方案
随着电网规模的扩大和复杂性的增加,传统的GIS开关设备巡视工作面临着巨大的挑战。人工巡视不仅劳动强度大、效率低,而且难以保证巡视的准确性和全面性。此外,GIS设备通常位于复杂的环境中,如高海拔、高湿度、强电磁干扰等…...
穿越虚拟与现实:解密Linux进程的地址空间
在 Linux 操作系统中,每个进程都有独立的虚拟地址空间。虚拟地址空间是操作系统为每个进程提供的抽象内存模型,它使得每个进程都觉得自己拥有独立的内存,而不需要关心物理内存的具体布局。本文将深入探讨 Linux 进程的虚拟地址空间及其管理机…...
什么是MySql的主从复制(主从同步)?
主页还有其他面试题总结,有需要的可以去看一下,喜欢的就留个三连再走吧~ 1.什么是MySql的主从复制原理? 主从复制的核心就是二进制binlog(DDL(数据定义语言)语句和DML(数据操纵语言)…...
C++面向对象编程技术研究
一、引言 面向对象编程(OOP)是一种程序设计方法,它将现实世界中的实体抽象为“对象”,并通过类和对象来实现程序的设计。OOP的核心思想包括封装、继承和多态,这些特性使得程序更加模块化、易于扩展和维护。C作为一种支…...
MySQL 连表查询:原理、语法与优化
目录 引言 什么是连表查询? 连表查询的类型 1. 内连接(INNER JOIN) 2. 左连接(LEFT JOIN) 3. 右连接(RIGHT JOIN) 4. 全连接(FULL JOIN) 5. 交叉连接(…...
力扣2382. 删除操作后的最大子段和
力扣2382. 删除操作后的最大子段和 题目 题目解析及思路 题目要求找到每次删除一个元素的最大字段和 因为删除不好做,可以转删除为添加,用并查集维护当前子段和 两部分合并(两个并查集),三部分求和(两个并查集和一个元素) 代码 class S…...
PMP--题库--一模--纯问题
文章目录 单选题 (每题1分,共170道题)1、 [单选] 根据项目的特点,项目经理建议选择一种敏捷方法,该方法限制团队成员在任何给定时间执行的任务数。此方法还允许团队提高工作过程中问题和瓶颈的可见性。项目经理建议采用…...
C++核心指导原则: 错误处理
C Core Guidelines 整理目录 哲学部分接口(Interface)部分函数部分类和类层次结构部分枚举部分资源管理部分性能部分错误处理 E: Error handling E.1: Develop an error-handling strategy early in a design 翻译: 在设计早期制定一个错误处理策略。原因: 为确保代码的健壮…...
豆包、扣子等产品如何与CSDN合作?
要实现CSDN开发者社区与豆包、扣子等产品的深度合作,构建创作者Agent生态体系,可通过以下结构化方案实现技术、生态与商业价值的闭环(含具体实施路径与数据指标): 一、战略合作框架搭建 开放平台互通 建立三方API网关&…...
C#开发——ConcurrentDictionary集合
ConcurrentDictionary<TKey, TValue> 是 C# 中一个专为多线程场景设计的线程安全字典集合,位于 System.Collections.Concurrent 命名空间中。它允许多个线程同时对字典进行读写操作,而无需额外的同步措施。 一、集合特征 此集合有如下特征…...
CSS `transform` 属性详解:打造视觉效果与动画的利器
CSS transform 属性详解:打造视觉效果与动画的利器 引言一、transform 属性简介二、平移(Translation)三、旋转(Rotation)四、缩放(Scale)五、倾斜(Skew)六、组合变换&am…...
Python 进阶特性深度解析:从语法糖到内存管理的统一视角
生成式(推导式)的用法与内存效率分析 Python 的推导式不仅仅是语法糖,它们在内存管理和性能方面有着深刻的影响。理解推导式的工作原理,有助于我们写出更高效的代码。 推导式的内存模型分析 列表推导式在 CPython 解释器中的实现实际上比等价的 for 循环更为高效: # 列…...
eclipse配置Spring
1、从eclipse下载Spring工具 进入 help – install new software… ,如下图: 点击 add ,按以下方式输入: Name : Spring Location : http://dist.springsource.com/release/TOOLS/update/e4.10/ 之后点击 add ,等待…...
属性绑定
双大括号不能在html属性中使用,想要响应式地绑定一个属性,应用v-bind指令 <script > export default{data(){return{dynamicId:"appid",dynamicClass:"appclass"}} } </script><template><div v-bind:id"…...
深入讲解微信小程序 <canvas> 标签的 type=“2d“属性
在微信小程序开发中,<canvas> 组件是一个非常强大的工具,允许开发者创建动态图形和动画。然而,正确设置 <canvas> 的 type 属性是确保其正常工作的关键之一。本文将深入探讨 type"2d" 属性的重要性、使用场景及其在实际…...
基于PSO-LSTM长短期记忆神经网络的多分类预测【MATLAB】
一、研究背景与意义 在时间序列分类、信号识别、故障诊断等领域,多分类预测任务对模型的时序特征捕捉能力提出了极高要求。传统LSTM网络虽能有效建模长程依赖关系,但其性能高度依赖超参数的选择,例如隐含层神经元数量、学习率、迭代次数等。…...
Linux----线程
一、基础概念对比 特性进程 (Process)线程 (Thread)资源分配资源分配的基本单位(独立地址空间)共享进程资源调度单位操作系统调度单位CPU调度的最小单位创建开销高(需复制父进程资源)低(共享进程资源)通信…...
自注意力机制和CNN的区别
CNN:一种只能在固定感受野范围内进行关注的自注意力机制。CNN是自注意力的简化版本。自注意力:具有可学习感受野的CNN。自注意力是CNN的复杂形态,是更灵活的CNN,经过某些设计就可以变为CNN。 越灵活、越大的模型,需要…...
【qt链接mysql】
首先根据自己qtcreater 下载mysql安装包 将mysql安装目录下的如下目录中的xxx\MySQL\MySQL Server 5.7\lib\libmysql.dll 拷贝到QT目录C:\Qt\5.7\mingw53_32\bin 下(当前这个也是我电脑上的Qt路径,请找到你Qt对应的bin路径) 直接在文win11上…...
Parameter 与 Param 有什么区别
Parameter 与 Param Parameter 与 Param 意思相同,在大多数情况下可以互换使用,它们在用法和语境有一些细微的区别 1、Parameter Parameter 是一个完整的单词,是正式术语,广泛用于数学、统计学、计算机科学、工程等领域 在数学…...
【前端】【功能函数】treeMapEach,对每个节点进行自定义转换的实用函数
一、功能说明 这是一个递归遍历树形结构数据,并对每个节点进行自定义转换的实用函数。它会对原始树中的每个节点执行 conversion 函数,最终生成一个包含转换后结果的新树结构。 二、核心作用 树形结构遍历:深度优先递归遍历所有子节点数据…...
C#初级教程(5)——解锁 C# 变量的更多奥秘:从基础到进阶的深度指南
一、变量类型转换:隐式与显式的门道 (一)隐式转换:编译器的 “贴心小助手” 隐式转换是编译器自动进行的类型转换,无需开发者手动干预。这种转换通常发生在将取值范围小的数据类型赋值给取值范围大的数据类型时&#…...
初步学习java 动态代理
前言 在学习 动态代理知识之前,可以先了解 反射 反射的复习-CSDN博客 场景 我们知道,一些大明星开演出会,要收门票,准备场景啥的。但很显然 明星,他们主要还是 唱歌,跳舞,和粉丝互动。那么 其…...
QT 基础知识点
1.基础窗口类QMainWindow qDialog Qwidget 随项目一起创建的窗口基类有三个可选QMainWindow qDialog Qwidget 1.1 Qwidget 是所有窗口的基类,只要是他的子类,或子类的子类,都具有他的属性。 右键项目 Add New -> Qt qt设计师界面类&am…...
unity学习53:UI的子容器:面板panel
目录 1 UI的最底层容器:canvas 1.1 UI的最底层容器:canvas 1.2 UI的合理结构 2 UI的子容器:面板panel 2.1 创建panel 2.2 面板的本质: image ,就是一个透明的图片,1个空容器 3 面板的属性 4 面板的…...
Qt如何将数据传入labview,Qt又如何从labview中读取数据?
Qt如何将数据传入labview,Qt又如何从labview中读取数据? Qt如何将数据传入labviewQt如何从labview中读取数据 Qt如何将数据传入labview Qt如何从labview中读取数据...
JWT使用教程
目录 JWT (JSON Web Token)1. JWT简介(1) 什么是JWT(2) JWT有什么用(3) JWT认证方式 2. JWT的组成部分3. 签名的目的4. JWT与Token的区别5 JWT的优势6 JJWT签发与验证token(1) 引入依赖(2) 创建 Token(3) 解析Token(4) 设置过期时间(5) 自定义claims 7. JWT自定义工具类 JWT (J…...
数据结构——静态顺序表,动态顺序表
线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的 数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在…...
前端Sass面试题及参考答案
目录 什么是 Sass? Sass 和 CSS 的主要区别是什么? Sass 中如何处理列表? Sass 中如何处理映射(map)? Sass 中如何使用函数? Sass 中如何使用内置函数? Sass 中如何设置默认值? Sass 中的 @function 和 @mixin 有什么区别? Sass 中如何实现模块化? Sass 中…...
ubuntu20.04音频aplay调试
1、使用指定声卡,aplay 播放命令 aplay -D plughw:1,0 test2.wav2、 录音 arecord -Dhw:1,0 -d 10 -f cd -r 44100 -c 2 -t wav test.wav3、各个参数含义 -D 指定声卡编号 plughw:0,0 //0,0代表card0,device0,可以通过arecord -l获取 -f 录音格式 S16_LE…...
比特信噪比与信噪比SNR的换算公式
在无线通信系统中,比特信噪比与信噪比(SNR,通常指符号信噪比Es/N0)的换算: 核心公式 E b N 0 SNR R ⋅ log 2 M \boxed{ \frac{E_b}{N_0} \frac{\text{SNR}}{R \cdot \log_2 M} } N0EbR⋅log2MSNR 或…...
RTSP场景下RTP协议详解及音视频打包全流程
RTSP场景下RTP协议详解及音视频打包全流程 一、RTSP与RTP的关系 RTSP:负责媒体会话控制(DESCRIBE、SETUP、PLAY、PAUSE),通过SDP协商传输参数(端口、编码格式、封装模式)。RTP:实际传输音视频数…...
java练习(39)
ps:题目来自力扣 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以…...
2.24DFS和BFS刷题
洛谷P2895:用BFS走出危险区域,危险区域存在时间,我们用ma记录最快变成危险区域的时间, 然后每次枚举时间1然后跟ma数组比较看能不能走,然后时间复杂度为O(305^2)。 #include<iostream> #include<cstring>…...
基于YOLO11深度学习的运动鞋品牌检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
赛前启航 | 三场重磅直播集结,予力微软 AI 开发者挑战赛!
随着微软 AI 开发者挑战赛的火热进行,赛前指导直播已成为众多参赛者获取技术干货、灵感碰撞和实战技巧的绝佳平台。继前两期的精彩呈现,第三、四、五期直播即将接连登场,为开发者们带来更加深入的 AI 技术剖析和项目实战指引。无论你是想进一…...
MySQL数据库连接池泄露导致MySQL Server超时关闭连接
前言 最近做项目,发现老项目出现xxx,这个错误其实很简单,出现在MySQL数据库Server端对长时间没有使用的client连接执行清楚处理,因为是druid数据库,且在github也出现这样的issue:The last packet successf…...
Deepseek和Grok 3对比:写一段冒泡排序
1、这是访问Grok 3得到的结果 2、grok3输出的完整代码: def bubble_sort(arr):n len(arr) # 获取数组长度# 外层循环控制排序轮数for i in range(n):# 内层循环比较相邻元素,j的范围逐渐减少for j in range(0, n - i - 1):# 如果当前元素大于下一个元…...
EX_25/2/22
找到第一天mystring练习,实现以下功能 mystring str "hello" mystring ptr "world" str str ptr; str ptr str[0] H #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #in…...
el-select滚动获取下拉数据;el-select滚动加载
el-select下拉获取数据 1.解决问题2.封装MyScrollSelect组件3.使用MyScrollSelect组件 1.解决问题 场景:下拉数据量过大,后端提供一个分页查询接口;需要每次滚动加载下一页的下拉数据 且单选的状态,需要支持回显,通过n…...
Spring Boot面试题
Spring Boot面试题 基础概念 Q1: Spring Boot的核心特性有哪些? public class SpringBootBasicDemo {// 1. 自动配置SpringBootApplicationpublic class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class…...
STM32-智能小车项目
项目框图 ST-link接线 实物图: 正面: 反面: 相关内容 使用L9110S电机模块 电机驱动模块L9110S详解 | 良许嵌入式 一、让小车动起来 新建文件夹智能小车项目 在里面复制19-串口打印功能 重命名为01-让小车动起来 新建文件夹motor&…...
SAP-ABAP:ABAP第一代增强详解
在SAP ABAP开发中,第一代增强(First-Generation Enhancement) 是早期用于扩展标准程序功能的传统技术,主要通过预定义的增强点(Enhancement Points)实现。以下是详细解析: 一、第一代增强的核心…...
20分钟 Bash 上手指南
文章目录 bash 概念与学习目的第一个 bash 脚本bash 语法变量的使用位置参数管道符号(过滤条件)重定向符号条件测试命令条件语句case 条件分支Arrayfor 循环函数exit 关键字 bash 脚本记录历史命令查询文件分发内容 bash 概念与学习目的 bash࿰…...
地铁站内导航系统:基于蓝牙Beacon与AR技术的动态路径规划技术深度剖析
本文旨在分享一套地铁站内导航系统技术方案,通过蓝牙Beacon技术与AI算法的结合,解决传统导航定位不准确、路径规划不合理等问题,提升乘客出行体验,同时为地铁运营商提供数据支持与增值服务。 如需获取校地铁站内智能导航系统方案文…...
WordPress R+L Carrier Edition sql注入漏洞复现(CVE-2024-13481)(附脚本)
免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...