目录
1.对数据库常用命令
2.数据库中对表的命令
插入数据
数据查询
常用函数
模糊查询
多表连接查询
MySQL的事务,视图,索引,备份和恢复
首页 数据库 mysql教程 爆肝整理MySQL数据库命令合集(总结分享)

爆肝整理MySQL数据库命令合集(总结分享)

Dec 28, 2021 pm 07:43 PM
mysql

本篇文章给大家带来了关于mysql数据库命令的相关知识,其中整理了很多常用的命令,希望对大家有帮助。

爆肝整理MySQL数据库命令合集(总结分享)

1.对数据库常用命令

1.连接数据库
mysql -u用户名 -p密码
2.显示已有数据库
show databases;
3.创建数据库
create database sqlname;
4.选择数据库
use database sqlname;
5.显示数据库中的表(先选择数据库)
show tables;
6.显示当前数据库的版本信息以及连接用户名
select version(),user();
7.删除数据库(删除时没有提示直接删除)
drop database sqlname;

2.数据库中对表的命令

1.创建表
(1)语法:
create table tablename(
字段1 数据类型 字段属性

字段n
);
(2)注意:
1.创建表时为了防止与保留字冲突,用’'括起来
2.单行注释:#…
多行注释://
3.创建表时多字段中间用英文逗号隔开,最后一行不用逗号。
(3) 字段约束和属性
1.非空约束 not null(字段不允许为空)
2.默认约束 default(设置默认值)
3.唯一约束 unique key(uk)(设置字段的值是唯一的,可为空,但只能有一个空值)
4.主键约束 primary key(pk)(作为表记录的唯一标识)
5.外键约束 foreign key(fk)(用于两个表之间建立关系,需要指定引用主表的哪一字段。在数据库的存储引擎中InnoDB支持外键,MyISAM不支持外键。
作为外键的字段要求是主表中的主键(单字段主键))

添加外键约束:
CONSTRAINT FK_外键名 FOREIGN KEY(字表中外键字段)REFERENCES 关联表名 (关联字段)。
grandid作为字表的外键
grandid
在这里插入图片描述
1.设置自增auto_increment=n,从n开始。
2.设置自增set @@ auto_increment_increment=m,步长为m。
在这里插入图片描述
3.多字段设置主键:primary key(字段1,字段2…字段n)
4.表中的注释/说明性文字:)comment=“说明文字”;
5.设置字符集:)charset=“字符集”;
6.查看表的结构:describe’表名’/desc 表名
7.查看数据库定义:show create database sqlname;
8.查看数据表定义:show create table tablename;
9.查看默认存储引擎:show variables like’storage_engine%’;
11.指定表的存储引擎:)engine=存储引擎;
10.删除表:drop table ‘tablename’;
11.获取当前日期:now();
12.修改表:
(1)修改表名:alter table 旧表名 rename 新表名;
(2)添加字段:alter table 表名 add 字段名 数据类型…;(添加新的字段)
(3)修改字段:alter table 表名 change 原字段名 新字段名 数据类型…;
(4)删除字段:alter table 表名 drop 字段名;
(5)在创建完表以后添加主键约束:
alter table 表名 add constraint 主键名 primary key 表名(主键字段);
(6)创建完表以后添加外键约束(作为外键的字段要求是主表中的主键(单字段主键)):
alter table 表名 add constraint 外键名 foreign key(外键字段) references 关联表名 (关联字段);

插入数据

1.插入单行数据:
insert into 表名 (字段名列表(逗号隔开)) values(值列表(逗号隔开));
2.插入多行数据 :
insert into 表名(字段名列表) values (值列表1), … ,(值列表n);
3.将查询结果插入到新表中:
create table 新表(select 字段1, … ,from 原表);

查询student表中的id,name,sex,phone数据插入到newstudent表中:

CREATE TABLE newstudent(SELECT id,`name`,sex,phone FROM student);

3.更新数据(修改数据):
update 表名 set 列名=更新值 where 更新条件;

修改newstudent表中id=1001的数据名字为tom:

UPDATE newstudent SET `name`='tom' WHERE id=1001;

4.删除数据
(1)delete from 表名 where 删除条件;
delete 删除的是整条数据,不会只删除单个列。

删除newstudent表中名字为tom的数据:

