【MySQL数据库原理】MySQL最有用的150条命令总结与案例使用

1、启动命令窗口MySQL 8.0 Command Line

1.1、 Latin1 字符集

Latin1 字符集,也称为 ISO 8859-1 字符集,是一种单字节字符集,包含了大部分西欧语言的字符,包括英文、法语、德语、西班牙语等。它最初由国际标准化组织(ISO)于1987年发布,后来被欧洲计算机制造商协会(ECMA)和 Unicode 组织采纳,并成为许多计算机系统和编程语言的默认字符集之一。

Latin1 字符集包含了 256 个字符,其中包括 ASCII 字符集中的 128 个字符和 128 个扩展字符。它的编码范围是 0x00 到 0xFF,每个字符用一个字节表示。它是一种固定长度的字符集,这意味着每个字符都占用相同的存储空间,便于存储和处理。

虽然 Latin1 字符集是一种常见的字符集,但它只支持有限的字符范围,不能处理包括中文、日文、韩文在内的许多字符。因此,在处理非西欧语言的数据时,需要使用其他字符集,如 UTF-8、GBK 等。

1.2、MySQL 8.0 Command Line Client与MySQL 8.0 Command Line Client - Unicode区别

MySQL 8.0 Command Line Client 和 MySQL 8.0 Command Line Client - Unicode 都是 MySQL 数据库的命令行客户端,用于与 MySQL 服务器进行交互和管理数据库。它们的主要区别在于支持的字符集不同。

MySQL 8.0 Command Line Client 默认使用 Latin1 字符集,这意味着它只能处理 Latin1 字符集中的字符,而不能处理其他字符集中的字符。如果您需要处理其他字符集(如 UTF-8),则需要使用 MySQL 8.0 Command Line Client - Unicode。

MySQL 8.0 Command Line Client - Unicode 支持更广泛的字符集,包括 UTF-8、GB2312、GBK、BIG5 等。因此,如果您需要处理多种字符集的数据,建议使用 MySQL 8.0 Command Line Client - Unicode。

此外,使用不同字符集的命令行客户端可能会导致乱码等问题,因此在使用时需要特别小心。建议根据需要选择正确的命令行客户端,并在使用之前了解其支持的字符集以及如何正确配置字符集。

1.3、启动命令端口

在这里插入图片描述
输入之前创建好的账户和密码:
在这里插入图片描述
之后会出现如下的提示:
在这里插入图片描述
解释上述的内容:这是连接到 MySQL 数据库服务器的命令行客户端的输出结果,其中包含以下信息:

“Enter password: ******”:表示需要输入密码才能连接到 MySQL 服务器。在命令行中输入密码时,由于安全原因,输入的密码不会显示在屏幕上。
“Welcome to the MySQL monitor.”:表示成功连接到 MySQL 服务器,并进入 MySQL 命令行监视器。
“Commands end with ; or \g.”:表示命令以分号(;)或反斜杠后跟字符“g”(\g)结束。这是 MySQL 命令行的基本语法。
“Your MySQL connection id is 26”:表示连接到 MySQL 服务器的连接 ID 是 26,每个连接都有一个唯一的连接 ID。
“Server version: 8.0.32 MySQL Community Server - GPL”:表示 MySQL 服务器的版本号是 8.0.32,并且是使用 GPL 许可证的 MySQL Community Server 版本。
“Copyright © 2000, 2023, Oracle and/or its affiliates.”:表示版权归属于 Oracle 公司及其关联公司。
“Type ‘help;’ or ‘\h’ for help.”:表示可以输入“help;”或“\h”获取 MySQL 命令的帮助信息。
“Type ‘\c’ to clear the current input statement.”:表示可以输入“\c”清除当前输入语句。

2、150条命令总结

mysql -u username -p:以指定的用户名("username")登录MySQL。在此命令中,"-p"选项会提示用户输入密码。

exit:退出MySQL命令行客户端。

show databases;:显示所有可用的数据库。

