百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

MySql系列-常用命令(mysql的相关命令)

wuantov 2025-07-24 22:36 5 浏览


本篇是对MySql系列-环境搭建、常用命令、数据类型的常用命令部分的补充总结

基础知识-常用命令

命令不区分大小写

1、mysql连接

mysql -u username -p

实例:

mysql -u root -p

2、元数据查询

//服务器版本信息
SELECT VERSION( ) 
//当前数据库名 (或者返回空)
SELECT DATABASE( ) 
//当前用户名
SELECT USER( ) 
//服务器状态
SHOW STATUS 
//服务器配置变量
SHOW VARIABLES

3、数据库操作

1)创建数据库

语法

CREATE DATABASE 数据库名;

2)查询数据库

语法

SHOW DATABASES;

实例:

3)删除数据库

drop database <数据库名>;

实例:

4)使用数据库

use DATABASE;

实例:

4、创建数据表

语法

CREATE TABLE table_name (column_name column_type);

或者顺便指定索引

CREATE TABLE table_name (
      column1_name data_type,
      column2_name data_type,
      ...,
      INDEX index_name (column1 [ASC|DESC], column2 [ASC|DESC], ...)
);

实例:

CREATE TABLE IF NOT EXISTS `User`(
      `user_id` INT UNSIGNED AUTO_INCREMENT,
      `user_name` VARCHAR(100) NOT NULL,
      `user_sex` VARCHAR(10) NOT NULL,
      `insert_date` DATE,
      PRIMARY KEY ( `user_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

5、删除数据表

语法

DROP TABLE table_name ;

实例:

DROP TABLE User;

6、修改数据表结构

在进行重要的结构修改时,建议先备份数据,并在生产环境中谨慎操作,因为修改时会影响到数据库的性能和运行时间。

1)添加新字段

ALTER TABLE table_name
ADD column_name data_type;

2)修改字段类型

ALTER TABLE table_name
MODIFY column_name new_data_type;

3)修改字段名称

ALTER TABLE table_name
CHANGE old_column_name new_column_name data_type;

4)删除字段

ALTER TABLE table_name
DROP column_name;

5)添加主键约束

ALTER TABLE table_name
ADD PRIMARY KEY (column_name);

6)添加外键约束

ALTER TABLE table_name
ADD FOREIGN KEY (column_name) REFERENCES referenced_table(ref_column_name);

7)添加普通索引

ALTER TABLE table_name
ADD INDEX index_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);

或者

CREATE INDEX index_name
ON table_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);

8)添加唯一索引

ALTER TABLE table_name
ADD UNIQUE INDEX index_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);

或者

CREATE UNIQUE INDEX index_name
ON table_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);

9)删除索引

ALTER TABLE table_name
DROP INDEX index_name;

或者

DROP INDEX index_name ON table_name;

10)重命名表

ALTER TABLE old_table_name
RENAME TO new_table_name;

11)修改表的存储引擎

ALTER TABLE table_name ENGINE = new_storage_engine;

7、复制数据表

如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等。 如果仅仅使用CREATE TABLE ... SELECT 命令,是无法实现的。下面介绍如何完全复制一张表

原始表是User,复制一个新的表叫User_2

1)获取数据表User的建表语句。
命令:SHOW CREATE TABLE User;

2)修改SQL语句的数据表名为User_2,并执行SQL语句。

CREATE TABLE `user_2` (
      `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `user_name` varchar(100) NOT NULL,
      `user_sex` varchar(10) NOT NULL,
      `insert_date` date DEFAULT NULL,
      PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

此时表user_2的结构和原始表user完全一致,但是没有数据。

3)使用INSERT INTO... SELECT 语句拷贝表中的数据

命令:

INSERT INTO User_2(user_id,user_name,user_sex,insert_date) select user_id,user_name,user_sex,insert_date from user;

通过上面三个步骤,就会完整的复制表的内容,包括表结构及表数据。

8、插入数据行

语法

INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );

实例:

INSERT INTO User(user_name,user_sex,insert_date) VALUES('admin','男','2023-08-29');

9、查询数据行

语法

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]

实例:

SELECT user_name,user_sex FROM User WHERE user_name='admin' LIMIT 1;

10、更新数据行

语法

UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]

实例:

UPDATE User SET user_sex='女' where user_name='admin';

11、删除数据行

语法

DELETE FROM table_name [WHERE Clause]

实例:

