当前位置: 首页 > 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;因此事务问题一般借助数据库事…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...