当前位置:网站首页>MySQL数据库(四)事务和函数
MySQL数据库(四)事务和函数
2022-07-06 09:25:00 【手可摘鑫晨】
1,事务
概念:就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行。
2,事务的原则
3,实现事务的方法
4,实现事务的步骤
-- 事务的操作
-- 1,关闭自动提交
SET autocommit = 0;
-- 2,开启事务
START TRANSACTION;
-- 3,执行一组SQL语句
update bank set bmoney = bmoney-1000 where bname='马智';
update bank set bmoney = bmoney+1000 where bname='刘鑫淼';
-- 4,结束事务
-- 4.1 提交
COMMIT;
-- 4.2 回滚
ROLLBACK;
SET autocommit = 1;
5,MySQL的四种隔离级别
(1)Read Uncommitted(读取未提交内容)也称“脏读”
(2)Read Committed(读取提交内容 也叫做不可重复读)
(3)Repeatable Read(可重读)新增对应“幻读”
(4)Serializable(可串行化)
-- 查看当前隔离级别
select @@global.transaction_isolation,@@transaction_isolation;
6,MySQL函数
函数名 | 返回值 |
---|---|
curdate() | 返回当前的日期 |
curtime() | 返回当前的时间 |
now() | 返回当前的日期和时间 |
date_format(date,fmt) | 依照指定的fmt格式格式化日期date值 |
year(date) | 返回日期date的年份(1000~9999) |
month(date) | 返回date的月份值(1~12) |
day(date) | 返回date的日 |
# 函数
-- 必须出现在SQL语句中,不能单独出现
-- 日期函数
SELECT CURDATE();
SELECT CURTIME();
SELECT NOW();
SELECT DAYOFWEEK(NOW()) - 1 星期;
-- 请查询当月过生日的学生
SELECT * FROM student WHERE MONTH(birthday) = MONTH(NOW());
-- 格式化日期
SELECT DATE_FORMAT(NOW(),'%Y-%c-%d');
7,计算日期的差值
-- 时间差(天数)
SELECT DATEDIFF(NOW(),'2022-5-1');
-- 时间差计算日期
-- + 多长时间以后的日期 - 多长时间以前的日期
SELECT NOW() + INTERVAL 14 DAY;
SELECT * FROM student WHERE MONTH(birthday) = MONTH(NOW());
8,常用的字符串函数
函数名 | 返回值 |
---|---|
concat(s1,s2...sn) | 将s1,s2...,sn连接成字符串 |
concat_ws(sep,s1,s2...sn) | 将s1,s2...,sn连接成字符串,并用sep 字符间隔 |
-- 字符串函数
SELECT CONCAT('hello','你好');
SELECT CONCAT_WS('!','hello','你好');
8,常用数学函数
函数名 | 返回值 |
---|---|
ceiling(x) | 返回大于x的最小整数值 |
floor(x) | 返回小于x的最大整数值 |
round(x,y) | 返回参数x的四舍五入的有y位小数的值 |
truncate(x,y) | 返回数字x截短为y位小数的结果 |
-- 向上取整
SELECT CEILING(68.15);
-- 向下取整
SELECT FLOOR(68.15);
-- 四舍五入
SELECT ROUND(68.55,1);
-- 截断
SELECT TRUNCATE(68.55,1);
-- 聚合函数
SELECT ssex,COUNT(*),GROUP_CONCAT(sname) FROM student GROUP BY ssex;
9,慢查询
概念:MySQL默认10秒内没有响应SQL结果,则为慢查询。
# 慢查询
select count(*) from emp;
select count(1) from emp;
select count(eid) from emp;
show create table emp;
CREATE TABLE `emp` (
`eid` bigint(20) DEFAULT NULL,
`ename` varchar(10) DEFAULT NULL,
`esex` varchar(5) DEFAULT NULL,
`ebirthday` datetime DEFAULT NULL,
`ehisday` datetime DEFAULT NULL,
`job` varchar(15) DEFAULT NULL,
`emoney` decimal(10,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
-- 查看连接数
show status like 'connections';
-- 慢查询的状态 OFF 关闭 ON 开启
Show variables like '%slow_query%';
-- 开启慢查询
set global slow_query_log='ON';
set global log_output='TABLE';
-- 慢查询的次数
show status like 'slow_queries';
select * From mysql.slow_log ;
select convert(sql_text using utf8) sql_text from mysql.slow_log
ALL:这个连接类型对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,应该尽量避免。
explain select eid,ename,esex,ebirthday,ehisday,job ,emoney
from emp where eid = 20000;
10,索引
概念:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
特点:
(1)高效性:利用索引可以提高数据库的查询效率。
(2)完整性:用户可以加速表和表之间的连接, 实现表与表之间的参照完整性。
(3)唯一性 :索引可以确保所查的数据的唯一性。
(4)特殊能力 :通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统性能。
缺点:
(1)虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、
11,索引的分类
(1)主键索引 在数据库关系图中为表定义一个主键将自动创建主键索引。
(2)唯一索引 不允许具有索引值相同的行,从而禁止重复的索引或键值。
(3)常规索引 最基本的索引类型,没有唯一性之类的限制。
(4)全文索引 搜索引擎的关键技术,用于检索文本信息,可以是词语或者段落。
alter table emp add primary key (eid);
explain select eid,ename,esex,ebirthday,ehisday,job ,emoney
from emp where eid = 44040;
explain select * from emp where ename = '韦崔'
-- 添加常规索引
alter table emp add index(ename);
create table wenzhang(
wid int PRIMARY KEY auto_increment,
title varchar(20),
content text,
zuozhe varchar(20),
FULLTEXT(title,content,zuozhe) with parser ngram
);
insert into wenzhang(title,content,zuozhe)
values
('西安往事','这是一个古老的城市,在这个城市中有很多的人,工厂,建筑物','老薛'),
('山西往事','这是一个古老的城市,这里有很多的人,工厂,建筑','老许'),
('地球往事','这是一个古老的星球,这里有很多的人','老刘在西安'),
('银河往事','这是一个系,打算在这个系之外造一个西安','小彭');
-- 是一种模糊查询
select * from wenzhang where match(title,content,zuozhe) AGAINST('西安');
select * from wenzhang where match(title,content) AGAINST('西安');
alter table wenzhang add fulltext(title,content) with parser ngram;
-- 查看索引
show index from student;
cardinality / count(*) 越接近1 越好 越接近0 越差
show index from emp;
边栏推荐
- 数字电路基础(二)逻辑代数
- [Ogg III] daily operation and maintenance: clean up archive logs, register Ogg process services, and regularly back up databases
- 如何成为一个好的软件测试员?绝大多数人都不知道的秘密
- [pointer] use the insertion sorting method to arrange n numbers from small to large
- Daily code 300 lines learning notes day 9
- 数字电路基础(一)数制与码制
- Global and Chinese market of barrier thin film flexible electronics 2022-2028: Research Report on technology, participants, trends, market size and share
- Es full text index
- Function: calculates the number of uppercase letters in a string
- What is an index in MySQL? What kinds of indexes are commonly used? Under what circumstances will the index fail?
猜你喜欢
全网最详细的postman接口测试教程,一篇文章满足你
"If life is just like the first sight" -- risc-v
About the garbled code problem of superstar script
自动化测试中敏捷测试怎么做?
Nest and merge new videos, and preset new video titles
How to rename multiple folders and add unified new content to folder names
CSAPP家庭作业答案7 8 9章
ucore lab7 同步互斥 实验报告
软件测试面试要问的性能测试术语你知道吗?
Get started with Matplotlib drawing
随机推荐
软件测试面试回答技巧
1. Payment system
In Oracle, start with connect by prior recursive query is used to query multi-level subordinate employees.
Wang Shuang's detailed notes on assembly language learning I: basic knowledge
[oiclass] maximum formula
Fundamentals of digital circuit (IV) data distributor, data selector and numerical comparator
Numpy Quick Start Guide
CSAPP homework answers chapter 789
Réponses aux devoirs du csapp 7 8 9
{1,2,3,2,5} duplicate checking problem
Function: calculates the number of uppercase letters in a string
[pointer] find the largest string
Global and Chinese markets for GaN on diamond semiconductor substrates 2022-2028: Research Report on technology, participants, trends, market size and share
Fundamentals of digital circuit (V) arithmetic operation circuit
UCORE lab8 file system experiment report
Practical cases, hand-in-hand teaching you to build e-commerce user portraits | with code
Wang Shuang's detailed learning notes of assembly language II: registers
MySQL development - advanced query - take a good look at how it suits you
How to rename multiple folders and add unified new content to folder names
Global and Chinese markets of electronic grade hexafluorobutadiene (C4F6) 2022-2028: Research Report on technology, participants, trends, market size and share