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。
  • nameemail 字段的类型是 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 命令删除表中的数据。例如,删除 nameAlice 的记录:

DELETE FROM users
WHERE name = 'Alice';

同样地,如果不加 WHERE 条件,所有记录将会被删除。


1.6 常见的错误示例与原因解析
  1. 插入数据时字段数量不匹配

    INSERT INTO users (name, age)
    VALUES ('Bob', 30);
    

    错误原因:我们没有为 email 字段提供值,而 email 字段并没有设置为可空(NOT NULL)。解决方法是为 email 提供一个值,或者修改表结构使其允许空值。

  2. 更新时忘记加 WHERE 条件

    UPDATE users
    SET age = 30;
    

    错误原因:这条命令会把所有用户的年龄都更新为 30。为避免这种错误,应始终加上 WHERE 条件以限制更新的范围。

  3. 删除数据时忘记加 WHERE 条件

    DELETE FROM users;
    

    错误原因:此命令会删除 users 表中的所有数据。使用时务必小心,确保加上适当的 WHERE 条件。

  4. 删除不存在的表

    DROP TABLE non_existent_table;
    

    错误原因:如果表 non_existent_table 不存在,MySQL 会抛出错误。可以使用 IF EXISTS 来避免这种错误:

    DROP TABLE IF EXISTS non_existent_table;
    

1.7 常见的面试题及解答
  1. MySQL 中的 PRIMARY KEYUNIQUE 有什么区别?

    • PRIMARY KEY:主键是表中的唯一标识,它不能为空,每个表只能有一个主键。
    • UNIQUE:唯一约束也要求字段值唯一,但可以有多个唯一约束,且可以为空(除非明确设置 NOT NULL)。
  2. 什么是外键(Foreign Key)?
    外键是一个表中的字段,它指向另一个表的主键。外键约束确保两个表之间的数据一致性。例如,在 orders 表中,user_id 字段可以是 users 表的外键,确保每个订单都属于一个有效的用户。

  3. 什么是事务(Transaction)?
    事务是一组 SQL 操作,必须全部成功执行,或者全部失败。事务保证了数据库的一致性和完整性。事务通常包括四个特性:ACID(原子性、一致性、隔离性、持久性)。

  4. MySQL 中的 JOIN 有哪些类型?

    • INNER JOIN:只返回两个表中匹配的记录。
    • LEFT JOIN:返回左表的所有记录和右表中匹配的记录。
    • RIGHT JOIN:返回右表的所有记录和左表中匹配的记录。
    • FULL OUTER JOIN:返回两个表中所有的记录,匹配的部分会显示,未匹配的部分则显示 NULL

小结

在这一部分,我们介绍了 MySQL 的基本概念,包括数据库、表、字段、记录等,学习了如何使用 MySQL 客户端工具(如 DataGrip)来管理和操作数据库。我们还了解了如何创建和删除数据库和表,以及如何通过 SQL 命令进行数据的插入、更新和删除。

通过这些基础操作的学习,你可以在 MySQL 中进行常见的数据操作,同时避免一些常见的错误。掌握了这些基础,你将在开发过程中更加得心应手,能够更高效地进行数据存储和管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/23273.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

einops测试

文章目录 1. einops2. code3. pytorch 1. einops einops 主要是通过爱因斯坦标记法来处理张量矩阵的库,让矩阵处理上非常简单。 conda : conda install conda-forge::einopspython: 2. code import torch import torch.nn as nn import torch.nn.functional as…

Unity教程(二十一)技能系统 基础部分

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…

Docker:Docker从入门到精通(一)- Docker简介

一、前言 通过本专栏的学习,我们将了解   1. 掌握Docker基础知识,能够理解Docker镜像与容器的概念   2. 完成Docker安装与启动   3. 掌握Docker镜像与容器相关命令   4. 掌握Tomcat Nginx 等软件的常用应用的安装   5. 掌握docker迁移与备份相…

单机上使用docker搭建minio集群

单机上使用docker搭建minio集群 1.集群安装1.1前提条件1.2步骤指南1.2.1安装 Docker 和 Docker Compose(如果尚未安装)1.2.2编写docker-compose文件1.2.3启动1.2.4访问 2.使用2.1 mc客户端安装2.2创建一个连接2.3简单使用下 这里在ubuntu上单机安装一个m…

Image Downloader下载文章图片的WordPress插件

源码介绍 一个用于下载图片的WordPress插件,包含下载统计功能,支持任何主题使用 用户点击下载后自动打包该文章所有原始图片,并把文章标题作为压缩包的文件名。 不占用服务器空间,也不占网盘空间,直接利用浏览器的性…

PLC通讯

PPI通讯 是西门子公司专为s7-200系列plc开发的通讯协议。内置于s7-200 CPU中。PPI协议物理上基于RS-485口,通过屏蔽双绞线就可以实现PPI通讯。PPI协议是一种主-从协议。主站设备发送要求到从站设备,从站设备响应,从站不能主动发出信息。主站…

VScode+stfp插件,实现文件远程同步保存【2025实操有效】