DELETE FROM User WHERE user_name='admin';

12、模糊查询LIKE

语法

SELECT field1, field2,...fieldN 
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'

LIKE 通常与 % 一同使用,类似于一个元字符的搜索

实例:

SELECT *FROM User WHERE user_name LIKE '%ad%';

13、联合查询UNION

语法

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

UNION ALL: 返回所有结果集,包含重复数据。
UNION: 返回所有结果集,不包含重复数据。

14、排序

语法

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]

实例:

//按插入时间升序
SELECT * from User ORDER BY insert_date ASC;

15、分组

语法

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

实例:

//按用户名分组
SELECT user_name,count(1) from User GROUP BY user_name

16、多表连接查询

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

我们可以在SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。

语法:

SELECT a.x,b.y from a inner join b on a.id = b.a_id

17、正则表达式

MySQL中使用 REGEXP 操作符来进行正则表达式匹配。

实例:

//查找user_name字段中以'st'为开头的所有数据:
SELECT user_name FROM User WHERE user_name REGEXP '^ad';

18、事务控制

在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。

语法:

//MYSQL 事务处理主要有两种方法:
//1、用 BEGIN, ROLLBACK, COMMIT来实现
BEGIN 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认
//2、直接用 SET 来改变 MySQL 的自动提交模式:
SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交

实例:

19、数据导出

可以使用 SELECT ... INTO OUTFILE 语句导出数据

实例:

select *from user into outfile 'D:\\mysql-5.7.43-winx64\\outfile';

直接执行上述导出会报错:

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

看字面意思是和--secure-file-pri这个变量有关系,我们看下这个变量的设置是什么:

show variables like '%secure%';

可以看到这个值是NULL, 查阅资料得知

secure-file-pri这个变量被用于限制数据导入的导出操作,诸如执行LOAD DATA以及SELECT ... INTO OUTFILE操作以及LOAD_FILE()函数。 
这个secure_file_priv可以设置的值有三个可选项:
- If empty, the variable has no effect. This is not a secure setting. 【如果此配置项值为空,则表示没有安全设置】
- 如果设置为目录名,则服务器将限制导入和导出操作,使其仅适用于该目录中的文件。该目录必须存在;服务器将不会创建它。
- 如果设置为NULL,则服务器将禁用导入和导出操作。从MySQL 5.7.6开始允许使用此值

根据上述的NULL值,可以看到是不允许导出(入)到文件。

解决办法就是在配置文件中,设置secure-file-priv为某个路径即可,如下:

注意配置前一定要加一行[mysqld]

最后要想配置生效,需要重启mysql服务,注意是重启服务!不是退出重新登录!

配置生效后,重新执行前面的导出命令即可导出数据

20、数据导入

1)使用mysql命令导入
语法:

mysql -u用户名 -p密码 < 要导入的数据库数据(data.sql)

以上命令将将备份的整个数据库 data.sql 导入。

2)使用source命令导入

source 命令导入数据库需要先登录到数库终端

导入步骤:

mysql> create database gyd; # 创建数据库
mysql> use gyd; # 使用已创建的数据库 
mysql> set names utf8; # 设置编码
mysql> source /home/gyd/gyd.sql # 导入备份数据库

3)使用 LOAD DATA 导入数据

以下实例中将从当前目录中读取文件 outfile.txt ,将该文件中的数据插入到当前数据库的 user 表中。

mysql> LOAD DATA LOCAL INFILE 'outfile.txt' INTO TABLE user;

LOAD DATA 默认情况下是按照数据文件中列的顺序插入数据的,如果数据文件中的列与插入表中的列不一致,则需要指定列的顺序。

如,在数据文件中的列顺序是 user_sex,user_name, insert_date,但在插入表的列顺序为user_name, user_sex, insert_date,则数据导入语法如下:

mysql> LOAD DATA LOCAL INFILE 'outfile.txt' 
-> INTO TABLE user (user_name, user_sex, insert_date);

4)使用 mysqlimport 导入数据

$ mysqlimport -u root -p --local user outfile.txt
password *****

mysqlimport有很多可选项,有兴趣的可以自行查资料啦!

mysql还有很多命令,小郭会慢慢的补充进来。

相关推荐

SQL关联各种JOIN傻傻分不清楚,读这一篇就够了

在关系型数据库中支持多表关联,不同场景下通过不同join方式让分布在不同表中的数据呈现在同一个结果里。熟练使用sql联合查询是日常开发的基础工作。为了方便演示讲解,假设有两个表,一张是保存学生踢足球的...

