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 的基本概念和常见的数据库操作,帮助你掌握如何创建数据库、表,并进行数据的增、删、改操作。同时,我们还会探讨一些常见的错误示例及其原因,帮助你避免常见的陷阱。…...
微服务即时通信系统---(三)框架学习
目录 brpc RPC框架 核心概念 工作原理 介绍 安装 头文件包含和编译时指明库 类与接口介绍 日志输出类与接口 protobuf类与接口 Closure类 RpcController类 服务端类与接口 ServerOptions类 Server类 ClosureGuard类 HttpHeader类 Controller类 客户端类与…...

解决Spring Data JPA set值后自动更新到数据库问题
出现问题: 通过EntityManager查询出数据保存到对象中,但是向对象set值后就自动更新到数据库中去了。 Hibernate对象的三种状态 1、瞬时态:对象刚new出来,还未通过save方法保存到数据库,或通过游离态对象、持久化态对象…...

心理咨询小程序的未来发展
还在眼巴巴看着心理咨询行业的巨大蛋糕却无从下口?今天就来聊聊心理咨询小程序的无限潜力 据统计,全球超 10 亿人受精神心理问题困扰,国内心理健康问题也日益突出,心理咨询需求猛增。可传统心理咨询预约难,费用高&…...

STM32-智能台灯项目
一、项目需求 1. 红外传感器检测是否有人,有人的话实时检测距离,过近则报警;同时计时,超过固定时间则报警; 2. 按键 1 切换工作模式:智能模式、按键模式、远程模式; 3. 智能模式下,根…...
c# —— StringBuilder 类
StringBuilder 类是 C# 和其他一些基于 .NET Framework 的编程语言中的一个类,它位于 System.Text 命名空间下。StringBuilder 类表示一个可变的字符序列,它是为了提供一种比直接使用字符串连接操作更加高效的方式来构建或修改字符串。 与 C# 中的 stri…...

Linux 核心架构与组件(2025更新中)
一、Linux 核心架构与组件 内核架构 核心职责: 管理进程生命周期、内存分配、硬件驱动交互及文件系统操作。 模块化设计支持动态加载硬件驱动(如modprobe加载内核模块),提升灵活性和扩展性。 内存管理:…...

Unity打包APK报错 using a newer Android Gradle plugin to use compileSdk = 35
Unity打包APK报错 using a newer Android Gradle plugin to use compileSdk 35 三个报错信息如下 第一个 WARNING:We recommend using a newer Android Gradle plugin to use compileSdk 35This Android Gradle plugin (7.1.2) was tested up to compileSdk 32This warning…...

陀螺匠·企业助手v1.8 产品介绍
陀螺匠企业助手是一套采用Laravel 9框架结合Swoole高性能协程服务与Vue.js前端技术栈构建的新型智慧企业管理与运营系统。该系统深度融合了客户管理、项目管理、审批流程自动化以及低代码开发平台,旨在为企业提供一站式、数字化转型的全方位解决方案,助力…...

文件包含-session2
[题目信息]: 题目名称题目难度文件包含-session22 [题目考点]: 由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意…...
GitHub免密操作与跨服务器通行:SSH密钥一站式配置指南
作为开发者,与GitHub的安全交互和远程服务器的高效管理是日常工作的核心技能。本文将从零开始,教你如何配置GitHub的SSH密钥认证,并实现免密码远程登录Linux服务器。 一、为什么需要SSH密钥? 更安全的认证方式:相比传统密码,密钥认证几乎无法被暴力破解操作便捷性:免去每…...

PHP入门基础学习四(PHP基本语法)
运算符 运算符,专门用于告诉程序执行特定运算或逻辑操作的符号。根据运算符的作用,可以将PHP语言中常见的运算符分为9类 算数运算符: 是用来处理加减乘除运算的符号 也是最简单和最常用的运算符号 赋值运算符 1. 是一个二元运算符&#x…...
模型蒸馏:让人工智能更智能、更小、更高效的艺术
你有没有想过,我们如何才能让一个需要巨大计算能力的庞大人工智能模型变得更精简、更快速、更强大?答案在于模型蒸馏,这是一种允许知识从大型、计算成本高昂的人工智能系统转移到较小、更高效的系统的技术,而不会牺牲智能。 什么是模型蒸馏 模型蒸馏是一种技术,其…...

git 小乌龟安装包及中文包
git 工具小乌龟不需要输入命令就可以提交,挺方便的,安装完之后鼠标右击就可以看到 链接: https://pan.baidu.com/s/1jqrcrFjKf-bKGcHesxs-YQ 提取码: 8888 复制这段内容后打开百度网盘手机App,操作更方便哦...
MySQL 主从集群同步延迟问题分析与解决方案
MySQL 主从复制(Replication)是构建高可用架构的核心技术,但在实际应用中,主从同步延迟(Replication Lag)是常见且棘手的问题。延迟会导致从库数据不一致、读请求返回旧数据,甚至引发业务逻辑错…...
用HTML5+CSS+JavaScript实现新奇挂钟动画
用HTML5+CSS+JavaScript实现新奇挂钟动画 引言 在技术博客中,如何吸引粉丝并保持他们的关注?除了干货内容,独特的视觉效果也是关键。今天,我们将通过HTML5、CSS和JavaScript实现一个新奇挂钟动画,并将其嵌入到你的网站中。这个动画不仅能让你的网站脱颖而出,还能展示你的…...

医疗AI领域中GPU集群训练的关键技术与实践经验探究(下)
五、医疗 AI 中 GPU 集群架构设计 5.1 混合架构设计 5.1.1 参数服务器与 AllReduce 融合 在医疗 AI 的 GPU 集群训练中,混合架构设计将参数服务器(Parameter Server)与 AllReduce 相结合,能够充分发挥两者的优势,提升训练效率和模型性能。这种融合架构的设计核心在于根…...

解决双系统开机显示gnu grub version 2.06 Minimal BASH Like Line Editing is Supported
找了好多教程都没有用,终于解决了!!我是因为ubuntu分区的时候出问题了 问题描述: 双系统装好,隔天开机找不到引导项,黑屏显示下列 因为我用的D盘划分出来的部分空闲空间,而不是全部,…...
sysbench压测pgsql数据库 —— 筑梦之路
这里主要使用sysbench工具对Pgsql数据库进行基准测试。 1. 创建数据库和用户名 # 创建用户和数据库CREATE USER sysbench WITH PASSWORD 123456;CREATE DATABASE sysbench owner sysbench;# 给用户授权访问 vim pg_hba.confhost sysbench sysbench 127…...

数字IC后端培训教程| 芯片后端实战项目中base layer drc violation解析
今天分享一个咱们社区IC后端训练营学员遇到的一个经典DRC案例。这个DRC Violation的名字为PP.S.9(这里的PP就是Plus P)。这一层是属于管子的base layer。更多关于base layer的介绍,可以查看下面这份教程。 https://alidocs.dingtalk.com/api/doc/transit?spaceId5…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...