MySQL | 常用命令示例

news/2024/3/28 22:53:07/文章来源:https://blog.csdn.net/qq_41840843/article/details/131977052

MySQL | 常用命令示例

    • 一、启停MySQL数据库服务
    • 二、连接MySQL数据库
    • 三、创建和管理数据库
    • 四、创建和管理数据表
    • 五、数据备份和恢复
    • 六、查询与优化

MySQL是一款常用的关系型数据库管理系统,广泛应用于各个领域。在使用MySQL时,我们经常需要编写一些常用脚本来进行数据操作和管理。本文将介绍一些常用的MySQL脚本,帮助更好地使用MySQL。

一、启停MySQL数据库服务

  1. 启动MySQL数据库服务
systemctl start mysqld
  1. 停止MySQL数据库服务
systemctl stop mysqld
  1. MySQL数据库服务状态查看
systemctl status mysqld
  1. MySQL数据库服务开机自启
systemctl enable mysqld
  1. MySQL数据库服务禁止开机自启
systemctl disable mysqld

二、连接MySQL数据库

在使用MySQL之前,我们需要先连接到数据库。可以使用以下脚本进行连接:

  1. 使用用户名和密码连接MySQL数据库
mysql -u username -p password
或者
mysql -u username -p

其中,username为数据库用户名,password为数据库密码。

  1. 使用主机名、用户名和密码连接MySQL数据库
mysql -h 主机名 -P 端口号 -u 用户名 -p 密码
或者
mysql -h 主机名 -P 端口号 -u 用户名 -p 
  1. 使用数据库

连接到 MySQL 数据库后,可能有多个可以操作的数据库,可使用use 命令选择你要操作的数据库。

use 数据库名;
  1. 关闭MySQL数据库连接的SQL语句
exit;
或者
quit;

三、创建和管理数据库

  1. 创建数据库:使用CREATE DATABASE语句可以创建新的数据库(mydatabase),例如:
mysql> CREATE DATABASE mydatabase;
Query OK, 1 row affected (0.00 sec)mysql>
  1. 删除数据库(慎用):使用DROP DATABASE语句可以删除指定的数据库(mydatabase),例如:
mysql> DROP DATABASE mydatabase;
Query OK, 0 rows affected (0.01 sec)mysql> 
  1. 查看数据库:使用SHOW DATABASES语句可以列出当前所有的数据库,例如:
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydatabase         |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)mysql> 
  1. 查看当前使用的数据库:
mysql> select database();
+------------+
| database() |
+------------+
| mydatabase |
+------------+
1 row in set (0.00 sec)mysql> 
  1. 查看当前数据库包含的表信息
mysql> show tables; 
+----------------------+
| Tables_in_mydatabase |
+----------------------+
| users                |
+----------------------+
1 row in set (0.00 sec)mysql> 
  1. 获取表结构
mysql> desc users;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int         | NO   | PRI | NULL    | auto_increment |
| name  | varchar(50) | YES  |     | NULL    |                |
| age   | int         | YES  |     | NULL    |                |
| email | varchar(50) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)mysql> 
  1. 查看数据库版本
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.32    |
+-----------+
1 row in set (0.00 sec)mysql> 

四、创建和管理数据表

  1. 创建数据表

数据表是数据库中存储数据的主要方式。可以使用以下脚本创建一个名为users的数据表:

mysql> use mydatabase
Database changed
mysql> mysql> CREATE TABLE users (->   id INT AUTO_INCREMENT PRIMARY KEY,->   name VARCHAR(50),->   age INT,->   email VARCHAR(50)-> );
Query OK, 0 rows affected (0.01 sec)mysql> 
  1. 插入数据

插入数据是将数据添加到数据库中的关键操作。可以使用以下脚本向users表中插入一条数据:

mysql> INSERT INTO users (name, age, email) VALUES ('John', 25, 'john@example.com');
Query OK, 1 row affected (0.01 sec)mysql>
  1. 查询数据

查询数据是使用MySQL的常见操作之一。可以使用以下脚本查询users表中的所有数据:

mysql> SELECT * FROM users;
+----+------+------+------------------+
| id | name | age  | email            |
+----+------+------+------------------+
|  1 | John |   25 | john@example.com |
+----+------+------+------------------+
1 row in set (0.00 sec)mysql> 
  1. 更新数据