DELETE FROM newstudent WHERE `name`='tom';

(2)truncate table 删除数据:
truncate table 删除的是表中所有的行,但表的结构,列,约束,索引等不会改变。不能用于有外键约束的表。删除数据不能恢复。
truncate table 表名 where 删除条件;

数据查询

1.使用select查询
select 列名/表达式/函数/常量 from 表名 where 查询条件 order by 排序的列名asc/desc;
(1)查询所有的数据行和列:
select * from 表名;
(2)查询部分行和列:
select 列名… from 表名 where 查询条件;
(3)在查询中使用列的别名:
select 列名 AS 新列名 form 表名 where 查询条件;
计算,合并得到新的列名:
select 列名1+’.’+列名2 AS 新列名 from 表名;
(4)查询空值:
通过is null 或者 is not null 判断列值是否为空

查询student表中Email为空的学生姓名:

SELECT `name` FROM student WHERE Email IS NULL;

2.分组查询
在这里插入图片描述

#查询不同课程的平均分,最低分,最高分,并查询出平均分大于80分的课程
SELECT r.subjectno,sub.`SubjectName` 课程名称,AVG(StudentResult) 平均分,
MAX(StudentResult) 最高分,MIN(StudentResult) 最低分
FROM result r INNER JOIN `subject` sub
ON r.`SubjectNo`=sub.`SubjectNo` 
GROUP BY r.subjectno
#where AVG(StudentResult)>=80出现错误,
#分组查询group by 在where语句后,
#group by 约束条件使用having语句
HAVING AVG(StudentResult)>=80;

在这里插入图片描述

常用函数

1.聚合函数:
(1)AVG (平均值):select avg(列名)from 表名
假设列名为成绩 则查询到的是表中所有成绩的平均值。
(2)count 返回某字段的行数
(3)max 返回某字段的最大数
(4)min 返回某字段的最小值
(5)sum 返回某字段的和。
2.字符串函数:
(1)concat() 连接字符串s1,s2…sn为一个完整的字符串。
(2)insert(s1,p1,n,news)将字符串s1从p1位置开始,n个字符长的字串替换为字符串news。
(3)lower(s)将字符串s中的所有字符改为小写。
(4)upper(s)将字符串s中的所有字符改为大写。
(5)substring(s,num,len)返回字符串s的第num个位置开始长度为len的子字符串。
3.时间日期函数:
(1)获取当前日期:curdate();
(2)获取当前时间:curtime();
(3)获取当前日期和时间:now();
(4)返回日期date为一年中的第几周:week(date);
(5)返回日期date的年份:year(date);
(6)返回时间time的小时值:hour(time);
(7)返回时间time的分钟值:minute(time);
(8)返回日期参数(date1和date2之间相隔的天数):datediff(date1,date2);
(9)计算日期参数date加上n天后的日期:adddate(date,n);
4.数学函数
(1)返回大于或等于数值x的最小整数:ceil(x);
(2)返回小于或等于数值x的最大整数:floor(x);
(3)返回0~1之间的随机数:rand();
order by 子句
order by子句按照一定的顺序排列查询结果,asc升序排列,desc降序排列。
limit子句
显示指定位置指定行数的记录。
select 字段名列表 form 表名 where 约束条件 group by分组的字段名 order by 排序列名 limit 位置偏移量,行数;
#查询学生信息里gid=1按学号升序排列前四条记录
在这里插入图片描述

#查询学生信息里gid=1按学号升序排列前四条记录(步长)
SELECT id,`name` FROM `student1` WHERE gid=1 ORDER BY id LIMIT 4;
(查询表里全部信息中gid=1的前四个学生)

查询结果:
在这里插入图片描述

#查询学生信息里gid=1按学号升序排列前四条记录(位置偏移量,步长)
SELECT id,`name` FROM `student1` WHERE gid=1 ORDER BY id LIMIT 4,4;
(查询表中全部信息gid=1前四条以后的全部信息中的前四条学生信息)

查询结果:
在这里插入图片描述

模糊查询

in子查询******not in 子查询
使用in关键字可以使父查询匹配子查询返回的多个单字段值。
解决使用比较运算符(=,>等),子查询返回值不唯一错误信息。
like模糊查询
LIKE语句语法格式:select * from 表名 where 字段名 like 对应值(子串)。

