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

深入了解 MySQL:从基础到高级特性

引言

在当今数字化时代,数据的存储和管理至关重要。MySQL 作为一款广泛使用的开源关系型数据库管理系统(RDBMS),凭借其高性能、可靠性和易用性,成为众多开发者和企业的首选。本文将详细介绍 MySQL 的基础概念、安装启动、基本操作命令以及高级特性,并给出丰富的命令示例,帮助你全面掌握 MySQL 的使用。

一、MySQL 基础概念

数据库

数据库就像是一个大容器,用于存储各种数据。在 MySQL 里,你可以创建多个不同的数据库,以此来组织和管理不同类型的数据,就像不同的文件夹存放不同类型的文件一样。

表是数据库中存储数据的基本结构,由行和列构成。每一列代表一个字段,规定了数据的类型和属性;每一行则代表一条记录,包含各个字段的具体值。可以把表想象成一个 Excel 表格,列就是表头,行就是具体的数据行。

字段

字段是表中的列,每个字段都有特定的数据类型,如整数、字符串、日期等,这些数据类型用于限制存储的数据格式,确保数据的一致性和准确性。

记录

记录是表中的行,它包含了表中各个字段的具体值,代表一个完整的数据实体。例如在一个员工信息表中,一条记录就可能包含某个员工的姓名、年龄、部门等具体信息。

二、MySQL 安装与启动

安装

MySQL 的安装过程会因操作系统的不同而有所差异。下面以 Ubuntu 系统为例,介绍具体的安装步骤:

sudo apt update
sudo apt install mysql-server

如果你使用的是 Windows 系统,可以从 MySQL 官方网站下载安装程序,然后按照安装向导的提示进行操作。

启动与停止

在 Ubuntu 系统中,你可以使用以下命令来启动、停止和重启 MySQL 服务,还能设置其开机自启:

# 启动 MySQL 服务
sudo systemctl start mysql
# 停止 MySQL 服务
sudo systemctl stop mysql
# 重启 MySQL 服务
sudo systemctl restart mysql
# 设置 MySQL 服务开机自启
sudo systemctl enable mysql

三、MySQL 基本操作命令

登录 MySQL

使用以下命令登录 MySQL 服务器,输入命令后会提示你输入 MySQL 用户的密码:

mysql -u root -p

其中,-u 用于指定用户名,这里的 root 是 MySQL 的超级用户;-p 表示需要输入密码。

数据库操作

创建数据库
CREATE DATABASE mydatabase;

此命令会创建一个名为 mydatabase 的数据库。

查看所有数据库
SHOW DATABASES;

执行该命令后,会列出 MySQL 服务器上的所有数据库。

使用数据库
USE mydatabase;

这个命令会将当前的操作上下文切换到 mydatabase 数据库,之后的操作都会针对该数据库进行。

删除数据库
DROP DATABASE mydatabase;

该命令会删除名为 mydatabase 的数据库,需要注意的是,删除后数据将无法恢复,请谨慎使用。

表操作

创建表
CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,age INT,department VARCHAR(50)
);

此命令创建了一个名为 employees 的表,包含 idnameage 和 department 四个字段。id 字段是自增的主键,name 字段不能为空。

查看表结构
DESCRIBE employees;

执行该命令会显示 employees 表的详细结构,包括字段名、数据类型、是否允许为空等信息。

查看所有表
SHOW TABLES;

该命令会列出当前数据库中的所有表。

修改表结构
-- 添加字段
ALTER TABLE employees ADD COLUMN salary DECIMAL(10, 2);
-- 修改字段类型
ALTER TABLE employees MODIFY COLUMN age TINYINT;
-- 删除字段
ALTER TABLE employees DROP COLUMN department;
删除表
DROP TABLE employees;

该命令会删除 employees 表,删除后数据将无法恢复,请谨慎使用。

数据操作

插入数据
INSERT INTO employees (name, age, salary) VALUES ('John Doe', 30, 5000.00);

