当前位置:网站首页>Mysq_Note4
Mysq_Note4
2022-08-11 02:02:00 【小Pawn爷】
1.科学计算,字符串处理,和条件判断
1.1数学函数
| 1 | 2 |
|---|---|
| ROUND(X,D) | X 表示要处理的数,D 表示保留的小数位数,处理的方式是四舍五入。ROUND(X) 表示保留 0 位小数 |
| CEIL() | 向上取整 |
| FLOOR() | 向下取整 |
| ABS() | 绝对值 |
| MOD() | 取余 |
注意:
1.round(x,0)中的x为负数时五入的值会更小,四舍得值会更大
1.2字符函数
| 函数 | 含义 |
|---|---|
| concat(s1,s2) | 表示把字符串 s1、s2……拼接起来,组成一个字符串 |
| cast(表达式 as char) | 表示将表达式的值转换成字符串 |
| char_length(字符串) | 表示获取字符串的长度 |
| space | 表示获取一个由n个空格组成的字符串 |
注意:
1,每个汉字打印的时候占两个字符长度,但是这个函数获取的是汉字的个数
1.3条件判断函数
| 函数 | 含义 |
|---|---|
| ifnull(v1,v2) | 表示如果 V1 的值不为空值,则返回 V1,否则返回 V2 |
| if(表达式,v1,v2) | 如果表达式为真(TRUE),则返回 V1,否则返回 V2 |
| isnull(字段) | 判断字段是否为空 |
1.4思考题
1.如果不用 FLOOR()计算会员积分,有没有其他办法来实现会员积分的计算
以假设actualvalue>=0,这样的话就可以使用求余函数MOD来代替FLOOR:
FLOOR(acutalvalue)替换成actualvalue - MOD(actualvalue,1)
2.索引
2.1定义
相当于图书馆的检索目录,它是帮助MySQL系统快速检索数据的一种存储结构
2.2优点
我们可以在索引中按照查询条件,检索索引字段的值,然后快速定位数据记录的位置,这样就不需要遍历整个数据表
2.3单字索引
创建单字索引
方法一
create index 索引名 on table 表名 (字段);
方法二
create table 表名(
字段 数据类型,
{
index | key }索引(字段)
)
方法三
alter table 表名 add {
index | key} 索引名 (字段)
单字段索引的作用原理
EXPLAIN SELECT
quantity,price,transdate
FROM
demo.trans
WHERE
transdate > '2020-12-12'
AND transdate < '2020-12-13'
AND itemnumber = 100
| 字段 | 含义 | 解释 |
|---|---|---|
| id | 1 | |
| select_type | simple | |
| table | trans | |
| partitions | null | |
| type | range | 使用索引查询特定范围的数据记录 |
| possible_keys | index_trans | 可以选择的索引是 index_trans |
| key | index_trans | 实际选择的索引是 index_trans |
| key_len | 6 | |
| ref | NULL | |
| rows | 5411 | 表示需要读取的记录数 |
| filtered | 10.00 | |
| extra | Using index condition; Using where; Using MRR | 第一个是执行时使用了索引 第二个是执行时通过 WHERE 条件筛选 第三个是使用了顺序磁盘读取的策略 |
注意
1.在选择索引字段的时候,要选择那些经常被用做筛选条件的字段
2.1.如果有多个索引,而这些索引的字段同时作为筛选字段出现在查询中的时候,MySQL 会选择使用最优的索引来执行查询操作
2.4组合索引
创建组合索引
方法一
create index 索引 on 表名(字段1,字段2,...)
方法二
create table 表名(
字段 数据类型,
{
index | key }索引名(字段1,字段2,...)
)
方法三
alter table 表名 add {
index | key} 索引 (字段1,字段2,...)
组合段索引的作用原理
1.组合索引的多个字段是有序的,遵循左对齐的原则 , 筛选的条件也要遵循从左向右的原则,如果中断,那么断点后面的条件就没有办法利用索引了
2.如果筛选的是一个范围,如果没有办法无法精确定位也相当于中断索引的使用
3.如果只用组合索引的一部分,效果没有单字段索引那么好
4.MySQL 最多支持由 16 个字段组成的组合索引
2.5总结
删除索引
DROP INDEX 索引名 ON 表名;
删除主键索引
ALTER TABLE 表名 DROP PRIMARY KEY;
优缺点
| 优点 | 缺点 |
|---|---|
| 提升查询的效率 | 索引需要单独占用存储空间 |
| 数据操作上的开销 |
2.6思考
1.假如我有一个单品销售统计表,包括门店编号、销售日期(年月日),商品编号,销售数量,销售金额,成本,毛利,而用户经常需要对销售情况进行查询,你会对这个表建什么样的索引呢为什么?
我会选择门店编号,销售日期,商品编号,销售金额这些字段分别创建索引,理由是这些字段经常会被用作筛选条件
3.事务
3.1定义
DML 操作 : Data Manipulation Language 的缩写,包括 SELECT、INSERT、UPDATE 和 DELETE
start transaction begin (开始事务)
一组DML语句
commit (提交事务)
rollback (事务回滚)
3.2 事务的四种特性
| 特性 | 含义 |
|---|---|
| 原子性(atomicity) | 事务中的操作要么全部执行,要么全部不执行 |
| 一致性(consistency) | 表示数据的完整性不会因为事务的执行而破坏 |
| 隔离性(isolation) | 不同事务之间互不干扰 |
| 持久性(durability) | 事务对数据的修改是永久有效的 |
注意
1.事务中即使有错误的语句,任然往下执行
- row_count为-1表示sql执行失败
示例
delimiter //
create procedure demo.mytest()
begin
--定义sql操作发生错误时自动回滚
declare exit handle for sqlexception rollack
--开始事务
start transaction
insert into demo.mytrans values(1,5);
UPDATE demo.inventory SET invquantity = invquantity - 5;
commit;
end
//
delimiter ;
3.3事务的隔离性
| 隔离等级 | 含义 |
|---|---|
| read uncommited | 可以读取事务中还未提交的被更改的数据 |
| read commited | 只能读取事务中已经提交的被更改的数据 |
| repeatable read | 表示一个事务中,对一个数据读取的值,永远跟第一次读取的值一致,不受其他事务中数据操作的影响.这也是 MySQL 的默认选项 |
| 表示任何一个事务,一旦对某一个数据进行了任何操作,那么,一直到这个事务结束,MySQL 都会把这个数据锁住,禁止其他事务对这个数据进行任何操作 |
注意
1.涉及到金额,建议采用最高级别SERIALIZABLE
2.不支持DDL语句进行事务回滚
3.read committed甚至于read uncommitted,可以用于展示大量数据的应用中,这样的场景中数据一致性的重要性较低,但可以节省锁的开销,提高查询的效率, repeatable read主要用于关键数据的处理,比如并发的数据修改操作,一般要用到repeatable read,甚至是serializable
3.4 思考题
1.事务就是确保事务中的数据操作,要么全部正确执行,要么全部失败,你觉得这句话对吗?为什么
这种说法是不对的,事务会确保事务处理中的操作要么全部执行,要么全部不执行,执行中遇到错误,是继续还是回滚,则需要程序员来处理
边栏推荐
- 微信公众号后台管理
- 【备战“金九银十”】2022年软件测试面试题最新汇总
- sql 使用到where和groupby时到底怎么建立索引?
- Construction inspection, no rules and no square
- ARM开发(四)新手小白如何阅读芯片手册,裸机驱动开发步骤以及纯汇编实现点灯,汇编结合c点灯,c实现点灯
- 软件测试面试题:性能测试工作?
- 21. Aliyun oss
- 14.cuBLAS开发指南中文版--cuBLAS中的Level-1函数nrm2()和rot()
- Engineering Design of Single-sided PCB Routing Impedance
- 一言(ヒトコト)Hitokoto API
猜你喜欢