它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。

A:% 包含零个或多个字符的任意字符串: 1、LIKE’Mc%’ 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。
  2、LIKE’%inger’ 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。
  3、LIKE’%en%’ 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。
  B:_(下划线) 任何单个字符:LIKE’_heryl’ 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。
  C:[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符:、
  1,LIKE’[CK]ars[eo]n’ 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
  2、LIKE’[M-Z]inger’ 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)
  ***D:[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符:LIKE’M[^c]%’ 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。
  E: 它同于DOS命令中的通配符,代表多个字符
:c
c代表cc,cBc,cbc,cabdfec等多个字符。
  F:?同于DOS命令中的?通配符,代表单个字符 :b?b代表brb,bFb等
  G:# 大致同上,不同的是代只能代表单个数字。k#k代表k1k,k8k,k0k 。
  F:[!] 排除 它只代表单个字符
  下面我们来举例说明一下:
  例1,查询name字段中包含有“明”字的。
  select * from table1 where name like ‘%明%’
  例2,查询name字段中以“李”字开头。
  select * from table1 where name like '李

  例3,查询name字段中含有数字的。
  select * from table1 where name like ‘%[0-9]%’
  例4,查询name字段中含有小写字母的。
  select * from table1 where name like ‘%[a-z]%’
  例5,查询name字段中不含有数字的。
  select * from table1 where name like ‘%[!0-9]%’
  可以自定义转移符----》escape’自定义转移符’
  distinct------》去除重复项
  
  between*and模糊查询
 操作符 BETWEEN … AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
 null ,not null查询

-- 查询手机号不为null的用户数据
SELECT * from user where phone is not null;
 
-- 查询手机号为null的用户数据
SELECT * from user where phone is null;

exists 子查询 not exists子查询
exists子查询用来确认后边的查询是否继续进行
drop table if exists test—>判断是否存在表test,如果存在就删除。
not exists实现取反操作。对不存在对应查询条件的记录。

多表连接查询

多表连接查询是通过各个表之间共同列的关联性来查询数据。
1.内连接查询
内连接查询根据表中共同的列进行匹配。取两个的表的交集。两个表存在主外键关系是通常使用内连接查询。
内连接使用inner join…on 关键字或者where子句来进行表之间的关联。
inner 可省略 on 用来设置条件。
(1)在where子句中指定连接条件
(2)在from中使用inner join…on关键字

#查询学生姓名和成绩
SELECT studentname,studentresult FROM student s,result r
WHERE s.`StudentNo`=r.`StudentNo`
#在from中使用inner join....on关键字
SELECT s.`StudentName`,r.`StudentResult` ,r.`SubjectNo`FROM student s
INNER JOIN result r ON s.`StudentNo`=r.`StudentNo`

两种方法查询结果相同。
2.外连接查询
外连接查询中参与连接的表有主从之分,已主表的每行数据匹配从表的数据列,将符合连接条件的数据直接返回到结果集中,对不符合连接条件的列,将被填上null值再返回到结果集中。
(1)左外连接查询
left join…on 或者left outer join…on关键字进行表之间的关联。

SELECT s.`StudentName`,r.`StudentResult` ,r.`SubjectNo`FROM student s
LEFT JOIN result r ON s.`StudentNo`=r.`StudentNo`

将没有成绩的学生成绩查出。
(2)右外连接查询
右外连接包含右表中所有的匹配行,右表中有的项在左表中没有对应的项将以null值填充。
right join…onright outer join…on关键字进行表之间的关联。
(3)自连接
把一个表作为两个表使用。

#创建一个表
CREATE TABLE book(
id INT(10),
sort INT(10),
books VARCHAR(10) NOT NULL
);
#插入数据
INSERT INTO book VALUES (2,1,'古文书'),
(3,1,'现代书'),
(4,2,'《三字经》'),
(5,2,'《唐诗三百首》'),
(6,3,'《我与地坛》'),
(7,2,'《游大林寺》'),
(8,2,'《王右军年减十岁时》'),
(9,3,'《致橡树》');

#查询结果为:
#书籍类型       书籍名
#古文书         三字经....
#现代书         我与地坛....

SELECT a.books 书籍类型, b.books 书籍名  
FROM book a,book b
WHERE a.id=b.sort;

在这里插入图片描述
自连接查询结果:
在这里插入图片描述

MySQL的事务,视图,索引,备份和恢复

1.事务
事务是指将一系列数据操作捆绑成为一个整体进行统一管理。
把所有的命令作为一个整体一起向系统提交或者撤销造组偶请求。
事务属性:原子性,一致性,隔离性,持久性。
myISA存储引擎不支持事务。

关闭事务自动提交:set autocommit=0;
(1)开始事务:begin/start transaction;
(2)提交事务:commit;
(3)回滚/撤销事务:rollback;
恢复自动提交:set autocommit=1;
设置结果集以??编码格式显示:set names ??;
2.视图
视图是一种查看数据库中一个或多个表中数据的方法。视图是一种虚拟表,作为来自一个或多个表的行或列的子集创建的。视图充当查询中的表筛选器的角色。
(1)创建视图:create view 视图名 as
(2)删除视图:drop view 视图名;
(3)查看视图数据:select 。。。。。from 视图名;
3.索引
索引类似于书的目录,使用索引可以将数据库程序无须对整个表扫描就可以在其中找到所需数据。
(1)普通数据:允许重复和空值。
(2)唯一索引:不允许出现重复。可以有多个唯一索引。
(3)主键索引:非空,唯一。删除时drop primary key;
(4)复合索引:将多个列组合作为索引。?
(5)全文索引:可重复和空值,在char,varchar,text创建。
where match(列名)against (‘查找内容’);
(6)空间索引:对空间数据类型的列建立的索引。

创建索引:
create 【索引类型】index 索引名 on 表名 (创建索引的列);
或者创建表时之间在列后面加上索引类型。
或者修改表alter table 表名 add index 索引名 (索引列);
删除索引:drop index 索引名;
查看索引:show index from 表名;
4.数据库备份和恢复
1.使用mysqldump命令备份数据库
mysqldump -u -p 数据库名>备份数据库位置及名字;
表数据导出到文本文件
select *from 表名 where 查询条件 into outfile 备份数据库位置及名字;

2.使用mysql命令恢复数据库(先创建新的数据库)
mysql -u -p 新创建数据库名<所要恢复数据库位置及文件名;
source命令恢复数据库
source 数据库备份文件;

新建用户

#创建本地用户

CREATE USER `user`@`localhost` IDENTIFIED BY '123123';

#用户可登陆任何远程主机,使用通配符%

CREATE USER `user2`@`123%` IDENTIFIED BY '123123';

#对用户进行全部权限授权

GRANT ALL ON mysql.`user` TO `user2`@`123%`;

#对已创建的用户授权

GRANT SELECT,INSERT ON mysql.`user` TO `user2`@`123%`; 

#创建用户时授权

GRANT SELECT,INSERT ON mysql.`user` TO `user_2`@`123%` IDENTIFIED BY '123123';

#删除用户user2(使用删除语句时必须拥有数据库全局权限或select权限)

DROP USER `user2`@`123%`;

DROP USER `user_2`@`123%`;

DROP USER `user`@`localhost`;

#mysqladmin修改超级用户user2账户密码(mysqladmin命令在cmd中使用,只能修改超级用户密码)

mysqladmin -u root -p PASSWORD "123456";

#修改当前登录用户密码

SET PASSWORD =PASSWORD("123456");

#修改其他用户密码

SET PASSWORD FOR `user2`@`123%`=PASSWORD("123456");

在这里插入图片描述

推荐学习:mysql视频教程

以上是爆肝整理MySQL数据库命令合集(总结分享)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何用PHP开发问答社区平台 PHP互动社区变现模式详解 如何用PHP开发问答社区平台 PHP互动社区变现模式详解 Jul 23, 2025 pm 07:21 PM

1.PHP开发问答社区首选Laravel MySQL Vue/React组合,因生态成熟、开发效率高;2.高性能需依赖缓存(Redis)、数据库优化、CDN和异步队列;3.安全性必须做好输入过滤、CSRF防护、HTTPS、密码加密及权限控制;4.变现可选广告、会员订阅、打赏、佣金、知识付费等模式,核心是匹配社区调性和用户需求。

mysql公共表表达式(CTE)示例 mysql公共表表达式(CTE)示例 Jul 14, 2025 am 02:28 AM

CTE是MySQL中用于简化复杂查询的临时结果集。它在当前查询中可多次引用,提升代码可读性和维护性。例如,在orders表中查找每个用户的最新订单时,可通过CTE先获取每个用户的最新订单日期,再与原表关联获取完整记录。相比子查询,CTE结构更清晰,逻辑更易调试。使用技巧包括明确别名、串联多个CTE以及利用递归CTE处理树形数据。掌握CTE能使SQL更优雅高效。

为MySQL表中的列选择适当的数据类型 为MySQL表中的列选择适当的数据类型 Jul 15, 2025 am 02:25 AM

insetTingUpmysqltables,选择theStherightDatatatPesisionCrucialForeffifeffifeffifeffificeFifeffifeFrifeFifeScalible

mysql临时表与内存表 mysql临时表与内存表 Jul 13, 2025 am 02:23 AM

临时表是作用范围有限的表,内存表是存储方式不同的表。临时表在当前会话中可见,连接断开后自动删除,可使用多种存储引擎,适合保存中间结果、避免重复计算;1.临时表支持索引,多个会话可创建同名表且互不影响;2.内存表使用MEMORY引擎,数据存储在内存中,重启丢失,适合缓存高频访问的小数据集;3.内存表支持哈希索引,不支持BLOB和TEXT类型,需注意内存占用;4.临时表生命周期限于当前会话,内存表为所有连接共享。选择时应根据数据是否私有、是否需要高速访问及能否容忍丢失来决定。

在MySQL中设置半同步复制 在MySQL中设置半同步复制 Jul 15, 2025 am 02:35 AM

MySQL半同步复制设置步骤如下:1.确认版本支持并加载插件;2.开启并启用半同步模式;3.检查状态和运行情况;4.注意超时设置、多从库配置及主从切换处理。需确保MySQL5.5及以上版本,安装rpl_semi_sync_master和rpl_semi_sync_slave插件,分别在主从库启用对应参数,并在my.cnf中配置自动加载,设置完成后重启服务,通过SHOWSTATUS检查状态,合理调整超时时间并监控插件运行情况。

将MySQL部署自动化为代码 将MySQL部署自动化为代码 Jul 20, 2025 am 01:49 AM

要实现MySQL部署自动化,关键在于选用Terraform定义资源、Ansible管理配置、Git进行版本控制,并强化安全与权限管理。1.使用Terraform定义MySQL实例,如AWSRDS的版本、类型、访问控制等资源属性;2.通过AnsiblePlaybook实现数据库用户创建、权限设置等细节配置;3.所有配置文件纳入Git管理,支持变更追踪与协作开发;4.避免硬编码敏感信息,使用Vault或AnsibleVault管理密码,并设置访问控制与最小权限原则。

列的mysql不正确的字符串值 列的mysql不正确的字符串值 Jul 15, 2025 am 02:40 AM

MySQL报错“incorrectstringvalueforcolumn”通常是因为字段字符集不支持四字节字符如emoji。1.错误原因:MySQL的utf8字符集仅支持三字节字符,无法存储四字节的emoji;2.解决方法:将数据库、表、字段及连接统一改为utf8mb4字符集;3.还需检查:配置文件、临时表、应用层编码及客户端驱动是否均支持utf8mb4;4.替代方案:若无需支持四字节字符,可在应用层过滤emoji等特殊字符。

如何用PHP开发商品推荐模块 PHP推荐算法与用户行为分析 如何用PHP开发商品推荐模块 PHP推荐算法与用户行为分析 Jul 23, 2025 pm 07:00 PM

收集用户行为数据需通过PHP记录浏览、搜索、购买等信息至数据库,并清洗分析以挖掘兴趣偏好;2.推荐算法选择应根据数据特征决定:基于内容、协同过滤、规则或混合推荐;3.协同过滤在PHP中可实现为计算用户余弦相似度、选K近邻、加权预测评分并推荐高分商品;4.性能评估用准确率、召回率、F1值及CTR、转化率并通过A/B测试验证效果;5.冷启动问题可通过商品属性、用户注册信息、热门推荐和专家评价缓解;6.性能优化手段包括缓存推荐结果、异步处理、分布式计算与SQL查询优化,从而提升推荐效率与用户体验。

See all articles