公司网站服务器选择有哪些下载软件的应用
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:
- 关于别名: 
- 列别名:在 
SELECT语句中定义。 - 表别名:在 
FROM子句中定义。 - 子查询别名:在子查询的后面定义。
 
 - 列别名:在 
 - 在定义别名之后,要注意各个语句的执行顺序,只有在执行定义了别名的语句之后才可以在接下来的语句使用别名
 
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. 常用权限列表
| 权限 | 说明 | 
|---|---|
ALL 或 ALL PRIVILEGES | 所有权限 | 
SELECT | 查询数据 | 
INSERT | 插入数据 | 
UPDATE | 修改数据 | 
DELETE | 删除数据 | 
ALTER | 修改表结构 | 
DROP | 删除数据库、表或视图 | 
CREATE | 创建数据库或表 | 
4. 注意事项
- 主机名:可以使用
%通配符表示所有主机。 - 权限列表:多个权限用逗号分隔,例如
SELECT, INSERT, UPDATE。 - 通配符:在授权时,数据库名和表名可以使用
*通配符,例如*.*表示所有数据库和表。 
结语
最近做了一个Demo,又看了几篇文章,做了几道题,发现自己的建表,查表这些确实还有待优化,所以决定系统地学一下MySQL,目前是跟着黑马学习,挖了一个新坑,希望能坚持下去吧~
