MySQL手册 4

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL手册

name是表名

where后面跟的是条件

where中的运算符

=等于

<>不等于

>大于

<小于

>=大于等于

<=小于等于

!=不等于

where中的逻辑运算符

and多个条件必须都等于true

right join

会从右表中返回所有的值,即使左表中没有匹配

自连接

😀自己的表和自己的表连接 核心:一张表拆成两张一样的表

WHERE 子句

1 select * from name where id=1;#查询namename字段id=1的值

2 select * from name where age>16;#查询namename字段id大于16的值

3 select * from name where name='小乐' and age=18;#查询name字段等于小乐并且age等于18的值

4 select * from name where name='小乐' or age=18;#查询name字段等于小乐或者age等于18的值

5 select * from name where not name='小乐';#查询除了name字段等于小乐的所有值

6 select * from name where name like '%%';#查询name字段中包含乐的值

7 select * from name where age in (18,11);#查询age字段中包含18 11 的值or一个条件等于true就行

not 反逻辑 筛选不满足条件的

where特殊条件

between 在某个范围

like模糊查询

in指定多个值

更新数据

如果需要更新MySQL数据可以使用update来更新

1 update name set name='马小乐' where id=3;#把字段id为3的name值修改成马小乐
2 update name set name='小乐', age=99 where id=3;#把字段id为3的值的name和age
同时修改

数据分页和 排序

1 #分页 limit
2 分页的好处
3 缓解数据库压力 给人的体验更好 
4 select * from table_name limit [offset,] rows
5 offset:指定第一个返回记录行的偏移量(即从哪一行开始返回),注意:初始行的偏移量为0。 开始查询
的下标
6 rows:返回具体行数。
7 select * from 表名 limit 10;检索前10条数据
8 select * from 表名 limit 1 10 检索 1 , 10 从第2行开始检索10条数据
9
10 #排序
11 升序 asc
12 降序 desc
13 select * from name order by age asc;#按照id值从小到大排序
14 select * from name order by age desc;#按照id值从大到小排序

asc从小到大排序

desc从大到小排序

子查询和嵌套查询

1 #子查询
2 在where语句中嵌套一个子查询语句
3

数据分组

1 select name, count(*) from name group by name;
2 select 显示的字段, count(*) from 表名 group by 字段;

正则表达式

1 select * from name where name regexp '^小';#查询以小开头的数据
2 select * from name where name regexp '乐&';#查询以可结尾的时间
3 select * from name where name regexp '小';#查询包含小的
4 select * from name where age regexp '^1|9$';#查询age字段以1开头或9结尾的数据
5 select * from name where name regexp '[爱小]';#匹配包含爱或者小的字符
6 select * from name where name regexp '[^爱乐]';#匹配为包含爱乐的所有字符
7
8

^匹配字符串开始的位置

$匹配字符串结束的位置

.匹配单个字符

[...]字符集合 匹配所包含的任意一个字符

|或

*匹配所有

+匹配前面的表达式一次或者多次

{n}匹配n次

