导图社区 mysql数据库
这是一篇关于mysql数据库的思维导图,梳理了mysql数据库的发展历程、基本操作以及高级应用等方面的知识,有助于全面了解和学习mysql数据库。
编辑于2025-07-31 12:06:32这是一篇关于股市进阶之道的思维导图,《股市进阶之道》是一部系统阐述价值投资方法论的实战指南,通过正视投资、发现价值、理解市场三大板块,帮助投资者构建科学的投资思维。
这是一篇关于牛市简史的思维导图,主要内容包括:五次A股大牛市的比较研究,1991~1993年:资本市场探索期的第一次‘首牛’,1999~2001年:从“5·19”开启的“政策牛”,2005~2007年:基本面与改革推动的“繁荣牛”,2008~2009年:政策强刺激的“刺激牛”,2013~2015年:风格极致切换的5000点“杠杆牛”。
这是一篇关于小狗钱钱的思维导图,主要内容包括:梦想储蓄罐和梦想相册,达瑞,一个会挣钱的小男孩,表哥的挣钱之道,钱钱以前的主人,债务——爸妈犯下的错误,在金先生家,陶穆太太,巨大的危机,投资俱乐部。
社区模板帮助中心,点此进入>>
这是一篇关于股市进阶之道的思维导图,《股市进阶之道》是一部系统阐述价值投资方法论的实战指南,通过正视投资、发现价值、理解市场三大板块,帮助投资者构建科学的投资思维。
这是一篇关于牛市简史的思维导图,主要内容包括:五次A股大牛市的比较研究,1991~1993年:资本市场探索期的第一次‘首牛’,1999~2001年:从“5·19”开启的“政策牛”,2005~2007年:基本面与改革推动的“繁荣牛”,2008~2009年:政策强刺激的“刺激牛”,2013~2015年:风格极致切换的5000点“杠杆牛”。
这是一篇关于小狗钱钱的思维导图,主要内容包括:梦想储蓄罐和梦想相册,达瑞,一个会挣钱的小男孩,表哥的挣钱之道,钱钱以前的主人,债务——爸妈犯下的错误,在金先生家,陶穆太太,巨大的危机,投资俱乐部。
mysql数据库
发展史
1995年建立,之后被甲骨文收购,有收费和免费版本
mysql8.0比5.7快两倍,编码升级为utf8mb4
数据库操作
数据库对象
表
行
列
字段
字符型
文本
数值
逻辑
日期
索引
视图
虚拟表
存储过程
特定的SQL语句集合
系统数据库
information_schema数据库
数据库的名字、表、数据类型、索引
mysql数据库
储存数据库的用户、权限、管理信息
performance_schema数据库
数据库服务性能参数、资源消耗等
sys数据库
让数据库更快的了解运行
数据库操作
创建
create
查看
show
选择
use
修改
alter
删除
drop
DROP 关键字用于永久删除数据库中的表,包括表结构和所有表中的数据。
储存引擎
Innodb
优点提供了良好的事务管理、崩溃修复、并发控制
缺点是读写效率差、占用空间大
文件后缀.frm每个表合计1个
Myisam
优点占用空间小、处理速度快
缺点是不支持事务的完整性和并发性
文件后缀.frm.myd.myi每个表合计3个
Memory
优点所有数据都在内存中,处理速度快
缺点安全性较低进程守护结束后丢失、对于表的大小有要求
运算
算数运算
+、-、*、/
比较运算
=、>、<、<>、>=、<=
IS NULL、IS NOT NULL
空判断
BETWEEN AND
范围查询
IN
是否存在某个集合中
like
匹配字符串
逻辑运算
and
和
or
或
not
非
xor
异或
流程控制
if
条件判断
case
分支控制
while
循环语句
loop
没有内置的循环条件
repeat
先执行一次循环,为真执行循环体
数据类型
整数
int
取值范围0-4294967295
tinyint
取值范围0-255
smallint
取值范围0-65535
bigint
取值范围0-184467440733709551615
浮点数
float
子主题
double
时间
year
YYYY
date
YYYY-MM-DD
time
HH:MM:SS
datetime
YYYY-MM-DD HH:MM:SS
timestamp
YYYY-MM-DD HH:MM:SS
字符串
char
固定长度
varchar
可变长度
text
2的16次方
longtxt
2的32次方
set
64个成员
表操作
增
insert into 表 values (列=值)
insert into 表 set 列=值
insert into 表名[字段]select字段
删
delete from 表 where 行
DELETE 关键字确实用于从表中删除数据,但它不会永久删除表本身。
改
updata 表 set 列=值 where 行
查
select * from 表
where
列=值
in (集合)
between 1 and 10(取1-10之间的值)
like
_只匹配一个字符
%匹配一个或多个字符
is null 空值查询
and、or 多条件查询
order by
asc升序
desc降序
group by
分组
limit
限制范围
select distinct 列 from 表
去除结果中的重复行
聚合函数
count()
计数
avg()
平均值
sum()
求和
max()
最大值
min()
最小值
连接查询
内连接
select * from 表1,表2 where 表1.id = 表2.id
外连接
左链接
select * from 表1 left join 表2 on 表1.id = 表2.id
右链接
select * from 表1 right join 表2 on 表1.id = 表2.id
子查询
in
select * from 表1 where id in (select * from 表2)
比较运算
select * from 表1 where id > (select * from 表2)
select * from 表1 where id = (select * from 表2)
。。。。。。
exists
select * from 表1 where exists (select * from 表2)
如果内层没有记录,外层不查询
any
select * from 表1 where 列名 比较运算符 any(select * from 表2)
满足任意一个内层查询,外层就执行
all
select * from 表1 where 列名 比较运算符 all(select * from 表2)
满足内层查询所有结果,外层才执行
union
select * from 表1 union select * from 表2
将所有查询结果合并到一起,去除相同记录
union all
select * from 表1 union all select * from 表2
全部合并到一起,不去重
as
select * from 表1 as name
为一个表或字段取别名
regexr
select * from 表1 where name REGEXP '[1,2,3]'
匹配查询正则表达式
常用函数
数学函数
rand()
随机数
round(x)
取整数
字符串函数
length(s)
长度
left(s,n)、right(s,n)
截取字符串,S开始的N个字符
trim(s)
去除头尾的空格
locate(s1,s)
查找字符串中某字符的位置,s1在s的位置
日期和时间函数
curdate()
当前日期
now()
当前时间和日期
year(),month()
年、月
dayofyear()
本月的第几天
hour(),minute(),second()
时、分、秒
datediff(d1,d2)
D1-D2相隔天数
条件判断函数
if(expr,v1,v2)
expr成立执行V1否则V2
ifnull(v1,v2)
如果V1为空显示V1,否则显示V2
case when expr1 then v1 when wxpr2 then v2 end
如果expr1成立显示v1 wxpr2成立显示v2
系统信息函数
version()
版本号
user()
当前用户
高级操作
索引
目的
快速查询
分类
普通索引
唯一索引
UNIQUE
全文索引
FULLTEXT
单列索引
多列索引
空间索引
SPATIAL
创建索引
在建立数据库中创建索引
create table 表名 (属性名 数据类型 [约束条件] [UNIQUE | FULLTEXT | SPATIAL ] INDEX (属性名 [ asc | desc ] ) )
在已建立的数据表中创建索引
create [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名 on 字段
删除索引
drop INDEX 索引名 ON 表名
视图
目的
虚拟表查询,起到简化重复操作、提升安全性、逻辑数据独立
创建视图
create view 视图名 as select ........
视图操作
查看视图结构
DESC 表名
查询视图信息
show table status like 表名 \g
查询视图详细定义
show create view 视图名\g
修改视图
alter view 视图名 as select ......
更新视图
更新视图其实更新的还是基本表
限制较多,视图中包含数学函数count\sum\max,聚合查询,子查询等不能更新
将视图看成虚拟表,不去更新数据。
删除视图
drop view if exists 视图名
数据完整性约束
主键Primary Key
是表中每条记录的唯一标识,不能为NULL,一个表只能有一个主键。
外键Foreign Key
是表中的一个字段,它是另一个表的主键的引用,用于关联两个表,可以有多个外键。
检查check
唯一unique key
默认 default
自增 auto-increment
储存过程和储存函数
概念
在数据库中定义的一组sql语句即可,保存后可以反复调用
作用
1. 提高性能,预编译的更快
2. 减少大SQL语句传输,便于重用和封装
3. 提高安全性,不是直接操作表
储存过程
创建
create procedure 储存过程名( [IN OUT INOUT] 参数名 返回值数据类型) BEGIN .....; END
使用
CALL 储存名(参数)
储存函数
创建
create function 函数名(参数 参数数据类型) returns 返回值的数据类型 BEGIN ......; END
局部变量和全局变量
局部DEFAULT
全局@
定义变量
局部变量在 BEGIN...END中使用 declare a int default '10'
设置全局变量参数使用 @变量=1 select 函数(变量)
使用
select 函数名(参数)
触发器
作用
由基本的命令或事件触发的某种特定操作,满足触发条件,就会自动执行程序语句。
创建
create trigger 触发器名 before或after 触发事件 on 表名 for each row 执行语句
before 是在触发时间之前执行,after是在触发时间之后执行
触发事件包括insert、update、delete语句
for each row 任何一条记录满足都会触发
执行语句表示触发后执行的程序
多条语句使用BEGIN...END
NEW:在触发器中,NEW 用于引用插入或更新操作中受影响行的新值。对于插入操作,NEW 包含插入的新行的值。对于更新操作,NEW 包含更新后的行的新值。 OLD:在触发器中,OLD 用于引用更新或删除操作中受影响行的旧值。对于更新操作,OLD 包含更新前的行的旧值。对于删除操作,OLD 包含被删除行的值。
案例
CREATE TRIGGER log_trigger AFTER INSERT ON zh_xietong.dingdan_xinxi FOR EACH ROW BEGIN INSERT INTO operation_log (operation_type, table_name, primary_key_value, sql_statement) VALUES ('INSERT', 'dingdan_xinxi', NEW.dingdanid, CONCAT('INSERT INTO dingdan_xinxi VALUES (', NEW.dingdanid, ', other_values)')); END CREATE TRIGGER log_trigger AFTER DELETE ON zh_xietong.dingdan_xinxi FOR EACH ROW BEGIN INSERT INTO operation_log (operation_type, table_name, primary_key_value, sql_statement) VALUES ('DELETE', 'dingdan_xinxi', OLD.dingdanid, CONCAT('DELETE FROM dingdan_xinxi WHERE dingdanid=', OLD.dingdanid)); END
查看
show triggers
使用场景
日志审计、订单和库存多表联动更新库存
事务
作用
为了保证完整性,如果 一个单元操作失败,取消本次事务的全部操作
场景
银行转账
开启
start transaction
回滚
rollback
事务结束
commit
事件
作用
定时执行的计划任务
使用
1、开启mysql全局事件:SET GLOBAL event_scheduler = on 或者my.ini修改配置文件,修改未见后重启也是开启
2、CREATE EVENT 事件名 ON SCHEDULE EVERY 时间间隔如(如 1day 2 HOURS等) DO 执行的代码
3、删除:drop event 事件名
性能优化
分析性能
show status like 参数
查询mysql数据库性能
分析语句的性能消耗
show varlables
查询优化
分析查询语句
explain select语句
DESC select语句
索引查询
1、使用LIKE优化索引查询