此命令向 employees 表中插入一条记录,包含 nameage 和 salary 三个字段的值。

查询数据
-- 查询所有记录
SELECT * FROM employees;
-- 查询指定字段
SELECT name, age FROM employees;
-- 条件查询
SELECT * FROM employees WHERE age > 25;
-- 排序查询
SELECT * FROM employees ORDER BY age DESC;
更新数据
UPDATE employees SET salary = 5500.00 WHERE name = 'John Doe';

此命令将 employees 表中 name 为 John Doe 的记录的 salary 字段更新为 5500.00。

删除数据
DELETE FROM employees WHERE age < 20;

该命令会删除 employees 表中 age 小于 20 的所有记录。

其他常用命令

创建用户
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

此命令创建了一个名为 newuser 的用户,该用户只能从本地(localhost)登录,密码为 password

授予权限
GRANT ALL PRIVILEGES ON mydatabase.* TO 'newuser'@'localhost';

该命令将 mydatabase 数据库的所有权限授予 newuser 用户。

刷新权限
FLUSH PRIVILEGES;

在修改用户权限后,需要执行此命令使权限生效。

退出 MySQL
EXIT;

此命令用于退出 MySQL 命令行界面。

四、MySQL 高级特性

索引

索引是一种特殊的数据结构,用于提高数据库查询的速度。你可以在表的一个或多个字段上创建索引,MySQL 会根据索引快速定位符合条件的记录。

-- 创建索引
CREATE INDEX idx_name ON employees (name);
-- 删除索引
DROP INDEX idx_name ON employees;

事务

事务是一组不可分割的数据库操作序列,要么全部执行成功,要么全部失败回滚。在 MySQL 中,可以使用以下命令管理事务:

-- 开始事务
START TRANSACTION;
-- 执行一系列操作
INSERT INTO employees (name, age) VALUES ('Jane Smith', 25);
UPDATE employees SET age = 26 WHERE name = 'Jane Smith';
-- 提交事务
COMMIT;
-- 回滚事务
ROLLBACK;

存储过程

存储过程是一组预编译的 SQL 语句集合,可以在数据库中存储和重复使用。

-- 创建存储过程
DELIMITER //
CREATE PROCEDURE GetEmployeesByAge(IN min_age INT)
BEGINSELECT * FROM employees WHERE age >= min_age;
END //
DELIMITER ;-- 调用存储过程
CALL GetEmployeesByAge(25);

视图

视图是虚拟的表,它基于 SQL 查询语句的结果集。视图不实际存储数据,而是在查询时动态生成结果。

-- 创建视图
CREATE VIEW young_employees AS
SELECT * FROM employees WHERE age < 30;-- 查询视图
SELECT * FROM young_employees;

时光匆匆,一篇博客又到了结尾处啦。真心感谢每一位愿意花时间阅读我文字的朋友,希望你们每天都过得开开心心的,生活顺顺利利哦,咱们下次再通过文字‘相遇’呀。

相关文章:

深入了解 MySQL:从基础到高级特性

引言 在当今数字化时代&#xff0c;数据的存储和管理至关重要。MySQL 作为一款广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;凭借其高性能、可靠性和易用性&#xff0c;成为众多开发者和企业的首选。本文将详细介绍 MySQL 的基础概念、安装启…...

OSPF基础(1):工作过程、状态机、更新

OSPF基础 1、技术背景&#xff08;与RIP密不可分&#xff0c;因为RIP中存在的问题&#xff09; RIP中存在最大跳数为15的限制&#xff0c;不能适应大规模组网周期性发送全部路由信息&#xff0c;占用大量的带宽资源以路由收敛速度慢以跳数作为度量值存在路由环路可能性每隔30秒…...

工业相机如何获得更好的图像色彩