更新数据是在数据库中修改现有数据的操作。可以使用以下脚本将users表中id为1的记录的age字段更新为30:

mysql> UPDATE users SET age = 30 WHERE id = 1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> SELECT * FROM users;
+----+------+------+------------------+
| id | name | age  | email            |
+----+------+------+------------------+
|  1 | John |   30 | john@example.com |
+----+------+------+------------------+
1 row in set (0.00 sec)mysql> 
  1. 删除数据

删除数据是从数据库中删除不再需要的数据的操作。可以使用以下脚本删除users表中id为1的记录:

DELETE FROM users WHERE id = 1;
  1. 排序数据:使用ORDER BY子句可以对查询结果进行排序。以下是按照年龄从小到大对"users"表中的记录进行排序的示例:
SELECT * FROM users ORDER BY age ASC;
  1. 连接表:使用JOIN语句可以将多个表连接起来进行查询。以下是连接"users"表和"orders"表,并检索用户和订单信息的示例:
SELECT users.name, orders.order_number FROM users JOIN orders ON users.id = orders.user_id;
  1. 创建索引:使用CREATE INDEX语句可以为表中的列创建索引,以提高查询效率。以下是为"users"表中的name列创建索引的示例:
CREATE INDEX idx_name ON users (name);
  1. 删除表和数据库(慎用):使用DROP TABLE语句可以删除表,使用DROP DATABASE语句可以删除数据库。以下是删除"users"表和"mydatabase"数据库的示例:
DROP TABLE users;
DROP DATABASE mydatabase;
  1. 更改表名
rename table 原表名 to 新表名;mysql>  rename table users to t_users;
Query OK, 0 rows affected (0.01 sec)mysql> select *  from t_users;
+----+------+------+-------------------+
| id | name | age  | email             |
+----+------+------+-------------------+| 1 | John |   30 | john.com|2 | Tom  |   25 | tom.com|3 | Zyl  |   18 | zyl.com
+----+------+------+-------------------+
3 rows in set (0.00 sec)mysql> 
  1. mysql的表中增加字段
###表t_users 中添加了一个字段address ,类型为 varchar(255)。mysql> alter table t_users add column address varchar(255);
Query OK, 0 rows affected (0.01 sec)
  1. 授权
    MySQL8.0 以上将创建账户和赋予权限分开了,需要用两个语句创建账号,赋予远程权限;
###1、创建test用户
create user 'test'@'%' identified by 'Test##2023';###授权所有权限
grant all privileges on *.* to 'test'@'%' with grant option;###部分权限(select, insert),这个用户只能连接到数据库,并拥有select, insert权限。
mysql>  grant select, insert  on  mydatabase.* to 'test'@'%' with grant option;
Query OK, 0 rows affected (0.01 sec)
mysql> ###验证test用户权限
mysql> show grants for 'test'@'%';mysql> delete from t_users;
ERROR 1142 (42000): DELETE command denied to user 'test'@'localhost' for table 't_users'
mysql> ###---->该用户目前没有DELETE 的权限

五、数据备份和恢复

备份数据库:使用mysqldump命令可以备份整个数据库,例如:

mysqldump -u username -p mydatabase > backup.sql
[root-server ~]# mysqldump -u root -p mydatabase > backup.sql
Enter password: 
[root-server ~]# ll
total 1964180
-rw-r--r--. 1 root root        2036 Jul 29 17:35 backup.sql

恢复数据库:使用mysql命令可以从备份文件中恢复数据库,例如:

mysql -u username -p mydatabase < backup.sql
###删除表数据
mysql> delete from users;
Query OK, 3 rows affected (0.02 sec)###恢复
[root-server ~]# mysql -u root -p mydatabase < backup.sql
Enter password: 
[root-server ~]# ###验证
mysql> select * from users;
+----+------+------+-------------------+
| id | name | age  | email             |
+----+------+------+-------------------+| 1 | John |   30 | john.com|2 | Tom  |   25 | tom.com|3 | Zyl  |   18 | zyl.com
+----+------+------+-------------------+
3 rows in set (0.00 sec)mysql> 

导出数据到csv文件:

