MySQL进阶
MySQL查询
一、事务
性质:
1.原子性:c操作是不可分割的,最小单位,在MySQL当中默认一个SQL语句就是一个事务,一个原子
2.一致性
3.夺隔离性
4.夺持久性
什么时候使用事务:
如果有多个操作,我们需要保证数据的安全性,要么都执行成功要么都执行失败,就是使用事务,
但事务会增加执行时间,降低执行效率,但是会保证安全
效率换安全:
文章,新闻,快速浏览的信息(数据不需要保证安全,讲究读取效率)
转账,订单(要安全)
BEGIN; // 开始事务
UPDATE `account` SET `money` = `money` - 100 WHERE `id` = 2;
UPDATE `account` SET `money` = `money` + 100 WHERE `id` = 1;
COMMIT; // 提交保存
查询所有数据
SELECT * FROM `表名`; // SELECT 后面跟上要查询的字段, * 号代表所有字段,一般来说,查询所有字段最耗时长的,所以今后查询数据尽可能按需所取
SELECT `字段`,`字段`,`字段` FROM `表名`;
SELECT `字段`,`字段` FROM `表名` WHERE `字段` = 条件 , `字段` = 条件;
取别名:
SELECT `s` . * FROM `表名` AS `S`; // 取别名
模糊查询:
SELECT * FROM `表名` WHERE `name` LIKE `%i%`;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-njf9rsTi-1660018607390)(C:\Users\25397\AppData\Roaming\Typora\typora-user-images\image-20220417012916828.png)]
SELECT * FROM `Rank` AS `R` INNER JOIN `Emplpyee` AS `E`ON`R`.`RankID` = `E`.`RankID`; // 内连接
SELECT * FROM `Rank` AS `R` LEFT JOIN `Emplpyee` AS `E` NO `R`.`RankID` = `E`.`RankID`; // 左连接
SELECT * FROM `Rank` AS `R` RIGHT JOIN `Emplpyee` AS `E` NO `R`.`RankID` = `E`.`RankID`; // 右连接
SELECT * FROM `Rank` UNION SELECT * FROM `Emplpyee`; // 全连接
排序:
SELECT * FROM `表名` AS `别名` ORDER BY `别名` // 升序排序
SELECT * FROM `表名` AS `别名` ORDER BY `别名` DESC // 降序
SELECT * FROM `表名` AS `别名` ORDER DY `别名` DESC LIMIT 3
// 显示前三行
MySQL函数:ABS,MAX,MIN,ROUND,AVG,SUM等
SELECT AVG(`字段`) FROM `表名` // 查询字段的平均值
ALTER TABLE `表名` ADD INDEX `索引名`(`字段`);
ELECT AVG(`字段`) FROM `表名` // 查询字段的平均值
ALTER TABLE `表名` ADD INDEX `索引名`(`字段`);