如何获得更好的图像色彩 大部分的工业自动化检测中对物体的色彩信息并不敏感&#xff0c;因此会使用黑白的相机&#xff0c;但是在显微镜成像、颜色分类识别等领域&#xff0c;相机的色彩还原就显得格外重要&#xff0c;在调节相机色彩方面的参数时&#xff0c;有以下几个方面需…...

使用requestAnimationFrame减少浏览器重绘

文章目录 介绍使用使用rAF前使用rAF后 介绍 在屏幕中&#xff0c;浏览器通常都以60FPS&#xff08;1/60 s&#xff09;每帧更新屏幕&#xff0c;但是当前端绑定了一些高频事件&#xff0c;如鼠标移动&#xff0c;屏幕滚动、触摸滑动等时&#xff0c;在一帧的周期内&#xff0c;…...

Mac 终端命令大全

—目录操作— ꔷ mkdir 创建一个目录 mkdir dirname ꔷ rmdir 删除一个目录 rmdir dirname ꔷ mvdir 移动或重命名一个目录 mvdir dir1 dir2 ꔷ cd 改变当前目录 cd dirname ꔷ pwd 显示当前目录的路径名 pwd ꔷ ls 显示当前目录的内容 ls -la ꔷ dircmp 比较两个目录的内容 di…...

如何使用deepseek开发一个翻译API

什么是deepseek Deepseek 是一个基于人工智能技术的自然语言处理平台&#xff0c;提供了多种语言处理能力&#xff0c;包括文本翻译、语义分析、情感分析等。它通过深度学习模型和大规模语料库训练&#xff0c;能够实现高质量的文本翻译和多语言理解。Deepseek 的核心优势在于…...

vue如何解决跨域

文章目录 vue如何解决跨域1. 什么是跨域2. 如何解决2.1 CROS&#xff08;Cross-Origin Resource Sharing&#xff0c;跨域资源共享&#xff09;2.2 Proxy2.2.1 使用webpack proxy2.2.2 服务端代理转发2.2.3 通过nginx实现代理 vue如何解决跨域 1. 什么是跨域 跨域本质是浏览器…...

红包雨项目前端部分

创建项目 pnpm i -g vue/cli vue create red_pakage pnpm i sass sass-locader -D pnpm i --save normalize.css pnpm i --save-dev postcss-px-to-viewportpnpm i vantlatest-v2 -S pnpm i babel-plugin-import -Dhttps://vant.pro/vant/v2/#/zh-CN/<van-button click&…...

新版AndroidStudio 修改 jdk版本

一、问题 之前&#xff0c;在安卓项目中配置JDK和Gradle的过程非常直观&#xff0c;只需要进入Android Studio的File菜单中的Project Structure即可进行设置&#xff0c;十分方便。 如下图可以在这修改JDK: 但是升级AndroidStudio之后&#xff0c;比如我升级到了Android Stu…...

【golang学习之旅】使用VScode安装配置Go开发环境

1. 下载并安装Go 1.1 下载地址1.2 选择版本并下载1.3 安装目录1.4 验证是否安装成功 2. 配置环境变量 2.1 配置步骤2.2 GO部分环境变量说明 3. 下载或更新 Vscode 3.1 下载地址3.2 安装步骤 4. 为Go开发配置VScode 1. 下载并安装Go 1.1 下载地址 https://studygolang.com/dl…...

langchain教程-2.prompt

前言 该系列教程的代码: https://github.com/shar-pen/Langchain-MiniTutorial 我主要参考 langchain 官方教程, 有选择性的记录了一下学习内容 这是教程清单 1.初试langchain2.prompt3.OutputParser/输出解析4.model/vllm模型部署和langchain调用5.DocumentLoader/多种文档…...

GGML、GGUF、GPTQ 都是啥?

GGML、GGUF和GPTQ是三种与大型语言模型(LLM)量化和优化相关的技术和格式。它们各自有不同的特点和应用场景,下面将详细解释: 1. GGML(GPT-Generated Model Language) 定义:GGML是一种专为机器学习设计的张量库,由Georgi Gerganov创建。它最初的目标是通过单一文件格式…...