目录 1 痛点2 准备工作3 操作步骤3.1 第一步,下载STFP插件3.2 第二步,修改配置文件3.3 第三步,测试是否成功 4 后记 1 痛点 我一直用vscode远程连接服务器,传代码文件等到服务器上面,突然有一次服务器那边尽心维修&am…

【quicker】调节PPT指定字号字体大小/快速调节WPS的PPT字体大小

在quicker的拓展动作中找不到直接指定字号大小方式的动作。 换个思路,既然无法通过alt键模拟,不如模拟右键菜单触发?尝试过失败了 所以有了第三种方法 ,首先给字体窗口设置快捷键,此处设置的是altshiftf,然…

Grouped-Query Attention(GQA)详解: Pytorch实现

Grouped-Query Attention(GQA)详解 Grouped-Query Attention(GQA) 是 Multi-Query Attention(MQA) 的改进版,它通过在 多个查询头(Query Heads)之间共享 Key 和 Value&am…

百度百舸 DeepSeek 一体机发布,支持昆仑芯 P800 单机 8 卡满血版开箱即用

在私有云环境中成功部署 DeepSeek 满血版并实现性能调优,并不是一件容易的事情。选择合适的 GPU 配置、安装相应的环境、成功部署上线业务、加速推理任务加速、支撑多用户并发 …… 完成业务测试,成功融入生产业务中。 为了帮助企业快速实现 DeepSeek 服…

c++入门-------命名空间、缺省参数、函数重载

C系列 文章目录 C系列前言一、命名空间二、缺省参数2.1、缺省参数概念2.2、 缺省参数分类2.2.1、全缺省参数2.2.2、半缺省参数 2.3、缺省参数的特点 三、函数重载3.1、函数重载概念3.2、构成函数重载的条件3.2.1、参数类型不同3.2.2、参数个数不同3.2.3、参数类型顺序不同 前言…

tortoiseGit的使用和上传拉取

tortoiseGit的使用和上传拉取 下载TortoiseGit 通过网盘分享的文件:tortoiseGit.zip 链接: https://pan.baidu.com/s/1EOT_UsM9_OysRqXa8gES4A?pwd1234 提取码: 1234 在电脑桌面新建文件夹并进入 右击鼠标 将网址复制上去 用户名和密码是在git注册的用户名和…

Mybatis学习总结

官网 概念 用于简化JDBC的开发。 在配置mybatis的时候如果没有建立连接识别不了信息,我们需要在idea配置mysql的配置信息 JDBC是一套操作关系数据库的API,有效率,和mybatis比起来资源节约,性能高,不繁琐。 数据库连…

SQL笔记#数据更新

一、数据的插入(INSERT语句的使用方法) 1、什么是INSERT 首先通过CREATE TABLE语句创建表,但创建的表中没有数据;再通过INSERT语句向表中插入数据。 --创建表ProductIns CREATE TABLE ProductIns (product_id CHAR(4) NOT NULL,product_name …

dockerfile构建haproxy

1. 结构目录 [rootlocalhost ~]# tree haproxy/ haproxy/ ├── dockerfile └── files├── haproxy-2.5.0.tar.gz├── haproxy.cfg├── install.sh└── start.sh1 directory, 5 files [rootlocalhost ~]# [rootlocalhost ~]# cd haproxy/ [rootlocalhost haproxy]…

Docker(Nginx)部署Vue

简介:目标使用docker将vue生成的dist文件,结合nginx生成镜像,然后运行; 1、首选确保vue项目正确运行,并能正确打包dist文件; 2、查看已经生成的dist文件 3、将dist文件打包为rar文件或者zip文件&#xf…

C++——模版(二)

前言 我们前面讲过模版的一,不知道大家还有没有所印象,如果大家不太能回忆起来可以再去前面看一下,那通过我们讲解了几个容器之后,相信大家现在应该已经对模版很熟悉了,那模版还剩下一些其他的内容我们就在这里进行讲…

算法与数据结构(旋转链表)

题目 思路 每个节点向右移动k个位置,其实就是从头开始遍历,将n-k个节点顺序插入到链表的尾部。 如上图所示的示例1,先将1插入到5的后面,再将2插入到1的后面,最后将3插入到2的后面即可。 代码详解 定义一个cur变量用…

TOGAF之架构标准规范-信息系统架构 | 应用架构

TOGAF是工业级的企业架构标准规范,信息系统架构阶段是由数据架构阶段以及应用架构阶段构成,本文主要描述信息系统架构阶段中的应用架构阶段。 如上所示,信息系统架构(Information Systems Architectures)在TOGAF标准规…

智能优化算法:莲花算法(Lotus flower algorithm,LFA)介绍,提供MATLAB代码

一、 莲花算法 1.1 算法原理 莲花算法(Lotus flower algorithm,LFA)是一种受自然启发的优化算法,其灵感来源于莲花的自清洁特性和授粉过程。莲花的自清洁特性,即所谓的“莲花效应”,是由其叶片表面的微纳…