栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL学习笔记第三天

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL学习笔记第三天

MySQL学习笔记第三天

自连接

自己的表和自己的表连接,核心:一张表拆为两张一样的表

--查询父子信息,把一张表看成两张一模一样的表
SELECt a.categoryName AS'父栏目',b.categoryName AS'子栏目'
FROM category AS a,category AS b
WHERe a.categoryid=b.pid

3.4分页和排序

排序

分页(LIMIT)和排序(ORDER BY)=====
–排序 :升序ASC、降序DESC
–语法:ORDER BY 要排序的字段名 ASC|DESC

分页

–每页只显示五条数据
–语法:LIMIT起始值,页面的大小
SELECt s.id,name,subName,score
FROM student s
RIGHT JOIN score sc
ON s.id = sc.id
INNER JOIN subject AS su
ON su.id = sc.id
ORDER BY score ASC
LIMIT 0,5

–查询java第一学年成绩排名前十的学生,并且分数要大于八十,(学号,姓名,课程名称,分数)
SELECt sc.id,name,subName,score
FROM score sc
INNER JOIN student s
ON sc.id=s.id
INNER JOIN subject su
ON sc.subNo=su.subNo
WHERe socre>80 AND subName=‘java第一学年’
ORDER BY DESC
LIMIT 0,10

3.5子查询

where(这个值是计算出来的)

本质:在where语句中嵌套一个子查询语句

--============子查询================
--查询数据库结构-1 的所有考试结果(学号,科目编号,成绩),降序排列
--方式一:使用连接查询
SELECt id,sc.subNo,score
FROM score sc
INNER JOIN `subject` su
ON sc.subNo=su.subNo
WHERe subName='数据库结构-1'
ORDER BY score DESC

--方式二:使用子查询
 SELECt id,subNo,score
FROM score 
WHERe subNo=(
   SELECt subNo
   FROM `subject`
   WHERe subName='数据库结构-1'
)
ORDER BY score DESC

--查询高等数学分数不小于八十分的学生的学号和姓名
SELECt DISTINCT id,stuName
FROM student
WHERe id IN(
SELECt id FROM score
WHERe score>=80 and subNo=(SELECt subNo from subject
                          WHERe subName='高等数学')
)

4.mysql函数

4.1常用函数

数学运算

abs() 绝对值

Ceiling() 向上取整

FLOOR 向下取整

RAND() 0-1之间的随机数

SIGN() 判断一个数的符号 0-0 负数-(-1) 正数-1

字符串函数

CHAR _LENGTH() 字符串长度

concat() 拼接字符串

INSERT() --查询,替换

LOWER() 转小写

UPPER() 转大写

now() 获取当前的时间

4.2聚合函数(常用)

函数名称 描述

COUNT() 计数

SUM() 求和

AVG() 平均值

MAX() 最大值

MIN() 最小值

--==============聚合函数=========================
--都能够统计表中的数据
SELECt COUNT(studentnam)  FROM student  --会忽略所有的NULL值
SELECt COUNT(*)  FROM student         --不会忽略NULL值
SELECt COUNT(1)  FROM student        --不会忽略NULL值  本质:计算行数
-=========================================
--查询不同课程的平均分,最高分,最低分
--核心 : 根据不同的课程分组
SELECt subName, AVG(score) AS 平均分,MAX(score) AS 最高分,MIN(score) AS 最低分,平均分大于八十
FROM score sc
INNER JOIN `subject`su
ON sc.subNo = su.subNo
GROUP BY subNo  --通过什么字段来分组
HAVINg 平均分>80

4.3数据库级别的MD5加密(扩展)

MD5不可逆 具体的值的MD5值是一样的

MD5破解网站的原理,背后有一个字典,MD5加密后的值,加密前的值

5.查询语言小结

select distinct 【要查询的字段】from [表名]

XXX join 【表名】

on 【字段交集】

where【过滤条件】

group by 【字段名】

having 【过滤条件】

order by【字段名】 asc(desc)

limit (a,b) a:起始位置 b:页面容量

6.事务

什么是事务

要么都成功,要么都失败


1.SQL执行 A给B转账

2.SQL执行 B收到A的钱


将一组SQl放在一个批次中执行

事务原则 ASID原则:原子性,一致性,隔离性,持久性 (脏读,幻读)

原子性

要么都成功要么都失败

一致性

事务前后的数据要保持一致,

隔离性

多个用户并发访问数据库时,数据库为每个用户开启的事务,不能被其他事务的操作数据所干扰

持久性

事务一旦提交就不可逆,持久化保存到数据库中

--=================事务========================
--mysql是默认开启事务自动提交的
SET autocommit = 0   --关闭
SET autocommit = 1   --开启(默认)	

--手动处理事务
 SET autocommit=0  --关闭自动提交

--事务开启
START TRANSACTION  --标记一个事务的开始从这个之后的SQL都在同一个事务内

--提交:持久化(成功!)
COMMIT

--回滚:回到原来的样子(失败)
ROLLBACK

--事务结束
SET autocommit = 1 --开启自动提交
 
 
 --了解
SAVEPOINT  保存点名  --设置一个事务保存点
ROLLBACK TO SAVEPOINT 保存点名   --回滚到保存点
RELEASE SAVEPOINT 保存点名  --撤销保存点

--========================例子=================================
SET autocommit=0;  --关闭自动提交

START TRANSACTION    --开启一个事务

UPDATE account SET money=money-500 WHERe `name`='A'  --A减500块
UPDATE account SET money=money+500 WHERe `name`='B'  --B+500块   	

COMMIT;  --提交  事务一旦被提交就持久化了
ROLLBACK;   --回滚

SET autocommit=1;   --恢复自动提交

7.索引

索引是帮助mysql高效获取数据的数据结构;

7.1索引的分类

主键索引(primary key)

唯一标识 ,主键不可重复,只能有一个列作为主键

唯一索引(unique key)

避免重复的列出现,唯一索引可以重复,多个列都可标识为唯一索引

常规索引(key /index)

默认的 key index来设置

全文索引(fulltext)

在特定数据库引擎下才有快速定位数据

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785725.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号