use database_name;:选择要使用的数据库。在此命令中,"database_name"是要使用的数据库的名称。

show tables;:显示当前数据库中所有的表。

describe table_name;:显示指定表("table_name")的列信息。

select * from table_name;:显示指定表("table_name")的所有数据。

select column_name from table_name;:显示指定表("table_name")中指定列("column_name")的数据。

select column_name from table_name where condition;:显示指定表("table_name")中符合指定条件("condition")的指定列("column_name")的数据。

insert into table_name (column1, column2, column3) values (value1, value2, value3);:向指定表("table_name")中插入数据,包括指定的列("column1""column2""column3")和相应的值("value1""value2""value3")。

update table_name set column_name = new_value where condition;:更新指定表("table_name")中符合指定条件("condition")的指定列("column_name")的值为新值("new_value")。

delete from table_name where condition;:删除指定表("table_name")中符合指定条件("condition")的数据。

create database database_name;:创建一个新的数据库("database_name")。

create table table_name (column1 datatype1, column2 datatype2, column3 datatype3);:创建一个新的表("table_name")并指定表的列名和数据类型。

alter table table_name add column_name datatype;:向指定表("table_name")中添加一个新的列("column_name")和相应的数据类型("datatype")。

alter table table_name modify column_name datatype;:修改指定表("table_name")中指定列("column_name")的数据类型为新类型("datatype")。

alter table table_name drop column column_name;:删除指定表("table_name")中指定列("column_name")。

drop table table_name;:删除指定表("table_name")。

drop database database_name;:删除指定数据库("database_name")。

show columns from table_name;:显示指定表("table_name")中所有列的信息。

show index from table_name;:显示指定表("table_name")中所有索引的信息。

show create table table_name;:显示指定表("table_name")的创建语句。

show grants;:显示当前用户的权限。

grant permission on database_name.* to 'username'@'localhost' identified by 'password';:授予指定用户("username")访问指定数据库("database_name")的权限,并设置密码("password")。

revoke permission on database_name.* from 'username'@'localhost';:撤销指定用户("username")对指定数据库("database_name")的访问权限。

create user 'username'@'localhost' identified by 'password';:创建一个新的MySQL用户,并设置密码("password")。

drop user 'username'@'localhost';:删除指定的MySQL用户。

show processlist;:显示当前正在运行的MySQL进程列表。

kill process_id;:停止指定的MySQL进程。

set password = password('new_password');:设置当前用户的MySQL密码为新密码("new_password")。

use database_name;:选择要使用的数据库。在此命令中,"database_name"是要使用的数据库的名称。

source file_name.sql;:从指定的SQL文件("file_name.sql")中执行命令。

select count(*) from table_name;:显示指定表("table_name")中的数据行数。

select distinct column_name from table_name;:显示指定表("table_name")中指定列("column_name")的不同值。

select max(column_name) from table_name;:显示指定表("table_name")中指定列("column_name")的最大值。

select min(column_name) from table_name;:显示指定表("table_name")中指定列("column_name")的最小值。

select sum(column_name) from table_name;:显示指定表("table_name")中指定列("column_name")的总和。

select avg(column_name) from table_name;:显示指定表("table_name")中指定列("column_name")的平均值。

select * from table_name order by column_name asc;:按指定列("column_name")升序显示指定表("table_name")中的所有数据。

select * from table_name order by column_name desc;:按指定列("column_name")降序显示指定表("table_name")中的所有数据。

select * from table_name limit num_rows;:显示指定表("table_name")中指定行数("num_rows")的数据。

select * from table_name limit offset, num_rows;:从指定表("table_name")中指定偏移量("offset")开始,显示指定行数("num_rows")的数据。

select * from table1 inner join table2 on table1.column_name = table2.column_name;:显示两个表("table1","table2")中指定列("column_name")相等的数据。

