MySQL | 常用命令示例

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: 0

mysql> 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: 0

mysql> 

在这里插入图片描述

导出数据到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: 0

Query 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> 

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

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

相关文章

Qt之切换语言的方法(传统数组法与Qt语言家)

http://t.csdn.cn/BVigB 传统数组法&#xff1a; 定义一个字符串二维数组&#xff0c; QString weekStr[2][7] {"星期一","星期二","星期三","星期四","星期五","星期六","星期日",\ "Monday&…

自己创建的类,其他类中使用错误

说明&#xff1a;自己创建的类&#xff0c;在其他类中创建&#xff0c;报下面的错误&#xff08;Cannot resolve sysmbol ‘Redishandler’&#xff09;&#xff1b; 解决&#xff1a;看下是不是漏掉了包名 加上包名&#xff0c;问题解决&#xff1b;

云计算——云计算与虚拟化的关系

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.虚拟化 1.什么是虚拟化 2.虚拟化技术作用 二.云计算与虚拟化的关系 三.虚…

[STL]stack和queue使用介绍

[STL]stack和queue使用介绍 文章目录 [STL]stack和queue使用介绍stack使用介绍stack介绍构造函数empty函数push函数top函数size函数pop函数 queue使用介绍queue介绍构造函数empty函数push函数front函数back函数size函数pop函数 deque介绍 stack使用介绍 stack介绍 stack是一种…

Tensorflow报错protobuf requires Python ‘>=3.7‘ but the running Python is 3.6.8

报错信息 仔细观察下方命令后&#xff0c;可得运行:python -m pip install --upgrade pip即可 完成后再次执行性安装命令 成功&#xff01;&#xff01;&#xff01;

爆肝!《Java 权威面试指南(阿里版)》,冲击“金九银十”有望了

这次金九银十你准备好了吗&#xff1f; 莫慌莫慌&#xff0c;“面试造火箭&#xff0c;工作拧螺丝” 说得不无道理&#xff0c;偶然从朋友那得到的这份 Alibaba 内部疯传《Java 权威面试指南&#xff08;阿里版&#xff09;》堪称精品&#xff0c;或可能助你一臂之力&#xff…

Doris注意事项,Doris部署在阿里云,写不进去数据

1.Doris官网 Doris官网https://doris.apache.org/ 2.根本原因 本地idea访问FE&#xff0c;FE会返回BE的地址&#xff0c;但是在服务器上通过ip addr查看&#xff0c;发现只有局域网IP&#xff0c;所以FE返回了局域网的IP&#xff0c;导致idea连接不上BE 3.解决办法 重写Ba…

Jmeter并发测试

基本步骤 1、新建线程组 测试计划右键——>添加——>线程&#xff08;用户&#xff09;——>线程组 2、 添加HTTP请求 线程组右键——>添加——>取样器——>HTTP请求 3、 添加HTTP信息头管理器 线程组右键——>添加——>配置元件——>HTTP信息头…

ChatGPT炒股:自动批量提取股票公告中的表格并合并数据

在很多个股票公告中&#xff0c;都有同样格式的“日常性关联交易”的表格&#xff0c;如何合并到一张Excel表格中呢&#xff1f; 首先&#xff0c;在ChatGPT中输入提示词&#xff1a; 写一段Python代码&#xff1a; F盘文件夹“新三板 2023年日常性关联交易20230704”中很多…

2023 7-30

题目1 lee2331.计算布尔二叉树的值 对于一棵完整的二叉树(每一个根节点孩子的个数不是0就是2) 叶子节点是1或者是0,其中1代表true,0代表false非叶子节点的值是2或者3,其中2代表逻辑或or,3代表逻辑与and计算方式 如果节点是个叶子节点,那么节点的 值 为它本身,即 True 或者…

一、创建自己的docker python容器环境;支持新增python包并更新容器;离线打包、加载image

1、创建自己的docker python容器环境 参考&#xff1a;https://blog.csdn.net/weixin_42357472/article/details/118991485 首先写Dockfile&#xff0c;注意不要有txt等后缀 Dockfile # 使用 Python 3.9 镜像作为基础 FROM python:3.9# 设置工作目录 WORKDIR /app# 复制当前…

创造自己的宠物医院预约服务小程序,步骤详解

在现代社会&#xff0c;越来越多的人开始养宠物&#xff0c;而宠物的健康管理也成为了一个重要的话题。为了方便宠物主人随时随地进行宠物医院的管理和服务&#xff0c;开发一个宠物医院管理小程序是很有必要的。今天我们将分享一些制作宠物医院管理小程序的技巧&#xff0c;帮…

基于Open3D的点云处理12-体素化

体素化Voxelization 体素&#xff08;voxel&#xff09;是像素&#xff08;pixel&#xff09;、体积&#xff08;volume&#xff09;和元素&#xff08;element&#xff09;的组合词&#xff0c;相当于3D空间中的像素; 体素化是通过用空间均匀大小的体素网格(voxel grid)来模…

【C++】开源:grpc远程过程调用(RPC)配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍grpc远程过程调用&#xff08;RPC&#xff09;配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜…

【编程规范】一文讲解开发中的命名规范

命名规范 好的代码本身就是注释, 所以我们需要统一命名风格。 ​ 在本文中&#xff0c;将从大到小&#xff0c;从外到内&#xff0c;总结Java编程中的命名规范。文中将会涉及到日常工作中常见的命名示例&#xff0c;如包命名&#xff0c;类命名&#xff0c;接口命名&#xff0c…

页面生成图片或PDF node-egg

没有特别的幸运&#xff0c;那么就特别的努力&#xff01;&#xff01;&#xff01; 中间件&#xff1a;页面生成图片 node-egg 涉及到技术node egg Puppeteer 解决文书智能生成多样化先看效果环境准备初始化项目 目录结构核心代码 完整代码https://gitee.com/hammer1010_ad…

数组中出现次数超过一半的数字——剑指 Offer 39

文章目录 题目描述法一 哈希表法二 摩尔投票 题目描述 法一 哈希表 使用哈希映射&#xff08;HashMap&#xff09;来存储每个元素以及出现的次数。对于哈希映射中的每个键值对&#xff0c;键表示一个元素&#xff0c;值表示该元素出现的次数。 class Solution { public:int maj…

【Python机器学习】实验03 logstic回归

文章目录 简单分类模型 - 逻辑回归1.1 准备数据1.2 定义假设函数Sigmoid 函数 1.3 定义代价函数1.4 定义梯度下降算法gradient descent(梯度下降) 1.5 绘制决策边界1.6 计算准确率1.7 试试用Sklearn来解决2.1 准备数据(试试第二个例子)2.2 假设函数与前h相同2.3 代价函数与前相…

【语音识别】- 声学,词汇和语言模型

一、说明 语音识别是指计算机通过处理人类语言的音频信号&#xff0c;将其转换为可理解的文本形式的技术。也就是说&#xff0c;它可以将人类的口语语音转换为文本&#xff0c;以便计算机能够进一步处理和理解。它是自然语言处理技术的一部分&#xff0c;被广泛应用于语音识别助…

Linux 之 systemctl

systemctl 可以控制软件&#xff08;一般指服务&#xff09;的启动、关闭、开机自启动 能被systemctl 管理的软件&#xff0c;一般也称 服务 系统内置服务均可被 systemctl 控制第三方软件&#xff0c;如果 自动注册了 可被systemctl 控制第三方软件&#xff0c;如果没有自动…