0
点赞
收藏
分享

微信扫一扫

某个应用的CPU使用率居然达到100%,我该怎么办?

烟中雯城 2024-10-09 阅读 23
sql数据库

MySQL 的架构共分为两层:Server 层和存储引擎层

1、Server 层负责建⽴连接、分析和执⾏ SQL

2、存储引擎层负责数据的存储和提取, ⽀持 InnoDBMyISAMMemory 等多个存储引擎, 现在最常⽤的存储引擎是 InnoDB,其⽀持索引类型是 B+ 树索引。


数据库

创建数据库

查看数据库

删除数据库

连接到数据库(需要进入特定数据库)

修改数据库编码集


表格

创建表

查看数据库所有的表

查看具体表

删除表

通过外键约束连接在一起的表不能被删除。删除表之前,需先删除约束。

复制表

只复制表结构,不需要数据

修改表名

添加列

修改列名

修改列类型

删除列


插入数据行

注意:

1、每次插入一行,不能只插入半行或几列。

2、数据值的数据类型、精度与对应列匹配,否则MySQL可能作自动处理。

3、若列是自增列,一般不手动指定该列指定值。

4、设计表的时候指定了某列NOT NULL,但插入数据时未提供值,MySQL自动处理为一个默认值。

一次插入多行

更新数据行

删除数据行

删除表所有数据

功能类似语句DELETE FROM;

注意:

1、不能用于有外键约束的表。

2、表结构、列、约束不被改动。

3、标识列重新开始编号。

4、DELETE 按条删除数据行,TRUNCATE一次性删除数据表。

5、DELETE手动提交事务、可在事务中回滚,TRUNCATE自动提交事务、无法回滚。

查询语句

注意:

1、大小写不敏感。

2、可写为一行或多行;但关键字不能跨行。

3、子语句独立行编写

计算

定义列的别名

若别名中存在空格,需要使用引号

使用DISTINCT关键字删除重行

不能使用DISTINCT多列排除重复

限制查询行数

查询条件

预算符含义
BETWEEN …… AND……两值之间(包含)
IN(list)匹配列出的值
LIKE匹配一个字符模式
IS NULL空值
=相等
AND组合条件and
OR组合条件or
NOT条件为假返回真值

LIKE执行通配查询

查询条件可包含文字字符或数字。

% 表示0或多个字符。

_ 表示1个字符

排序

ASC:升序,默认升序

DESC:降序

ORDER BY语句必须放在SELECT语句整体最后

可使用别名排序

可使用多列排序

聚合分组

聚合函数针对进行运算的所有记录返回唯一一个结果。

分组函数group by对记录进行分组。分组函数会省略列中的空值

IFNULL函数强制分组函数包括空值

SELECT后出现聚合函数,该位置只能出现其他聚合函数分组依据列,普通列仅显示第一行值。

HAVING子句对分组进行过滤

        放在GROUP BY后面,ORDER BY 之前

语句执行顺序

①先执行FROM子句,从表中加载数据,在内存形成一张虚拟表

②若有WHERE子句,根据条件,在虚拟表中去掉不满足条件行

③根据GROUP BY子句指定的分组列,进行分组

④计算分组中SELECT子句中聚合函数值,并为每组生成查询结果中的一行

⑤若有HAVING子句,根据条件,分组计算、聚合计算的结果再次过滤

⑥若有ORDER BY子句,根据列,对结果排序

多行子查询

运算符解释
IN在子查询中
ANY其中一个值满足条件返回True
ALL其中任意值满足条件返回True

多表连接查询

类型

内连接INNER JOIN

外连接LEFT JOIN 和 RIGHT JOIN

内连接

在WHERE子句或者JOIN ON中写连接条件。利用主键与外键相等的特性。

连接查询必须指定连接条件,否则会形成笛卡尔积结果。

多表连接必须限定列名,即table.column。

外连接

