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

深入了解 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 的基础概念、安装启…...

SQL精度丢失:CAST(ce.fund / 100 AS DECIMAL(10, 2)) 得到 99999999.99

当你使用 CAST(ce.fund / 100 AS DECIMAL(10, 2)) 进行计算并转换时得到 99999999.99 这个结果&#xff0c;可能由以下几种原因导致&#xff1a; 1. DECIMAL 类型精度限制 DECIMAL(10, 2) 表示总共可以存储 10 位数字&#xff0c;其中小数部分占 2 位。这意味着整数部分最多只…...

深度学习里面的而优化函数 Adam,SGD,动量法,AdaGrad 等 | PyTorch 深度学习实战

前一篇文章&#xff0c;使用线性回归模型逼近目标模型 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课&#xff1a;引领人工智能新时代【梗直哥瞿炜】 深度学习里面的而优化函数 …...

基于Spring Boot的图书个性化推荐系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

【实战】excel分页写入导出大文件

类 RequestMapping("export")ResponseBodypublic void export(HttpServletResponse response) {long start System.currentTimeMillis();QueryVo query new QueryVo();// response响应头setResponseHeader(response, "excel");ExcelWriter writer Excel…...

【论文阅读】Comment on the Security of “VOSA“

Comment on the Security of Verifiable and Oblivious Secure Aggregation for Privacy-Preserving Federated Learning -- 关于隐私保护联邦中可验证与遗忘的安全聚合的安全性 论文来源摘要Introduction回顾 VOSA 方案对VOSA不可伪造性的攻击对于类型 I 的攻击对于类型 II 的…...

3.攻防世界 Confusion1(服务器模板注入SSTI)

题目描述如下 进入题目页面如下 图片是蟒蛇、大象&#xff1f;python、php&#xff1f; 猜测需要代码审计 点击 F12查看源码&#xff0c;有所提示flag 但是也没有其他信息了 猜测本题存在SSTI&#xff08;服务器模板注入&#xff09;漏洞&#xff0c;为验证&#xff0c;构造…...

保姆级教程 !SQL Server数据库的备份和还原

使用 SQL Server Management Studio (SSMS) 备份和还原数据库 1、数据库备份 Step 1 打开 SSMS 输入server name 以及用户名和密码连接到你的 SQL Server 实例 Step 2 展开Database,选中你要备份的数据库 Step 3 右击选中的数据库&#xff0c;点击Tasks --> Back …...

AlwaysOn 可用性组副本所在服务器以及该副本上数据库的各项状态信息

目录标题 AlwaysOn语句代码解释&#xff1a;1. sys.dm_hadr_database_replica_states 视图字段详细解释及官网链接官网链接字段解释 2. sys.availability_replicas 视图字段详细解释及官网链接官网链接字段解释 查看视图的创建语句方法一&#xff1a;使用 SQL Server Managemen…...

Android telephony | supl PDN建立和定位信息获取

在Android系统中&#xff0c;SUPL&#xff08;Secure User Plane Location&#xff09;是一种用于辅助GPS定位的技术&#xff0c;它通过建立特定的APN&#xff08;Access Point Name&#xff09;连接来传输定位数据。 以下介绍Android Telephony发起SUPL APN的PDN&#xff08;P…...

ip地址是手机号地址还是手机地址

在数字化生活的浪潮中&#xff0c;IP地址、手机号和手机地址这三个概念如影随形&#xff0c;它们各自承载着网络世界的独特功能&#xff0c;却又因名称和功能的相似性而时常被混淆。尤其是“IP地址”这一术语&#xff0c;经常被错误地与手机号地址或手机地址划上等号。本文旨在…...

【react】react面试题

react面试题 1.对 React 的理解、特性 2.react18有哪些更新 3.JSX是什么 4.解释为什么浏览器不能读取jsx 6.ReactNative中&#xff0c;如何解决8081端口被占用而提示无法访问的问题&#xff1f; 7. React 生命周期 8.react事件机制 9.react 组件传值 10.React改…...

zephyr devicetree

Syntax and structure — Zephyr Project Documentation Input files There are four types of devicetree input files: sources (.dts) includes (.dtsi) overlays (.overlay) bindings (.yaml) The devicetree files inside the zephyr directory look like this: …...

学习笔记:机器学习中的数学原理(一)

1. 集合 集合分为有限集和无限集&#xff1b; 对于有限集&#xff0c;两集合元素数相等即为等势&#xff1b; 对于无限集&#xff0c;两集合元素存在一一映射关系即为等势&#xff1b; 无限集根据是否与正整数集等势分为可数集和不可数集。 2. sigmoid函数&#xff08;也叫…...

鼠标滚轮冒泡事件@wheel.stop

我有一个页面,是在画布上的组件,但是组件中有一个table,table中数据多了,就会出现滚动条,正常情况下,滚动条用鼠标滚轮就可以滑动,但是这个table是在画布上,滚动滚轮会让画布缩放 在table外层的div上加上 wheel.stop,就生效了 wheel.stop 用途&#xff1a;这个修饰符用于处理鼠…...

Unity DoTween使用文档

DoTween 使用文档 DoTween 是 Unity 中非常流行的动画补间插件。它通过链式调用方式&#xff0c;让开发者可以快速创建平滑、自然的动画效果。本文将介绍 DoTween 的基础用法、缓动曲线原理&#xff08;包含常见缓动曲线的数学公式与参数说明&#xff09;、案例演示以及一些常…...

C语言中的共用体(Union):嵌入式开发中的节省内存利器

在进行嵌入式开发时&#xff0c;我们常常会听到这样一句话&#xff1a;“内存就是金钱。” 在嵌入式系统中&#xff0c;内存资源通常是非常稀缺的&#xff0c;尤其是在一些微控制器&#xff08;如STM32、ESP32等&#xff09;的开发中&#xff0c;我们需要尽可能地精打细算&…...

Java 线程池:7参数配置、4拒绝策略与执行流程详解

1. 为什么需要线程池&#xff1f; 在 Java 并发编程中&#xff0c;线程的创建和销毁是一项昂贵的操作。频繁地创建和销毁线程会带来较高的系统开销&#xff0c;甚至可能因线程数过多而导致 OOM&#xff08;OutOfMemoryError&#xff09; 或 CPU 过载。 线程池&#xff08;Thre…...

代码随想录算法【Day38】

Day38 322. 零钱兑换 思路 完全背包 代码 class Solution { public:int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount 1, INT_MAX);dp[0] 0;for (int i 0; i < coins.size(); i) { // 遍历物品for (int j coins[i]; j <…...

c# Lazy<T>单例模式 - 延迟初始化单例实例示例与详解

Lazy 延迟初始化单例实例示例与详解 Lazy<T> 是 C# 中用于延迟初始化的类&#xff0c;它允许你在第一次访问对象时才创建实例&#xff0c;而不是在程序启动时就创建实例。这在单例模式中非常有用&#xff0c;因为它可以避免不必要的资源消耗。 1. Lazy 的基本用法 Laz…...

51单片机之冯·诺依曼结构

一、概述 8051系列单片机将作为控制应用最基本的内容集成在一个硅片上&#xff0c;其内部结构如图4-1所示。作为单一芯片的计算机&#xff0c;它的内部结构与一台计算机的主机非常相似。其中微处理器相当于计算机中的CPU&#xff0c;由运算器和控制器两个部分构成&#xff1b;…...

Safari常用快捷键

一、书签边栏 1、显示或隐藏书签边栏&#xff1a;Control-Command-1 2、选择下一个书签或文件夹&#xff1a;向上头键或向下头键 3、打开所选书签&#xff1a;空格键 4、打开所选文件夹&#xff1a;空格键或右箭头键 5、关闭所选文件夹&#xff1a;空格键或左箭头键 6、更…...

02.07 TCP服务器与客户端的搭建

一.思维导图 二.使用动态协议包实现服务器与客户端 1. 协议包的结构定义 首先&#xff0c;是协议包的结构定义。在两段代码中&#xff0c;pack_t结构体都被用来表示协议包&#xff1a; typedef struct Pack {int size; // 记录整个协议包的实际大小enum Type type; …...

【CubeMX+STM32】SD卡 文件系统读写 FatFs+SDIO+DMA

本篇&#xff0c;将使用CubeMXKeil&#xff0c;创建一个SD卡的 FatFSSDIODMA 文件系统读写工程。 目录 一、简述 二、CubeMX 配置 FatFSSDIO DMA 三、Keil 编辑代码 四、实验效果 实现效果&#xff0c;如下图&#xff1a; 一、简述 上两篇&#xff0c;已循序渐进讲解了SD、…...

51单片机之使用Keil uVision5创建工程以及使用stc-isp进行程序烧录步骤

一、Keil uVision5创建工程步骤 1.点击项目&#xff0c;新建 2.新建目录 3.选择目标机器&#xff0c;直接搜索at89c52选择&#xff0c;然后点击OK 4.是否添加起吊文件&#xff0c;一般选择否 5.再新建的项目工程中添加文件 6.选择C文件 7.在C文件中右键&#xff0c;添加…...

aws(学习笔记第二十七课) 使用aws API Gateway+lambda体验REST API

aws(学习笔记第二十七课) 使用aws API Gatewaylambda体验REST API 学习内容&#xff1a; 使用aws API Gatewaylambda 1. 使用aws API Gatewaylambda 作成概要 使用api gateway定义REST API&#xff0c;之后再接收到了http request之后&#xff0c;redirect到lambda进行执行。…...

React - jsx 语法

在 React 中&#xff0c;JSX&#xff08;JavaScript XML&#xff09;是一种语法扩展&#xff0c;它允许开发者在 JavaScript 代码中使用类似 HTML 的语法。JSX 提升了代码的可读性和可维护性&#xff0c;使得编写和构建用户界面更加直观。它被广泛应用于 React 组件的定义。 一…...

5 前端系统开发:Vue2、Vue3框架(上):Vue入门式开发和Ajax技术

文章目录 前言一、Vue框架&#xff08;简化DOM操作的一个前端框架&#xff09;&#xff1a;基础入门1 Vue基本概念2 快速入门&#xff1a;创建Vue实例&#xff0c;初始化渲染&#xff08;1&#xff09;创建一个入门Vue实例&#xff08;2&#xff09;插值表达式&#xff1a;{{表…...

快速在wsl上部署学习使用c++轻量化服务器-学习笔记

知乎上推荐的Tinywebserver这个服务器&#xff0c;快速部署搭建&#xff0c;学习c服务器开发 仓库地址 githubhttps://link.zhihu.com/?targethttps%3A//github.com/qinguoyi/TinyWebServerhttps://link.zhihu.com/?targethttps%3A//github.com/qinguoyi/TinyWebServer 在…...

2025年Android NDK超全版本下载地址

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…...