C++ 原码、反码、补码和位操作符

目录 一、原码、反码、补码 二、位操作符 1、左移操作符是双⽬操作符 移位规则&#xff1a;左边抛弃、右边补 0 2、右移操作符是双⽬操作符 逻辑右移&#xff1a;左边⽤ 0 填充&#xff0c;右边丢弃算术右移&#xff1a;左边⽤原该值的符号位填充&#xff0c;右边丢弃 3、…...

idea中git版本回退

idea中git版本回退 将dev分支代码合并到master分支执行回退步骤 将dev分支代码合并到master分支 #合并成功之后 执行回退步骤 #在指定的版本上 右键 #这里选择【Hard】彻底回退 #本地的master分支回退成功 #将本地的master强制推送到远程&#xff0c;需要执行命令 git p…...

【PostgreSQL内核学习 —— (WindowAgg(三))】

WindowAgg set_subquery_pathlist 部分函数解读check_and_push_window_quals 函数find_window_run_conditions 函数执行案例总结 计划器模块&#xff08;set_plan_refs函数&#xff09;set_windowagg_runcondition_references 函数执行案例 fix_windowagg_condition_expr 函数f…...

redis教程

Redis 教程 Redis 是一个开源的内存数据结构存储系统&#xff0c;用作数据库、缓存和消息代理。以下是一些基础知识和常用操作。 一、简介 Redis 支持多种数据结构&#xff0c;如字符串、哈希、列表、集合、有序集合等。它具有高性能、高可用性和数据持久化的特性。 二、安…...

Python aiortc API

本研究的主要目的是基于Python aiortc api实现抓取本地设备媒体流&#xff08;摄像机、麦克风&#xff09;并与Web端实现P2P通话。本文章仅仅描述实现思路&#xff0c;索要源码请私信我。 1 demo-server解耦 1.1 原始代码解析 1.1.1 http服务器端 import argparse import …...

Transaction rolled back because it has been marked as rollback-only问题解决

1、背景 在我们的日常开发中&#xff0c;经常会存在在一个Service层中调用另外一个Service层的方法。比如&#xff1a;我们有一个TaskService&#xff0c;里面有一个execTask方法&#xff0c;且这个方法存在事物&#xff0c;这个方法在执行完之后&#xff0c;需要调用LogServi…...

深入浅出 DeepSeek V2 高效的MoE语言模型

今天&#xff0c;我们来聊聊 DeepSeek V2 高效的 MoE 语言模型&#xff0c;带大家一起深入理解这篇论文的精髓&#xff0c;同时&#xff0c;告诉大家如何将这些概念应用到实际中。 &#x1f31f; 什么是 MoE&#xff1f;——Mixture of Experts&#xff08;专家混合模型&#x…...

读书笔记--分布式架构的异步化和缓存技术原理及应用场景

本篇是在上一篇的基础上&#xff0c;主要对分布式应用架构下的异步化机制和缓存技术进行学习&#xff0c;主要记录和思考如下&#xff0c;供大家学习参考。大家知道原来传统的单一WAR应用中&#xff0c;由于所有数据都在同一个数据库中&#xff0c;因此事务问题一般借助数据库事…...

周末高质量遛娃,你真的找对地方了吗?

“周末想高质量遛娃&#xff0c;却不知找对地方了没&#xff1f;” 周末对于家长来说&#xff0c;是陪伴孩子的黄金时间&#xff0c;都希望能给孩子一段既有趣又有意义的时光。但究竟哪里才是高质量遛娃的好去处呢&#xff1f;下面就为您详细解答。遛娃地点基础认知类Q&#xf…...

S32K3项目中途想换调试器?手把手教你为已有工程添加Lauterbach调试接口