{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

MySQL常用函数

1 数学运算
2
3 ABS #返回数的绝对值
4 MySQL [test-txt]> select abs(-1);
5 +---------+
6 | abs(-1) |
7 +---------+
8 | 1 |
9 +---------+
10 1 row in set (0.02 sec)
11
12 #CEILING 向上取整
13 MySQL [test-txt]> select ceiling(5.5);
14 +--------------+
15 | ceiling(5.5) |
16 +--------------+
17 | 6 |
18 +--------------+
19 1 row in set (0.02 sec)
20
21 FLOOR #向下取整
22 MySQL [test-txt]> SELECT FLOOR(5.5);
23 +------------+
24 | FLOOR(5.5) |
25 +------------+
26 | 5 |
27 +------------+
28 1 row in set (0.03 sec)
29
30 RAND #返回一个0-1之间的随机数
31 MySQL [test-txt]> select rand();
32 +--------------------+
33 | rand() |
34 +--------------------+
35 | 0.9333476274584863 |
36 +--------------------+
37 1 row in set (0.02 sec)
38
39
40 SIGN #判读一个数的符号 正数返回1 负数返回-1
41 MySQL [test-txt]> select sign(100);
42 +-----------+
43 | sign(100) |
44 +-----------+
45 | 1 |
46 +-----------+
47 1 row in set (0.02 sec)
48
49 MySQL [test-txt]> select sign(-100);
50 +------------+
51 | sign(-100) |
52 +------------+
53 | -1 |
54 +------------+
55 1 row in set (0.02 sec)
56
57 字符串函数 
58
59 CHAR_LENGTH #返回一串字符串长度
60
61 MySQL [test-txt]> SELECT CHAR_LENGTH('xiaole521') as '字符串长度';
62 +-----------------+
63 | 字符串长度 |
64 +-----------------+
65 | 9 |
66 +-----------------+
67 1 row in set (0.02 sec)
68
69 CONCAT#拼接字符串
70 MySQL [test-txt]> SELECT CONCAT('爱','小','乐') AS '拼接字符串';
71 +-----------------+
72 | 拼接字符串 |
73 +-----------------+
74 | 爱小乐 |
75 +-----------------+
76 1 row in set (0.02 sec)
77
78
79 LOWER #把大写字母转小写
80 MySQL [test-txt]> SELECT LOWER('XiaoLe');
81 +-----------------+
82 | LOWER('XiaoLe') |
83 +-----------------+
84 | xiaole |
85 +-----------------+
86 1 row in set (0.02 sec)
87
88
89 UPPER #把小字母转大写
90 MySQL [test-txt]> SELECT UPPER('XiaoLe') as '转大写';
91 +-----------+
92 | 转大写 |
93 +-----------+
94 | XIAOLE |
95 +-----------+
96 1 row in set (0.02 sec)
97
98 INSTR #返回第一个子串的位置(下标)
99 MySQL [test-txt]> SELECT INSTR('xiaole','a');
100 +---------------------+
101 | INSTR('xiaole','a') |
102 +---------------------+
103 | 3 |
104 +---------------------+
105 1 row in set (0.02 sec)
106
107 REPLACE #替换指定字符串
108 MySQL [test-txt]> SELECT REPLACE('爱小乐','爱','超级') as '替换指定字符串';
109 +-----------------------+
110 | 替换指定字符串 |
111 +-----------------------+
112 | 超级小乐 |
113 +-----------------------+
114 1 row in set (0.02 sec)
115
116 SUBSTR #返回指定字符串 从1开始的 SUBSTR('要截取的字符串',截取的位置,要截取的长度)
117 mysql> SELECT SUBSTR('超级爱小乐',1,4) AS '返回指定字符串';
118 +-----------------------+
119 | 返回指定字符串 |
120 +-----------------------+
121 | 超级爱小 |
122 +-----------------------+
123 1 row in set (0.01 sec)
124
125
126 REVERSE #反转字符串 REVERSE('要反转的字符串');
127 mysql> SELECT REVERSE('超级爱小乐');
128 +----------------------------+
129 | REVERSE('超级爱小乐') |
130 +----------------------------+
131 | 乐小爱级超 |
132 +----------------------------+
133 1 row in set (0.01 sec)
134

SQL语句的分类数据定义语句(DDL)

1 创建------->create
2 修改-------->alter
3 删除-------->drop

数据操纵语句(DML)

主要是对表数据的插入更新删除

1 插入------>insert
2 更新------>update
3 删除=----->delete

事务控制语句(TCL)

主要是对数据库中"事务"进行管理

1 提交----->commit
2 回滚----->rollback

数据查询语句(DQL)

1 查询----->select

事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删

除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文

章等等,这样,这些数据库操作语句就构成一个事务!在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。

事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全

部不执行。

事务用来管理 insert,update,delete 语句

一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割

性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性

(Durability)。

原子性:

一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中

间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,

就像这个事务从来没有执行过一样。

一致性:

在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完

全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成

预定的工作。

隔离性:

数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务

并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交

(Read uncommitted)、读提交(read committed)、可重复读(repeatable

read)和串行化(Serializable)。

持久性:

事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行

COMMIT 操作。因此要显式地开启一个事务务须使用命令 BEGIN 或 START

TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动

提交。

事务控制语句:

BEGIN 或 START TRANSACTION 显式地开启一个事务;

COMMIT 也可以使用 COMMIT WORK,不过二者是等价的。COMMIT 会提交事务,

并使已对数据库进行的所有修改成为永久性的;

ROLLBACK 也可以使用 ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事

务,并撤销正在进行的所有未提交的修改;SAVEPOINT identifier,SAVEPOINT 允许在事务中创建一个保存点,一个事务中可以

有多个 SAVEPOINT;

RELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行

该语句会抛出一个异常;

ROLLBACK TO identifier 把事务回滚到标记点;

SET TRANSACTION 用来设置事务的隔离级别。InnoDB 存储引擎提供事务的隔离级别

有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和

SERIALIZABLE。

MYSQL 事务处理主要有两种方法:

1、用 BEGIN, ROLLBACK, COMMIT来实现

BEGIN 开始一个事务

ROLLBACK 事务回滚

COMMIT 事务确认

2、直接用 SET 来改变 MySQL 的自动提交模式:

SET AUTOCOMMIT=0 禁止自动提交

SET AUTOCOMMIT=1 开启自动提交

1 begin;事务的开始
2 要执行的语句 #事务回滚
3 commit;#提交事务

ALTER命令

当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
存储 SQL 关系型数据库
Mysql学习手册(第一部分)
【5月更文挑战第17天】Mysql学习手册(第一部分)
75 0
|
7月前
|
存储 SQL 关系型数据库
MySQL学习手册(第一部分)
mysql日常使用记录
150 0
|
关系型数据库 MySQL 数据库
史上最全的MySQL性能手册(优化+SQL+并发+数据库)
史上最全的MySQL性能手册(优化+SQL+并发+数据库)
|
存储 关系型数据库 MySQL
MySQL手册 2
MySQL手册
110 1
|
JSON 安全 关系型数据库
MySQL 8.0 参考手册— 内置函数和运算符参考
MySQL 8.0 参考手册— 内置函数和运算符参考
109 0
|
存储 关系型数据库 MySQL
MySQL手册 3
MySQL手册
|
SQL 存储 关系型数据库
5 分钟上手 Flink MySQL 连接器实验手册|Flink-Learning 实战营
加入 Flink-Learning 实战营,动手体验真实有趣的实战场景。只需 2 小时,让您变身 Flink 实战派。实战营采取了 Flink 专家在线授课,专属社群答疑,小松鼠助教全程陪伴的学习模式。
2217 2
5 分钟上手 Flink MySQL 连接器实验手册|Flink-Learning 实战营
|
关系型数据库 MySQL
Github上标星68.5K,阿里巴巴《MySQL成长手册》火了
MySQL为什么能如此火爆? 成本,MySQL是开源的,他可以免费使用。 性能,MySQL快不快大家应该都有体会。 可靠性,超级大厂都在用它来处理重要数据,放心用就行; 简单,安装使用都非常简单
|
存储 SQL 关系型数据库
MD牛!阿里多位资深MySQL专家撰写的437页MySQL技术内幕分享手册
MySQL数据库的体系结构 MySQL由以下几部分组成: 连接池组件 管理服务和工具组件 SQL接口组件 查询分析器组件 优化器组件 缓冲(Cache)组件 插件式存储引擎 物理文件
94 0
|
SQL 关系型数据库 MySQL
MySQL手册 1
MySQL手册
220 0