###创建目录、赋权
[root-server ~]# mkdir -p /path/to
[root-server ~]# chmod -R 777 /path/to/
[root-server ~]# cd /path/
[root-server path]# ll
total 0
drwxrwxrwx. 2 root root 6 Jul 29 17:20 to
[root-server path]# 

配置 secure_file_priv 变量,在/etc/my.cnf文件中加入

secure_file_priv=/path/to

在这里插入图片描述

重启数据库服务:

systemctl restart mysqld

导出数据是将数据库中的数据导出到文件的操作。可以使用以下脚本将users表中的数据导出到users.csv文件中:

mysql> SELECT * INTO OUTFILE '/path/to/users.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM users;
Query OK, 1 row affected (0.00 sec)mysql> 

在这里插入图片描述

从csv文件导入数据:

在这里插入图片描述

导入数据是将文件中的数据导入到数据库中的操作。可以使用以下脚本将users.csv文件中的数据导入到users表中:

mysql> LOAD DATA INFILE '/path/to/users.csv' INTO TABLE users FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
Query OK, 3 rows affected (0.01 sec)
Records: 3  Deleted: 0  Skipped: 0  Warnings: 0mysql> 

在这里插入图片描述

导出数据到txt文件:

使用SELECT INTO OUTFILE语句可以将查询结果导出为文件,例如:

mysql> SELECT * INTO OUTFILE '/path/to/result.txt' FROM users;
Query OK, 3 rows affected (0.01 sec)mysql> 

从txt文件导入导入数据:

使用LOAD DATA INFILE语句可以将数据从文件导入到表中,例如:

LOAD DATA INFILE '/path/to/result.txt' INTO TABLE users;

导出一个表:

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名[root-server ~]# mysqldump -u root -p mydatabase users > mydatabases_users.sql
Enter password: 
[root-server ~]# ll
total 1964184
-rw-r--r--. 1 root root        2036 Jul 29 18:07 mydatabases_users.sql

导出一个数据库结构:

###参数: -d 没有数据  --add-drop-table 在每个create语句之前增加一个drop table[root-server ~]#  mysqldump -u root -p -d --add-drop-table mydatabase  > mydatabase-tab.sql
Enter password: 
[root-server ~]# ll
total 1964196
-rw-r--r--. 1 root root        2036 Jul 29 17:35 backup.sql
-rw-r--r--. 1 root root        2036 Jul 29 18:07 mydatabases_users.sql
-rw-r--r--. 1 root root        1732 Jul 29 18:12 mydatabase-tab.sql

source 命令导入数据:

