当前位置: 首页 > news >正文

MySQL学习记录1【DQL和DCL】

SQL学习记录

该笔记从DQL处开始记录


DQL之前值得注意的点

  • 字段 BETWEEN min AND max 可以查询区间[min, max]的数值
  • 如果同一个字段需要满足多个OR条件,可以采取 字段 IN(数值1, 数值2, 数值3....)
  • LIKE语句 字段 LIKE '___%%%' 表示模糊匹配,_匹配一个字段,%匹配不确定个字段

DQL

SELECT字段列表
FROM表名
WHERE条件列表
GROUP BY分组字段列表
HAVING分组后的条件列表
ORDER BY排序字段列表
LIMIT分页参数;
1. 聚合函数

常见的聚合函数:

函数功能
COUNT()计算非空值的数量。
SUM()计算一列数值的总和。
MAX()返回一列中的最大值。
MIN()返回一列中的最小值。
AVG()计算一列数值的平均值。
2. 分组查询
SELECT 字段列表 
FROM 表名  
WHERE 条件 
GROUP BY 分组字段名  
HAVING 分组后的过滤条件;
  • 查询数据先通过WHERE的条件进行过滤,随后通过GROUP BY 进行分组,分组之后,又通过HAVING字段来进行过滤分组的结果。
  • 与此同时,HAVING可以对聚合函数进行判断,WHERE则不行.
3. 排序查询
SELECT 字段列表 
FROM 表名 
ORDER BY 字段1 排序方式1, 字段2 排序方式2;
  • 先按字段1排序,再按字段2排序,以此类推
  • ASC(默认升序,从小到大),DESC(从大到小,降序)
4. 分页查询
SELECT 字段列表 
FROM 表名 
LIMIT 起始索引, 查询记录数;
  • LIMIT是如何查询的?假设你要查询第n页,每一页有m条数据,那么起始索引就是 (n - 1) * m
  • 另一种思路,你查询到的区间可以表示为 (起始索引,起始索引 + 查询记录数]
5. 执行顺序
FROM 		#首先确定要查询的数据源表,从中提取数据。
WHERE 		#在 FROM 后,用 WHERE 子句来过滤数据,限制结果集中的行。
GROUP BY 	#对满足 WHERE 条件的结果集进行分组。
HAVING 		#对分组后的结果集进行进一步过滤,限于满足条件的分组。
SELECT		#选择要返回的列,最终确定结果集中包含哪些字段。
ORDER BY	#对最终的结果集进行排序。
LIMIT 		#限制返回的结果集的行数,可以用于分页。

tips:

  • 关于别名:
    1. 列别名:在 SELECT 语句中定义。
    2. 表别名:在 FROM 子句中定义。
    3. 子查询别名:在子查询的后面定义。
  • 在定义别名之后,要注意各个语句的执行顺序,只有在执行定义了别名的语句之后才可以在接下来的语句使用别名

DCL


1. 用户管理
操作语法说明
查询用户SELECT * FROM mysql.user;查看所有用户信息
创建用户CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';创建用户,指定用户名、主机名和密码
修改密码ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_naive_password BY '新密码';修改用户密码
删除用户DROP USER '用户名'@'主机名';删除用户

2. 权限管理
操作语法说明
查询权限SHOW GRANTS FOR '用户名'@'主机名';查看用户的权限
授予权限GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';授予用户对指定数据库或表的权限
撤销权限REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';撤销用户对指定数据库或表的权限

3. 常用权限列表
权限说明
ALLALL PRIVILEGES所有权限
SELECT查询数据
INSERT插入数据
UPDATE修改数据
DELETE删除数据
ALTER修改表结构
DROP删除数据库、表或视图
CREATE创建数据库或表

4. 注意事项
  • 主机名:可以使用%通配符表示所有主机。
  • 权限列表:多个权限用逗号分隔,例如SELECT, INSERT, UPDATE
  • 通配符:在授权时,数据库名和表名可以使用*通配符,例如*.*表示所有数据库和表。

结语

最近做了一个Demo,又看了几篇文章,做了几道题,发现自己的建表,查表这些确实还有待优化,所以决定系统地学一下MySQL,目前是跟着黑马学习,挖了一个新坑,希望能坚持下去吧~

http://www.lryc.cn/news/518340.html

相关文章:

  • 验证码转发漏洞
  • 使用 C++ 实现神经网络:从基础到高级优化
  • 【WRF运行报错】总结WRF运行时报错及解决方案(持续更新)
  • Kotlin语言的循环实现
  • 基于CNN的人脸识别考勤管理系统实现
  • Android基于回调的事件处理
  • postgis和地理围栏
  • 《鸿蒙系统AI技术:筑牢复杂网络环境下的安全防线》
  • SQL SERVER__RSN 恢复的深入解析
  • 面试加分项:Android Framework PMS 全面概述和知识要点
  • Http协议封装
  • el-date-picker 禁用一个月前、一个月后(当天之后)的时间 datetimerange
  • 【C】编译与链接
  • Github上传项目
  • webrtc之rtc::ArrayView<const uint8_t>
  • Zemax 序列模式下的扩束器
  • Flink系统知识讲解之:如何识别反压的源头
  • RK3568平台(USB篇)禁用USB端口
  • 洛谷 P3000 [USACO10DEC] Cow Calisthenics G
  • Web渗透测试之XSS跨站脚本攻击 盲打 详解
  • 经典编程题:服务器广播
  • 【网络协议】静态路由详解
  • 朝天椒USB服务器在银泰证券虚拟化超融合场景的应用案例
  • .NET framework、Core和Standard都是什么?
  • FairGuard游戏安全2024年度报告
  • JetBrains IDEs和Visual Studio Code的对比
  • 文件剪切走:深度解析与高效恢复策略
  • Win32汇编学习笔记09.SEH和反调试
  • [人工智能]CSDN创作助手体验
  • vue3中el-table实现多表头并表格合并行或列