MySql系列-常用命令
wptr33 2025-08-03 08:48 33 浏览
本篇是对MySql系列-环境搭建、常用命令、数据类型的常用命令部分的补充总结
基础知识-常用命令
命令不区分大小写
1、mysql连接
mysql -u username -p实例:
mysql -u root -p2、元数据查询
//服务器版本信息
SELECT VERSION( )
//当前数据库名 (或者返回空)
SELECT DATABASE( )
//当前用户名
SELECT USER( )
//服务器状态
SHOW STATUS
//服务器配置变量
SHOW VARIABLES3、数据库操作
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_name16、多表连接查询
- 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_id17、正则表达式
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还有很多命令,小郭会慢慢的补充进来。
相关推荐
- oracle数据导入导出_oracle数据导入导出工具
-
关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...
- 继续学习Python中的while true/break语句
-
上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个...
- python continue和break的区别_python中break语句和continue语句的区别
-
python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...
- 简单学Python——关键字6——break和continue
-
Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...
- 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
-
用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...
- Python 中 break 和 continue 傻傻分不清
-
大家好啊,我是大田。...
- python中的流程控制语句:continue、break 和 return使用方法
-
Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...
- L017:continue和break - 教程文案
-
continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...
- 作为前端开发者,你都经历过怎样的面试?
-
已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...
- 面试被问 const 是否不可变?这样回答才显功底
-
作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...
- 2023金九银十必看前端面试题!2w字精品!
-
导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。...
- 前端面试总结_前端面试题整理
-
记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...
- 由浅入深,66条JavaScript面试知识点(七)
-
作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录...
- 2024前端面试真题之—VUE篇_前端面试题vue2020及答案
-
添加图片注释,不超过140字(可选)...
- 今年最常见的前端面试题,你会做几道?
-
在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...
- 一周热门
- 最近发表
-
- oracle数据导入导出_oracle数据导入导出工具
- 继续学习Python中的while true/break语句
- python continue和break的区别_python中break语句和continue语句的区别
- 简单学Python——关键字6——break和continue
- 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
- Python 中 break 和 continue 傻傻分不清
- python中的流程控制语句:continue、break 和 return使用方法
- L017:continue和break - 教程文案
- 作为前端开发者,你都经历过怎样的面试?
- 面试被问 const 是否不可变?这样回答才显功底
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)