mysql> delete from users;
Query OK, 3 rows affected (0.00 sec)####备份文件位置
mysql> source /root/backup.sql
Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.01 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected, 1 warning (0.01 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0Query OK, 0 rows affected (0.04 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql> ###验证:
mysql> select * from users;
+----+------+------+-------------------+
| id | name | age  | email             |
+----+------+------+-------------------+| 1 | John |   30 | john.com|2 | Tom  |   25 | tom.com|3 | Zyl  |   18 | zyl.com
+----+------+------+-------------------+
3 rows in set (0.00 sec)mysql> 

注意: mysqldump导出mysql数据库中某个数据库的数据,用mysqldump只要把输出符号换为输入符号。那样导入后,虽说不报错,但是数据库中是没有任何数据的!需要直接通过mysql命令来实现。

恢复数据库:使用mysql命令可以从备份文件中恢复数据库,例如:

mysql -u username -p mydatabase < backup.sql
###删除表数据
mysql> delete from users;
Query OK, 3 rows affected (0.02 sec)###恢复
[root-server ~]# mysql -u root -p mydatabase < backup.sql
Enter password: 
[root-server ~]# ###验证
mysql> select * from users;
+----+------+------+-------------------+
| id | name | age  | email             |
+----+------+------+-------------------+| 1 | John |   30 | john.com|2 | Tom  |   25 | tom.com|3 | Zyl  |   18 | zyl.com
+----+------+------+-------------------+
3 rows in set (0.00 sec)mysql> 

六、查询与优化

查询数据:使用SELECT语句可以从表中查询数据,例如:

mysql> SELECT * FROM users WHERE id = 1;
+----+------+------+-------------------+
| id | name | age  | email             |
+----+------+------+-------------------+| 1 | John |   30 | john@example.com
+----+------+------+-------------------+
1 row in set (0.00 sec)mysql> 

优化查询:使用EXPLAIN语句可以分析查询语句的执行计划,例如:

mysql> EXPLAIN SELECT * FROM users WHERE id = 1;
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type  | possible_keys | key     | key_len | ref   | rows | filtered | Extra |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | users | NULL       | const | PRIMARY       | PRIMARY | 4       | const |    1 |   100.00 | NULL  |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)mysql> 

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

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

相关文章

【初阶C语言】整数比大小

各位大佬的光临已是上上签 在C语言刷题过程中&#xff0c;一定遇到过很多比大小的题目&#xff0c;那么本节就专门介绍比大小的方法&#xff0c;若大佬们还有更优解&#xff0c;欢迎补充呀&#xff01; 本节讲解的方法主要有三种&#xff1a;1.条件判断 2.三目操作符 3.函数调…

干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充

前言 不从恶人的计谋&#xff0c;不站罪人的道路&#xff0c;不坐亵慢人的座位&#xff0c;惟喜爱耶和华的律法&#xff0c;昼夜思想&#xff0c;这人便为有福&#xff01;他要像一棵树栽在溪水旁&#xff0c;按时候结果子&#xff0c;叶子也不枯干。凡他所做的尽都顺利。 如…

14 Linux实操篇-进程管理(重点)

14 Linux实操篇-进程管理&#xff08;重点&#xff09; 文章目录 14 Linux实操篇-进程管理&#xff08;重点&#xff09;14.1 进程的基本操作14.1.1 进程和程序14.1.2 父进程和子进程14.1.3 常见的Linux进程14.1.4 显示系统执行的进程-ps14.1.5 终止进程-kill/killall14.1.6 查…

36.悬浮板

悬浮板 html部分 <div class"container"><div class"square"></div> </div>css部分 *{margin: 0;padding: 0; } body{background-color: #111;height: 100vh;overflow: hidden;display: flex;justify-content: center;align-it…

【小白必看】Python爬虫实战之批量下载女神图片并保存到本地

文章目录 前言运行结果部分图片1. 引入所需库2. 发送请求获取网页内容3. 解析网页内容并提取图片地址和名称4. 下载并保存图片完整代码关键代码讲解 结束语 前言 爬取网络上的图片是一种常见的需求&#xff0c;它可以帮助我们批量下载大量图片并进行后续处理。本文将介绍如何使…

机器学习 | Python实现NARX模型预测控制

机器学习 | Python实现NARX模型预测控制 目录 机器学习 | Python实现NARX模型预测控制效果一览基本介绍研究内容程序设计参考资料效果一览 基本介绍 机器学习 | Python实现NARX模型预测控制 研究内容 贝叶斯黑盒模型预测控制,基于具有外源输入的非线性自回归模型的预期自由能最…

绝美!轮到AI写真爆火了!18种AI视频制作教程;Llama 2微调的极速指南;Nijijourney官方AI绘画课 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 摄影写真面临AI技术洗牌&#xff0c;一键生成杂志大片的时代来了 软件&#xff1a;midjourney & Stable Diffusion 模型&#xff…

TypeScript基础篇 - TS模块

目录 模块的概念 Export 语法&#xff08;default&#xff09; Export 语法&#xff08;non-default&#xff09; import 别名 Type Export语法【TS】 模块相关配置项&#xff1a;module【tsconfig.json】 模块相关配置项&#xff1a;moduleResolution 小节总结 模块的…

【LLM】大语言模型学习之LLAMA 2:Open Foundation and Fine-Tuned Chat Model

大语言模型学习之LLAMA 2:Open Foundation and Fine-Tuned Chat Model 快速了解预训练预训练模型评估微调有监督微调(SFT)人类反馈的强化学习(RLHF)RLHF结果局限性安全性预训练的安全性安全微调上手就干使用登记代码下载获取模型转换模型搭建Text-Generation-WebUI分发模型…

pytorch的发展历史,与其他框架的联系

我一直是这样以为的&#xff1a;pytorch的底层实现是c(这一点没有问题&#xff0c;见下边的pytorch结构图),然后这个部分顺理成章的被命名为torch,并提供c接口,我们在python中常用的是带有python接口的&#xff0c;所以被称为pytorch。昨天无意中看到Torch是由lua语言写的&…

M 芯片的 macos 系统安装虚拟机 centos7 网络配置

centos 安装之前把网络配置配好或者是把网线插好 第一步找到这个 第二步打开网络适配器 选择图中所指位置 设置好之后 开机启动 centos 第三步 开机以后 编写网卡文件保存 重启网卡就可以了&#xff0c;如果重启网卡不管用&#xff0c;则重启虚拟机即可 “ ifcfg-ens160 ” 这…

【java入门学习】

文章目录 java学习章节目录学习前的准备main函数怎么写&#xff1f;Java程序运行的步骤如何让代码运行起来&#xff1f;java程序由三部分构成&#xff1a;注释注释规范 标识符练习 总结 java学习章节目录 SE语法 初阶段主要来熟悉java的语法&#xff1a; 1.初始java 2.数据类型…

黑苹果如何在macOS Sonoma中驱动博通网卡

准备资源&#xff08;百度&#xff1a;黑果魏叔 下载&#xff09; 资源包中包含&#xff1a;AirportBrcmFixup.kext/IOSkywalkFamily.kext/IO80211FamilyLegacy.kext/OpenCore-Patcher 使用方法&#xff1a; 1.将 csr-active-config 设置为 03080000 全选代码 复制 2.在 …

kafka集群搭建(Linux环境)

zookeeper搭建&#xff0c;可以搭建集群&#xff0c;也可以单机&#xff08;本地学习&#xff0c;没必要搭建zookeeper集群&#xff0c;单机完全够用了&#xff0c;主要学习的是kafka&#xff09; 1. 首先官网下载zookeeper&#xff1a;Apache ZooKeeper 2. 下载好之后上传到…

layui框架学习(33:流加载模块)

Layui中的流加载模块flow主要支持信息流加载和图片懒加载两部分内容&#xff0c;前者是指动态加载后续内容&#xff0c;示例的话可以参考csdn个人博客主页&#xff0c;鼠标移动到页面底部时自动加载更多内容&#xff0c;而后者是指页面显示图片时才会延迟加载图片信息。   fl…

记录vue的一些踩坑日记

记录vue的一些踩坑日记 安装Jq npm install jquery --save vue列表跳转到详情页&#xff0c;再返回列表的时候不刷新页面并且保持原位置不变&#xff1b; 解决&#xff1a;使用keepAlive 在需要被缓存的页面的路由中添加&#xff1a;keepAlive: true, {path: /viewExamine,nam…

怎么在线修改图片?分享一个图片修改工具

无论是在个人或商业领域&#xff0c;我们都需要使用高质量的图片来传达信息或提高品牌形象。大尺寸的图片也会占据大量的存储空间和带宽&#xff0c;影响网站的加载速度和用户体验。因此&#xff0c;我们需要一种高效的工具来解决这个问题。今天向大家介绍一款非常实用的图片处…

Android 开发代码规范

一. AndroidStudio开发工具规范 使用最新的稳定版本.统一文件的编码格式为utf-8. 清除每个类里面的无效的import导包.代码样式统一,比如&#xff0c;tab缩进4个空格&#xff0c;或者 tab size等如果没有特殊情况使用默认的配置即可。每行字数每行字符数不得超过 160 字符&…

C++--菱形继承

1.什么是菱形继承 单继承&#xff1a;一个子类只有一个直接父类时称这个继承关系为单继承 多继承&#xff1a;一个子类有两个或以上直接父类时称这个继承关系为多继承 菱形继承的问题&#xff1a;菱形继承有数据冗余和二义性的问题&#xff0c;数据冗余是由于创建多个相同类型的…

SpringBoot 如何进行 统一异常处理

在Spring Boot中&#xff0c;可以通过自定义异常处理器来实现统一异常处理。异常处理器能够捕获应用程序中抛出的各种异常&#xff0c;并提供相应的错误处理和响应。 Spring Boot提供了ControllerAdvice注解&#xff0c;它可以将一个类标记为全局异常处理器。全局异常处理器能…