select * from table1 left join table2 on table1.column_name = table2.column_name;:显示左侧表("table1")中所有数据,以及右侧表("table2")中与左侧表中指定列("column_name")相等的数据。

select * from table1 right join table2 on table1.column_name = table2.column_name;:显示右侧表("table2")中所有数据,以及左侧表("table1")中与右侧表中指定列("column_name")相等的数据。

select * from table1 full outer join table2 on table1.column_name = table2.column_name;:显示两个表("table1""table2")中所有数据,以及指定列("column_name")相等的数据。

select * from table_name where column_name = 'value';:仅显示指定表("table_name")中指定列("column_name")值为指定值("value")的数据。

select * from table_name where column_name like 'value%';:仅显示指定表("table_name")中指定列("column_name")以指定值("value")开头的数据。

select * from table_name where column_name in ('value1', 'value2', 'value3');:仅显示指定表("table_name")中指定列("column_name")值为指定值("value1""value2""value3")的数据。

select * from table_name where column_name between value1 and value2;:仅显示指定表("table_name")中指定列("column_name")值在指定范围(从"value1""value2")内的数据。

select count(*) from table_name;:计算指定表("table_name")中的数据行数。

select count(column_name) from table_name;:计算指定表("table_name")中指定列("column_name")不为 NULL 的数据行数。

select sum(column_name) from table_name;:计算指定表("table_name")中指定列("column_name")的值总和。

select avg(column_name) from table_name;:计算指定表("table_name")中指定列("column_name")的平均值。

select max(column_name) from table_name;:返回指定表("table_name")中指定列("column_name")的最大值。

select min(column_name) from table_name;:返回指定表("table_name")中指定列("column_name")的最小值。

select distinct column_name from table_name;:返回指定表("table_name")中指定列("column_name")的唯一值。

select column_name from table_name order by column_name asc;:按指定列("column_name")的升序方式显示指定表("table_name")中的数据。

select column_name from table_name order by column_name desc;:按指定列("column_name")的降序方式显示指定表("table_name")中的数据。

select column_name1, sum(column_name2) from table_name group by column_name1;:按指定列("column_name1")分组并计算指定列("column_name2")的值总和。

select column_name1, count(column_name2) from table_name group by column_name1;:按指定列("column_name1")分组并计算指定列("column_name2")的不为 NULL 值的行数。

select column_name1, avg(column_name2) from table_name group by column_name1;:按指定列("column_name1")分组并计算指定列("column_name2")的平均值。

select column_name1, max(column_name2) from table_name group by column_name1;:按指定列("column_name1")分组并返回指定列("column_name2")的最大值。

select column_name1, min(column_name2) from table_name group by column_name1;:按指定列("column_name1")分组并返回指定列("column_name2")的最小值。

select column_name from table_name limit 10;:仅显示指定表("table_name")中的前 10 行数据。

select column_name from table_name limit 10, 20;:从指定表("table_name")中的第 11 行开始,仅显示 20 行数据。

select * from table_name where column_name is null;:仅显示指定表("table_name")中指定列("column_name")的值为 NULL 的数据。

select * from table_name where column_name is not null;:仅显示指定表("table_name")中指定列("column_name")的值不为 NULL 的数据。

select * from table_name where column_name1 = 'value1' and column_name2 = 'value2';:返回指定表("table_name")中指定列("column_name1""column_name2")均等于指定值("value1""value2")的数据。

select * from table_name where column_name like 'value%';:返回指定表("table_name")中指定列("column_name")以指定值("value")开头的数据。

select * from table_name where column_name like '%value';:返回指定表("table_name")中指定列("column_name")以指定值("value")结尾的数据。

select * from table_name where column_name like '%value%';:返回指定表("table_name")中指定列("column_name")包含指定值("value")的数据。

select * from table_name where column_name between value1 and value2;:返回指定表("table_name")中指定列("column_name")在指定值("value1""value2")之间的数据。

select * from table_name where column_name in ('value1', 'value2', 'value3');:返回指定表("table_name")中指定列("column_name")包含指定值("value1""value2""value3")的数据。