S32K3项目中途切换调试器&#xff1a;无缝迁移Lauterbach接口的工程实践 在嵌入式开发领域&#xff0c;调试工具的灵活切换往往意味着效率的飞跃。想象这样一个场景&#xff1a;你正在使用NXP S32K3系列MCU开发汽车电子控制单元&#xff0c;项目已进行到中期测试阶段&#xff0…...

GB28181流媒体服务器选型笔记:为什么我们最终选择了ZLMediaKit?聊聊它的协议转换与性能表现

GB28181流媒体服务器选型实战&#xff1a;ZLMediaKit的协议转换与性能突围 在视频监控与安防领域的技术选型中&#xff0c;GB28181协议服务器的选择往往让架构师陷入"性能、兼容性、扩展性"的三角困境。经过三个月的技术验证与压力测试&#xff0c;我们团队最终选择了…...

如何在树莓派上用TinyProxy搭建轻量级HTTP代理(附性能优化技巧)

树莓派上部署TinyProxy的工程实践与深度调优指南 当你在咖啡厅用树莓派搭建的微型服务器调试物联网设备时&#xff0c;突然发现所有外网请求都需要经过代理——这就是TinyProxy在嵌入式场景下的典型应用。不同于x86服务器的部署&#xff0c;在ARM架构的树莓派上运行代理服务需要…...

OpenClaw-DingTalk终极指南:Stream模式钉钉机器人企业级部署实战

OpenClaw-DingTalk终极指南&#xff1a;Stream模式钉钉机器人企业级部署实战 【免费下载链接】openclaw-channel-dingtalk Dingtalk channel plugin for OpenClaw 项目地址: https://gitcode.com/gh_mirrors/op/openclaw-channel-dingtalk OpenClaw-DingTalk是一款专为O…...

亚洲美女-造相Z-Turbo可部署方案:适配信创环境(麒麟OS+昇腾910B)可行性验证

亚洲美女-造相Z-Turbo可部署方案&#xff1a;适配信创环境&#xff08;麒麟OS昇腾910B&#xff09;可行性验证 今天我们来聊聊一个挺有意思的话题&#xff1a;怎么把一个专门生成亚洲美女图片的AI模型&#xff0c;部署到咱们国产的信创环境里。这个模型叫“亚洲美女-造相Z-Tur…...

3大创新突破:CoreCycler单核心稳定性测试全攻略

3大创新突破&#xff1a;CoreCycler单核心稳定性测试全攻略 【免费下载链接】corecycler Script to test single core stability, e.g. for PBO & Curve Optimizer on AMD Ryzen or overclocking/undervolting on Intel processors 项目地址: https://gitcode.com/gh_mir…...

大数据领域 OLAP 技术的发展趋势展望

大数据领域OLAP技术的发展趋势展望 关键词:OLAP、大数据分析、实时决策、云原生、AI融合 摘要:本文从超市老板的"销售密码"故事出发,用通俗易懂的语言拆解OLAP(在线分析处理)技术的核心逻辑,结合当前大数据技术演进趋势,深入探讨OLAP在实时化、云原生化、AI融…...

从MAX30102项目实战出发:解决Keil5编译STM32时ARMCLANG和头文件缺失的连环坑

从MAX30102项目实战解析Keil5编译STM32的深度排坑指南 当你在深夜调试MAX30102血氧传感器时&#xff0c;Keil5突然弹出一连串编译器报错——这种经历对STM32开发者来说绝不陌生。本文将以真实项目为背景&#xff0c;拆解那些官方文档从未提及的编译陷阱。不同于常规操作手册&a…...

Python 3.14 JIT架构深度拆解(含官方未发布IR层流程图+Hot Code Path决策树)

第一章&#xff1a;Python 3.14 JIT编译器演进背景与设计哲学Python 长期以来以解释执行和动态灵活性著称&#xff0c;但性能瓶颈在数值计算、实时服务与高吞吐系统中日益凸显。CPython 解释器的字节码执行模型虽稳定可靠&#xff0c;却难以突破单线程 GIL 与逐指令解释带来的固…...