MySQL学习记录1【DQL和DCL】

SQL学习记录

该笔记从DQL处开始记录


DQL之前值得注意的点

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

DQL

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

常见的聚合函数:

函数 功能
COUNT() 计算非空值的数量。
SUM() 计算一列数值的总和。
MAX() 返回一列中的最大值。
MIN() 返回一列中的最小值。
AVG() 计算一列数值的平均值。
2. 分组查询
sql 复制代码
SELECT 字段列表 
FROM 表名  
WHERE 条件 
GROUP BY 分组字段名  
HAVING 分组后的过滤条件;
  • 查询数据先通过WHERE的条件进行过滤,随后通过GROUP BY 进行分组,分组之后,又通过HAVING字段来进行过滤分组的结果。
  • 与此同时,HAVING可以对聚合函数进行判断,WHERE则不行.
3. 排序查询
sql 复制代码
SELECT 字段列表 
FROM 表名 
ORDER BY 字段1 排序方式1, 字段2 排序方式2;
  • 先按字段1排序,再按字段2排序,以此类推
  • ASC(默认升序,从小到大),DESC(从大到小,降序)
4. 分页查询
sql 复制代码
SELECT 字段列表 
FROM 表名 
LIMIT 起始索引, 查询记录数;
  • LIMIT是如何查询的?假设你要查询第n 页,每一页有m 条数据,那么起始索引就是 (n - 1) * m
  • 另一种思路,你查询到的区间可以表示为 (起始索引,起始索引 + 查询记录数]
5. 执行顺序
sql 复制代码
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,目前是跟着黑马学习,挖了一个新坑,希望能坚持下去吧~

相关推荐
heRs BART6 分钟前
Redis简介、常用命令及优化
数据库·redis·缓存
NiKick28 分钟前
MySql中的事务、MySql事务详解、MySql隔离级别
数据库·mysql·adb
gmaajt1 小时前
mysql如何检查数据库表是否存在损坏_使用CHECK TABLE命令修复
jvm·数据库·python
hipolymers1 小时前
C语言怎么样?难学吗?
c语言·数据结构·学习·算法·编程
heRs BART1 小时前
【Flask】四、flask连接并操作数据库
数据库·python·flask
Lucifer三思而后行1 小时前
一次 Oracle RAC 归档告警排查
数据库·oracle
zhuiyisuifeng1 小时前
PostgreSQL常用时间函数与时间计算提取示例说明
数据库·postgresql
wellc1 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
Irissgwe1 小时前
redis之常见数据类型
数据库·redis·缓存
2301_773553621 小时前
CSS如何对用户访问过的链接进行降级颜色处理_使用-visited伪类改变颜色
jvm·数据库·python