Gaussian beam focused by thermal lens
![MySQL Basics [Part 1] | Database Overview and Data Preparation, Common Commands, Viewing Table Structure Steps](/img/61/bebf5661ef1013e233e8d32c79f9ae.png)
MySQL Basics [Part 1] | Database Overview and Data Preparation, Common Commands, Viewing Table Structure Steps

This Thursday evening at 19:00, Lesson 5 of the sixth phase of knowledge empowerment丨OpenHarmony WiFi subsystem

第二课第一周第4-6节 医学预后案例欣赏+作业解析

深度解析:什么是太爱速M抢单模式?

MySQL - 一条SQL在MySQL中是如何被执行的?

Lianshengde W801 series 6-Analyze the Bluetooth communication source code of W801 from the perspective of WeChat applet (indicate method)

Matlab矩阵(数组)元素过滤常见方法详解

Engineering Design of Single-sided PCB Routing Impedance

Please talk about for...in and for...of in JS (below)
随机推荐
JVM类加载机制
进程间通信方式(1)无名管道(全CSDN最用心的博主)
gRPC闭包调度器
How to create an index when sql uses where and groupby?
【开源】壁纸软件,给自己电脑设计专属特效
【微波工程学习记录1】功率分配器和定向耦合器
Shengxin experiment record (part2)--tf.reduce_sum() usage introduction
Js prototype and prototype chain and prototype inheritance
88Q2110 access C45 phy address through C22
想进阿里?先来搞懂一下分布式事务
本周四晚19:00知识赋能第六期第5课丨OpenHarmony WiFi子系统
2022年PMP报考指南
std::format格式化自定义类型
隐私计算融合应用研究
数据的存储(下)——浮点型在内存中的存储
How to realize the repeatable design of FPGA
软件测试面试题:Web服务器指标指标?
3342: String manipulation problem solving
进程间通信方式(2)有名管道
[Detailed explanation of C data storage] (1) - in-depth analysis of the storage of shaping data in memory