MyBatis的SQL执行流程不清楚?看完这一篇就够了

推荐学习真香警告!Alibaba珍藏版mybatis手写文档,刷起来全网独家的“MySQL高级知识”集合,骨灰级收藏,手慢则无前言MyBatis可能很多人都一直在用,但是MyBatis的SQL执行...

SQL优化这十条,面试的时候你都答对了吗?

尽量不要在要给在SQL语句的where子句中使用函数,这样会使索引失效。如果已经确定查询结果只有一条数据(当表中数据的该字段是唯一的),在查询SQL末尾增加limit1,这样MySQL的查询执行引...

SQL查询Excel结果数据还可这样输出到窗体控件ListBox和ListView

上一期作品,我们分享了通过SQL查询Excel的结果数据输出到Excel自身的工作表区域。大家估计应该感觉到了SQL查询的强大功能,它对精确或模糊查询均无畏惧,优点是查询检索效率高,将查询结果输出的形...

数据库|SQLServer数据库:模糊查询的三种情况

哈喽,你好啊,我是雷工!就是字面意思,当数据库的查询条件并不是十分具体时就用到模糊查询,比如查询姓氏为雷的人名,就需要从姓名列模糊查询。01like关键字查询当使用like关键字进行查询时,字段中的...

数据库教程-SQL Server多条件模糊查询

表单查询是以数据存储管理为基础的信息管理系统各业务功能实现的基础,也是数据库CRUD操作的重点与难点,尤其是多表连接查询、条件查询、分组查询、聚合函数等的综合应用。本文以某一比赛样式要求为基础,对数据...

如何利用教育网站源码成功搭建在线教育网站

如今是一个信息化时代,人们都想接受各种各样的教育,在线教育也就因此发展了起来,并且逐渐成为了一种趋势。而成熟的在线教育网站皆是由高质量的教育网站源码搭建而成的。如何利用教育网站源码成功搭建在线教育网站...

宝塔搭建WordPress跨境电商外贸商城模板汉化woodmart7.5.1源码

大家好啊,欢迎来到web测评。本期给大家带来一套php开发的WoodmartV7.5.1汉化主题|跨境电商|外贸商城|产品展示网站模板WordPress主题,是wordpress开发的。上次是谁要的系...

小狐狸ChatGPT付费创作系统V2.4.7全开源版 (vue全开源端)

测试环境:Nginx1.20+PHP7.4+MySQL5.7本版本为官方的最新开源包对应V2.4.7版本,包含了前后端所有开源包,是目前最新全开源版本,需要二开的这部分朋友也有选择了,如果不需要二...

php宝塔搭建部署thinkphp红色大气装修公司官网php源码

大家好啊,欢迎来到web测评。本期给大家带来一套php开发的thinkphp红色大气装修公司官网源码,上次是谁要的系统项目啊,帮你找到了,还说不会搭建,让我帮忙录制一期教程,趁着今天有空,简单的录制测...

php宝塔搭建免登录积分商城系统php源码

大家好啊,欢迎来到web测评。本期给大家带来一套php开发的免登录积分商城系统php源码,上次是谁要的系统项目啊,帮你找到了,还说不会搭建,让我帮忙录制一期教程,趁着今天有空,简单的录制测试了一下,部...

零代码搭建接口收费平台——接口大师YesApi

主流的API接口收费模式目前各大API接口平台,采用的收费模式主可以分为:免费接口、免费试用、接口流量套餐、先充值后按量计费的模式。例如,聚合数据的API收费模式是:按接口流量套餐。例如身份证二要素...

php宝塔搭建部署实战抽奖系统开源php源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套抽奖系统开源php源码。感兴趣的朋友可以自行下载学习。技术架构PHP5.4+nginx+mysql5.7+JS+CSS+...

【推荐】一款开源个人与企业私有化部署使用的在线知识库管理平台

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍zyplayer-doc是一款基于Java+Vue开源、专注于个人与企业私有化部署使用的在线知识库管...

网上的付费文档无法下载?这几个方法10秒搞定,任意免费复制

工作或者学习过程中,我们很多时候需要在网上找资料,但是想要的资料却要付费或者提示无法下载怎么办?别怕,这几个方法,让你10秒就能搞定付费文档,任意复制。1.打印界面复制遇到文档需要付费或者无法复制的...