select * from table_name where column_name not in ('value1', 'value2', 'value3');:返回指定表("table_name")中指定列("column_name")不包含指定值("value1""value2""value3")的数据。

select * from table_name where column_name1 = 'value1' or column_name2 = 'value2';:返回指定表("table_name")中指定列("column_name1""column_name2")等于指定值("value1""value2")的数据。

select * from table_name where column_name1 = 'value1' order by column_name2 asc;:返回指定表("table_name")中指定列("column_name1")等于指定值("value1")的数据,并按指定列("column_name2")的升序方式排序。

select * from table_name where column_name1 = 'value1' and column_name2 = 'value2' order by column_name3 desc;:返回指定表("table_name")中指定列("column_name1""column_name2")等于指定值("value1"

select * from table_name group by column_name;:返回指定表("table_name")中按指定列("column_name")分组的数据。

select column_name, count(*) from table_name group by column_name;:返回指定表("table_name")中按指定列("column_name")分组,并计算每个组的数量。

select * from table_name order by column_name1 asc, column_name2 desc;:返回指定表("table_name")中按指定列("column_name1")的升序方式和指定列("column_name2")的降序方式排序的数据。

select * from table_name limit 10;:返回指定表("table_name")中前 10 条数据。

select * from table_name limit 10, 20;:返回指定表("table_name")中从第 11 条数据开始的 20 条数据。

insert into table_name (column1, column2) values ('value1', 'value2');:向指定表("table_name")中指定列("column1""column2")插入指定值("value1""value2")的数据。

insert into table_name (column1, column2) select column3, column4 from table_name2 where column5 = 'value5';:从指定表("table_name2")中选择指定列("column3""column4")的数据,并插入到指定表("table_name")中指定列("column1""column2")中,其中选择的数据必须满足指定列("column5")等于指定值("value5")的条件。

update table_name set column_name = 'new_value' where column_name = 'old_value';:将指定表("table_name")中指定列("column_name")等于指定旧值("old_value")的数据更新为指定新值("new_value")。

update table_name set column_name = 'new_value' where column_name like '%value%';:将指定表("table_name")中指定列("column_name")包含指定值("value")的数据更新为指定新值("new_value")。

delete from table_name where column_name = 'value';:从指定表("table_name")中删除指定列("column_name")等于指定值("value")的数据。

delete from table_name;:删除指定表("table_name")中所有数据。

alter table table_name add column_name datatype;:向指定表("table_name")中添加指定列("column_name")和指定数据类型("datatype")。

alter table table_name modify column_name datatype;:修改指定表("table_name")中指定列("column_name")的数据类型为指定类型("datatype")。

alter table table_name drop column column_name;:从指定表("table_name")中删除指定列("column_name")。

alter table table_name rename to new_table_name;:将指定表("table_name")重命名为指定名称("new_table_name")。

create table table_name (column1 datatype1, column2 datatype2, column3 datatype3);:创建指定名称("table_name")和指定列("column1""column2""column3")及其数据类型("datatype1""datatype2""datatype3")的表。

create table table_name like other_table_name;:创建与指定表("other_table_name")结构相同的新表("table_name")。

create table table_name as select column1, column2 from other_table_name;:创建一个名为指定名称("table_name")的新表,并从指定表("other_table_name")中选择指定列("column1""column2")的数据。

drop table table_name;:删除指定表("table_name")。

truncate table table_name;:删除指定表("table_name")中所有数据,但保留表结构。

show columns from table_name;:返回指定表("table_name")中所有列的信息。

show indexes from table_name;:返回指定表("table_name")中所有索引的信息。

show create table table_name;:返回指定表("table_name")的创建语句。

use database_name;:使用指定的数据库("database_name")。

create database database_name;:创建指定名称("database_name")的数据库。

drop database database_name;:删除指定名称("database_name")的数据库。

show databases;:返回所有可用数据库的列表。

grant all privileges on database_name.* to 'username'@'localhost' identified by 'password';:授予指定用户("username")在指定数据库("database_name")上的所有权限,并使用指定密码("password")进行身份验证。

revoke all privileges on database_name.* from 'username'@'localhost';:撤销指定用户("username")在指定数据库("database_name")上的所有权限。

create user 'username'@'localhost' identified by 'password';:创建一个具有指定用户名("username")和密码("password")的新用户。

drop user 'username'@'localhost';:删除指定用户名("username")的用户。

flush privileges;:重新加载所有权限配置,并使其立即生效。

show grants for 'username'@'localhost';:返回指定用户名("username")在本地主机上的所有权限。

show processlist;:返回当前正在运行的 MySQL 进程列表。

kill process_id;:终止指定进程("process_id")。

create view view_name as select column1, column2 from table_name where column3 = 'value';:创建一个名为指定的视图("view_name"),从指定表("table_name")选择指定列("column1""column2"),并仅选择符合指定条件("column3 = 'value'")的行。

drop view view_name;:删除指定视图("view_name")。

show tables;:返回当前数据库中所有表的列表。

show status;:返回 MySQL 服务器的当前状态信息。

show variables;:返回 MySQL 服务器的当前系统变量值。

show warnings;:返回所有警告消息的列表。

set autocommit = 0;:禁用自动提交模式,允许事务控制。

start transaction;:开始一个新事务。

commit;:提交当前事务的所有更改。

rollback;:回滚当前事务的所有更改。

savepoint point_name;:创建指定名称("point_name")的保存点。

rollback to point_name;:将当前事务回滚到指定保存点("point_name")的状态。

release savepoint point_name;:删除指定保存点("point_name")。

explain select * from table_name;:返回执行指定查询("select * from table_name")时 MySQL 优化器所采用的查询执行计划。

show binary logs;:返回所有可用的二进制日志文件。

show master status;:返回当前主服务器的二进制日志文件名称和位置。

show slave status;:返回当前从服务器的复制状态。

set global slow_query_log = 'ON';:启用慢查询日志记录。

set global slow_query_log_file = '/var/log/mysql/slow-query.log';:设置慢查询日志文件的位置和名称。

set global long_query_time = 10;:将慢查询的阈值设置为 10 秒。

show global variables like 'log_%';:返回所有以 "log_" 开头的全局系统变量。

show global status like 'Com%';:返回所有以 "Com" 开头的全局状态变量。

show engine innodb status\G;:返回 InnoDB 存储引擎的详细状态信息。

show table status like 'table_name'\G;:返回指定表("table_name")的详细状态信息。

select * into outfile '/tmp/data.csv' fields terminated by ',' lines terminated by '\n' from table_name;:将指定表("table_name")的数据以 CSV 格式导出到指定文件路径("/tmp/data.csv")。

load data infile '/tmp/data.csv' into table table_name fields terminated by ',' lines terminated by '\n';:将指定 CSV 文件("/tmp/data.csv")中的数据加载到指定表("table_name")中。

`set global general_log_file = '/var/log/mysql/mysql.log';`:设置全局查询日志文件的位置和名称。

show global variables like 'general_log%';:返回所有与全局查询日志相关的系统变量。

show processlist;:返回当前 MySQL 服务器上所有正在运行的进程列表。

kill process_id;:结束指定进程("process_id")。

create user 'username'@'localhost' identified by 'password';:创建一个新用户("username")。

grant all privileges on database_name.* to 'username'@'localhost';:授予指定用户("username")对指定数据库("database_name")的所有权限。

revoke all privileges on database_name.* from 'username'@'localhost';:撤销指定用户("username")对指定数据库("database_name")的所有权限。

alter user 'username'@'localhost' identified by 'new_password';:更改指定用户("username")的密码。

drop user 'username'@'localhost';:删除指定用户("username")。

flush privileges;:刷新 MySQL 权限缓存,以确保最新的权限更改生效。


3、命令测试

数据库创建指令操作记录:

3.1、创建数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| test               |
| world              |
+--------------------+
7 rows in set (0.00 sec)

mysql> use test
Database changed
mysql> show tables;
Empty set (0.00 sec)

这段代码显示了 MySQL 数据库中的一些信息,并尝试访问 “test” 数据库中的表。以下是每行代码的解释:

show databases;:显示 MySQL 数据库中所有可用的数据库列表。
use test:选择 “test” 数据库,以便您可以在该数据库中执行其他操作。
show tables;:显示当前所选数据库(即 “test”)中的所有表。由于此数据库中没有表,因此输出为空。

如果您运行 show tables; 命令,但是输出结果为 Empty set (0.00 sec),这表示您所选的数据库中没有任何表存在。

有几种可能的原因:

  • 您可能已经选择了错误的数据库,而您实际上要查看的表存在于另一个数据库中。您可以使用 show databases; 命令查看所有可用的数据库列表,并使用 use database_name; 命令选择正确的数据库。

  • 您可能尚未在所选数据库中创建任何表。您可以使用 create table table_name (…) 命令创建一个新表,并在其中添加列和数据。

  • 您可能已经在所选数据库中创建了表,但是没有在该数据库中选择表。在运行 show tables; 命令之前,您需要使用 use database_name; 命令选择要查询的数据库。

3.2、查看其他数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
| test               |
| world              |
+--------------------+
7 rows in set (0.00 sec)

查看数据库world:

mysql> use world
Database changed

该命令的作用是切换当前会话的默认数据库为 “world”。在 MySQL 中,一个服务器可以托管多个数据库,每个数据库可以包含多个表和其他对象。使用该命令可以告诉 MySQL 服务器,当前会话将使用 “world” 数据库中的表和数据,直到使用 “use” 命令切换到另一个数据库。如果数据库不存在,则会出现 “Unknown database ‘world’” 错误。

然后,使用 “show tables” 命令来列出该数据库中的所有表:

mysql> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| city            |
| country         |
| countrylanguage |
| db2             |
+-----------------+
4 rows in set (0.00 sec)

该命令将返回一个表格,其中包含 “world” 数据库中的所有表的名称。您还可以使用其他命令来显示其他对象,如 “show views”、“show triggers” 和 “show procedures”。

select * from 表名xxx; #选择并显示表中所有国家信息: select * from country;
在这里插入图片描述

3.3、数据库导入表

在上述空的 “test” 数据库中创建表,可以使用 “CREATE TABLE” 语句,该语句包含要创建的表的列的名称和数据类型。以下是一个创建名为 “students” 的简单表的示例:

CREATE TABLE students (
  id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(30) NOT NULL,
  age INT(3) NOT NULL,
  gender ENUM('Male','Female','Other') NOT NULL,
  email VARCHAR(50),
  reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

上述语句将创建一个包含以下列的 “students” 表:

id:包含学生ID的整数类型列,它是主键并自动递增。
name:包含学生姓名的文本类型列,它不能为空。
age:包含学生年龄的整数类型列,它不能为空。
gender:包含学生性别的枚举类型列,它不能为空。
email:包含学生电子邮件地址的文本类型列,它可以为空。
reg_date:包含学生注册日期的时间戳类型列,它设置了默认值为当前时间戳,并在每次更新时更新时间戳值。

此外,在执行此语句之前,您需要先使用 “use test” 命令切换到 “test” 数据库。然后,您可以将上述代码复制并粘贴到 MySQL 命令行工具中,或者将其保存到文件中并使用 “source” 命令来运行它。成功创建表后,您可以使用 “show tables” 命令来验证它是否已创建。

mysql> use test;
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| students       |
+----------------+
1 row in set (0.00 sec)

这个命令首先使用 “use” 命令切换当前会话的默认数据库为 “test”,然后使用 “show tables” 命令列出该数据库中的所有表。由于命令返回了 “students” 表,这表示该表已成功创建。

查看表里有没有东西:

mysql> use test;
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| students       |
+----------------+
1 row in set (0.00 sec)

mysql> select * from students;
Empty set (0.00 sec)

果然是空的,因为在创建 “students” 表时,您只定义了表的结构和列,而没有添加任何数据。因此,当您使用 “SELECT * FROM students” 命令检索数据时,MySQL 返回 “Empty set”,表示表中没有任何数据。

如果要向 “students” 表中添加数据,您可以使用 “INSERT INTO” 语句。例如,以下是一个向 “students” 表中添加一行数据的示例:

INSERT INTO students (name, age, gender, email) VALUES ('John Doe', 20, 'Male', 'john.doe@example.com');

在这里插入图片描述

上述语句将添加一个包含学生姓名、年龄、性别和电子邮件地址的新行。要检索 “students” 表中的所有数据,请再次运行 “SELECT * FROM students” 命令。现在,MySQL 将返回包含添加的数据的结果集。

再次使用命令查看:select * from students;
在这里插入图片描述
如果您希望导入更多数据到 “students” 表,可以使用 “INSERT INTO” 语句来逐个添加每一行数据。例如:

INSERT INTO students (name, age, gender, email) VALUES ('Alice Smith', 22, 'Female', 'alice.smith@example.com');
INSERT INTO students (name, age, gender, email) VALUES ('Bob Johnson', 21, 'Male', 'bob.johnson@example.com');
INSERT INTO students (name, age, gender, email) VALUES ('Jane Doe', 19, 'Female', 'jane.doe@example.com');

上述命令将添加三行数据到 “students” 表中。再次运行 “SELECT * FROM students” 命令,MySQL 将返回包含所有添加的数据的结果集。
在这里插入图片描述

3.4、多行数据的 CSV 文件导入数据库

在上述数据库的基础上,如果您有一个包含多行数据的 CSV 文件,可以使用 “LOAD DATA INFILE” 命令将数据导入到 “students” 表中。例如,如果您的 CSV 文件名为 “students.csv”,其中包含以下内容:

D:\my_project\mynlp\tf2-bert-textclassification

LOAD DATA INFILE 'D:/my_project/mynlp/tf2-bert-textclassification/students.csv';
INTO TABLE students
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(name, age, gender, email);

上述命令将从 “students.csv” 文件中加载数据,并将其插入到 “students” 表中。注意,“LOAD DATA INFILE” 命令要求文件路径必须是 MySQL 服务器上的绝对路径,并且在使用该命令之前,必须将 “secure_file_priv” 系统变量设置为允许加载文件的目录。

LOAD DATA INFILE 'D:/my_project/mynlp/tf2-bert-textclassification/students.csv'
    -> INTO TABLE students
    -> FIELDS TERMINATED BY ','
    -> ENCLOSED BY '"'
    -> LINES TERMINATED BY '\r\n'
    -> IGNORE 1 ROWS;
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

这个错误信息通常是由于MySQL的安全性设置导致的。为了保护系统安全,MySQL默认情况下不允许通过LOAD DATA INFILE从本地文件系统中加载数据,除非已经配置了合适的权限。在执行LOAD DATA INFILE语句时,需要指定一个MySQL服务器有权限访问的目录,以防止MySQL读取和写入敏感文件。

可以通过以下两种方法解决此问题:

修改MySQL配置文件my.cnf或my.ini,在[mysqld]部分添加如下行:

secure-file-priv=“”

这将使MySQL在任何目录下读取和写入文件。

将数据文件复制到MySQL的数据目录中,然后使用LOAD DATA INFILE从该目录加载数据。可以通过以下查询来确定MySQL的数据目录:

SHOW VARIABLES LIKE ‘datadir’;

然后将数据文件复制到该目录下的一个子目录中,并使用LOAD DATA INFILE指定该子目录作为文件路径。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源代码杀手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值