LEFT JOIN中,会返回左表的所有行,即使坐标中有不符合连接条件的记录,也会在查询结果中显示。RIGHT JOIN相似。


约束

数据类型

类型精度范围与格式用途
INT(n)(-2147483648, 2147483647)(0,4294967295)整数
CHAR(n)

0 - 255

字符型定长字符
VARCHAR(n)0 - 65535字符型不定长字符
FLOAT(-3.40E-38,3.40E+38)7位小数单精度浮点数
TEXT0 - 65535文本型大容量文本
BLOB65K二进制文件二进制大对象

定长字符串:长度固定;实际字符不足时,空格补齐;

变长字符串:最长长度固定;实际长度根据实际存储值确定;

日期和时间类型

类型格式范围
YEARYYYY1901-2155
DATEYYYY-MM-DD1000-01-01 - 9999-12-31
TIMEHH:MM:SS-835:59:59 - 838:59:59
TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 - 2038
DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 - 9999-12-31 23:59:59

日期和时间类型插入示例

创建主键

1、直接在字段定义后面声明主键

2、用constraint声明主键

3、用alter语句补充声明主键

删除主键

创建外键

用于强制引用完整性。

指定外键删除或更新的行为

1、若子表试图创建一个父表中不存在的外键值,InnoDB会拒绝任何INSERT或UPDATE操作

2、若父表试图UPDATE或DELETE任何子表中存在的外键值,最终动作取决于外键约束定义中的ON UPDATE和ON DELETE选项。

InnoDB支持四种不同的动作(MyISAM),若没有指定ON UPDATE和ON DELETE,默认动作RESTRICT。

CASCADE:父表删除或更新对应行,同时自动删除或更新子表匹配的行

SET NULL:父表删除或更新对应行,同时子表外键列设为空,仅外键列未设置为NOT NULL生效;否则报错

NO ACTION:InnoDB拒绝删除或者更新父表

RESTRICT:拒绝删除或者更新父表

通过alter + constraint补充添加外键

删除外键

创建自增长

设定自增的列必须为主键,且一张表只能有一个自增列

创建唯一约束

创建非空约束

创建检查约束

Mysql原生并不支持检查越苏,对于离散值可使用setenum方式解决;对于连续值只能通过触发器解决。

创建默认值

高级特性、存储过程

变量

设置用户自定义变量

1、以@开始,形式为“@变量名”

查询变量

2、通过SELECT语句定义

使用变量

存储过程

存储在数据库目录中的一段声明性SQL语句。

优点

定义存储过程

创建成功后,若使用Navicat工具,函数一栏中会出现存储过程名。

声明变量

变量赋值

带参数的存储过程

三种模式

IN——默认模式。调用存储过程时,必须将参数传递给存储过程。IN参数值不能被改变。

OUT——可以更改OUT参数值

INOUT——可以传递参数,并在存储过程中修改INOUT参数

如:

流程控制

可以在存储过程中加入流程控制

IF判断

CASE条件

循环

循环跳出

ITERATE:类似continue

LEAVE:类似break

触发器

一种特殊的存储过程,不由用户直接调用。主要用于强制复杂的业务规则或要求。

创建

old和new的使用

使用INSERT时,原表无数据,插入数据后,新插入数据是new。

使用UPDATE时,修改原表数据的时候,原表数据是old;修改后的数据是new。

使用DELETE时,删除的那一条数据是old。

删除

查看触发器

示例:

数据库事务

事务是作为单个逻辑单元执行的一系列操作。

多个操作 作为一个整体向系统提交,要么执行、要么都不执行,事务是一个不可分割的工作逻辑单元。

特别适用多用户同时操作的数据通信系统。

InnoDB:不能结构化编程,只能通过标记开启、提交或回滚事务。

MyISAM:不支持事务,用于只读程序提高性能。

事务的特性

事务控制语句

开始事务

提交事务

对于数据库的修改是永久性的,无法回滚。

事务回滚

举报

相关推荐

0 条评论