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: 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.mzph.cn/news/13412.shtml

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

相关文章

【数据结构】【王道408】——PPT截图与思维导图

自用视频PPT截图 视频网址王道B站链接 23考研 408新增考点&#xff1a; 并查集&#xff0c;红黑树 2023年408真题数据结构篇 408考纲解读 考纲变化 目录 第一章 绪论第二章 线性表顺序表单链表双链表循环链表静态链表差别 第三章 栈 队列 数组栈队列栈的应用数组 第四章 串第五…

软考A计划-系统集成项目管理工程师-项目质量管理-中

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

小程序UV:衡量用户规模与活跃度的重要指标

什么是UV UV是Unique Visitor&#xff08;独立访客&#xff09;的缩写&#xff0c;指的是在特定时间段内访问某个网站、应用或平台的独立用户数量。UV是根据设备、IP地址、Cookie等来识别不同的用户&#xff0c;对于相同的用户多次访问&#xff0c;只计算为一个UV。UV是衡量网…

流数据湖平台Apache Paimon(一)概述

文章目录 第1章 概述1.1 简介1.2 核心特性1.3 基本概念1.3.1 Snapshot1.3.2 Partition1.3.3 Bucket1.3.4 Consistency Guarantees一致性保证 1.4 文件布局1.4.1 Snapshot Files1.4.2 Manifest Files1.4.3 Data Files1.4.4 LSM Trees 第1章 概述 1.1 简介 Flink 社区希望能够将…

RocketMQ重复消费的解决方案::分布式锁直击面试!

文章目录 场景分析方法的幂等分布式锁Redis实现分布式锁抢锁的设计思路 分布式锁案例 直击面试rocketmq什么时候重复消费消息丢失的问题消息在哪里丢失发送端确保发送成功并且配合失败的业务处理消费端确保消息不丢失rocketmq 主从同步刷盘 场景分析 分布式系统架构中,队列是分…

css实现有缺口的border

css实现有缺口的border 1.问题回溯2.css实现有缺口的border 1.问题回溯 通常会有那种两个div都有border重叠在一起就会有种加粗的效果。 div1,div2,div3都有个1px的border&#xff0c;箭头标记的地方是没有处理解决的&#xff0c;很明显看着是有加粗效果的。其实这种感觉把di…

【Java从入门到大牛】集合进阶上篇

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Java从入门到大牛 &#x1f320; 首发时间&#xff1a;2023年7月29日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43…

IntelliJ IDEA流行的构建工具——Gradle

IntelliJ IDEA&#xff0c;是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 如…

基于java SpringBoot和HTML的博客系统

随着网络技术渗透到社会生活的各个方面&#xff0c;传统的交流方式也面临着变化。互联网是一个非常重要的方向。基于Web技术的网络考试系统可以在全球范围内使用互联网&#xff0c;可以在本地或异地进行通信&#xff0c;大大提高了通信和交换的灵活性。在当今高速发展的互联网时…

【达哥讲网络】第3集:数据交换的垫基石——二层交换原理

专业的网络工程师在进行网络设计时&#xff0c;会事先规划好不同业务数据的转发路径&#xff0c;一方面是为了满足用户应用需求&#xff0c;另一方面是为了提高数据转发效率、充分利用各设备/各链路的硬件或带宽资源。在进行网络故障排除时&#xff0c;理顺各路数据的转发路径也…

AI For Engineers 线上参会指南

AI For Engineers 线上参会指南 欢迎您报名参加 AI For Engineers&#xff1a;工程师 AI 全球会议&#xff0c;为了让各位参会者参会体验更佳&#xff0c;更好地利用本次会议收获更多。Altair 特别为各位准备了线上参会指南&#xff0c;一起来看看吧~ 会议时间&#xff1a;20…

掌握Python的X篇_12_如何使用VS Code调试Python程序

本篇将会介绍如何使用VS Code调试Python程序。 文章目录 1. 什么是调试2. 断点3. 如何启动调试4. 监视窗口5. 单步 1. 什么是调试 我们可以利用VS Code对Python代码进行调试。所谓调试&#xff0c;大家可以理解成有能力将程序进行 “慢动作播放”让我们有机会看到程序一步一步…

flutter minio

背景 前端 经常需要上传文件 图片 视频等等 到后端服务器&#xff0c; 如果到自己服务器 一般会有安全隐患。也不方便管理这些文件。如果要想使用一些骚操作 比如 按照前端请求生成不同分辨率的图片&#xff0c;那就有点不太方便了。 这里介绍以下 minio&#xff0c;&#xff0…

flutter开发实战-父子Widget组件调用方法

flutter开发实战-父子Widget组件调用方法 在最近开发中遇到了需要父组件调用子组件方法&#xff0c;子组件调用父组件的方法。这里记录一下方案。 一、使用GlobalKey 父组件使用globalKey.currentState调用子组件具体方法&#xff0c;子组件通过方法回调callback方法调用父组…

PHP-Mysql图书管理系统--【白嫖项目】

强撸项目系列总目录在000集 PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 首页phpStudy 设置导数据库后台的管理界面数据库表结构项目目录如图&#xff1a;代码部分&#xff1a;主页的head 配套资源作业&#xff1a; 本系列校训 用免费公开视频&am…

LeetCode32.Longest-Valid-Parentheses<最长有效括号>

题目&#xff1a; 思路&#xff1a; 遍历括号.遇到右括号然后前一个是左括号 那就res2,然后重定位 i 的值 并且长度减少2; 但是问题在于无法判断最长的括号.只能得到string内的全部括号长度. 错误代码: 写过一题类似的,那题是找括号数.记得是使用的栈,但是死活写不出来. 看完…

Dubbo 指定调用固定ip+port dubbo调用指定服务 dubbo调用不随机 dubbo自定义调用服务 dubbo点对点通信 dubbo指定ip

1. 在写分布式im时nami-im: 分布式im, 集群 zookeeper netty kafka nacos rpc主要为gate&#xff08;长连接服务&#xff09; logic &#xff08;业务&#xff09; lsb &#xff08;负载均衡&#xff09;store&#xff08;存储&#xff09; - Gitee.com&#xff0c;需要指定某一…

当机器人变硬核:探索深度学习中的时间序列预测

收藏自&#xff1a;Wed, 15 Sep 2021 10:32:56 UTC 摘要&#xff1a;时间序列预测是机器学习和深度学习领域的一个重要应用&#xff0c;它可以用于预测未来趋势、分析数据模式和做出决策。本文将介绍一些基本概念和常用方法&#xff0c;并结合具体的案例&#xff0c;展示如何使…

React Native 0.72 版本,带来诸多更新

经过漫长的等待,React Native 终于迎来了0.72 版本,此处版本带来了Metro重要的功能更新、性能优化、开发人员体验的改进以及其他一些重要的变化。我们可以从下面的链接中获取此次版本更新的内容:0.72更新内容 一、Metro 新功能 众所周知,Metro 是 React Native 默认的 Jav…

idea插件开发-自定义语言4-Syntax Highlighter

SyntaxHighlighter用于指定应如何突出显示特定范围的文本&#xff0c;ColorSettingPage可以定义颜色。 一、Syntax Highter 1、文本属性键&#xfeff; TextAttributesKey用于指定应如何突出显示特定范围的文本。不同类型的数据比如关键字、数字、字符串等如果要突出显示都需…