git命令行init仓库
mkdir的命令行使用
-p
是 mkdir
命令中的一个选项,表示 "parent" ,意思是创建所有必要的父目录。如果使用 -p
,即使父目录不存在,命令也会自动创建它们,而不会报错。
在 Git 中,git init
是一个非常重要的命令,用于创建一个新的 Git 仓库。它会在你指定的目录下初始化一个新的 Git 仓库,使其能够进行版本控制。
导航到你想要创建仓库的目录 。你可以使用 cd
命令来改变当前工作目录。
接着执行 git init
命令: git init
创建位置
- 创建到当前目录 :执行
git init
的位置就是你希望创建仓库的目录 。在该目录下,你将看到++一个名为.git
的隐藏文件夹。这个文件夹包含了 Git 用于管理版本控制的所有信息++。
聚合函数的运用
聚合函数常与 GROUP BY
一起使用,以便对特定分组的数据进行聚合计算。
sql
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id;
聚合函数可以与 HAVING
子句一起使用,以进一步过滤分组结果。
sql
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 5000;
聚合函数与 GROUP BY
的区别:
- 不使用
GROUP BY
:- 聚合函数会把表中的所有行当作一个整体进行汇总,返回单个值。
- 使用
GROUP BY
:- 聚合函数会按照指定的分组条件进行汇总,每个组返回一行结果。
如果你想在不使用 GROUP BY
的情况下显示多行聚合数据,有几种方法可以尝试实现:
使用 GROUP BY
对多个列进行分组时,SQL 会根据这些列的组合生成结果。具体来说,SQL 会将具有相同组合值的行聚集在一起,然后对每个组合执行聚合计算。
组合再分组如果Group by 有多个列
数据库练习
设置整个表变成临时表,括号里全部执行完,再加where约束,这样就可以
窗口函数的练习
select id,category,name,price from goods;
要用聚合函数的话,加over
语法
函数() over (partition by 该表中的字段 order by 通过partition分开后要拿哪个作为排序依据 ASC上往下升|DESC往下降)
语法二
函数() over 窗口名... Window 窗口名 as()
row_number()
主要用途:
- 分页 :可以通过
ROW_NUMBER()
给结果集编号,然后结合LIMIT
和OFFSET
实现分页。 - 去重:有时候需要根据某些列对重复行进行编号,并删除重复项。
- 数据排序:可以根据不同的列来为数据集创建排序后的编号。
示例:
假设有一个员工表 employees
,想要给每个员工按照工资从高到低进行排序并编号:
sql
SELECT
employee_id,
first_name,
salary,
ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num
FROM
employees;
这个查询会按照工资从高到低给每个员工编号,ROW_NUMBER()
会根据 ORDER BY salary DESC
的规则生成行号。
和其他函数的区别:
ROW_NUMBER()
会为每一行生成一个唯一的编号,即使有相同值的行。RANK()
会为相同值的行分配相同的编号,但跳过接下来的编号。DENSE_RANK()
也为相同值的行分配相同的编号,但不会跳过编号。
聚合函数和窗口函数
ROW_NUMBER()
不是一个聚合函数,而是一个窗口函数。窗口函数与聚合函数不同之处在于,窗口函数不会将多行数据聚合成一行,而是为每一行生成相关的结果,例如行号、排名等。
聚合函数(如 SUM()
、COUNT()
等)会将多行数据合并成单一的值,而 ROW_NUMBER()
不会改变行数,它只是在结果集中为每一行生成一个唯一的行号。
ROW_NUMBER()
一定要配 OVER
使用吗?
- 是的 ,
ROW_NUMBER()
必须配合OVER
子句使用,因为OVER
子句定义了窗口函数的"窗口",即如何分区和排序数据。你可以通过OVER
子句指定如何排序或者分组结果集,来告诉ROW_NUMBER()
如何为行生成行号。
可以在外面再加一个 ORDER BY
吗?
- 可以的 ,你可以在外层查询中添加
ORDER BY
来对查询结果进行额外排序。ROW_NUMBER()
内部的ORDER BY
是用来生成行号的,而外部的ORDER BY
是用来对整个结果集进行排序的。
ROW_NUMBER()
在 MySQL 中,即使在 OVER()
里没有指定 ORDER BY
,它也不会报错。确实,它会直接在结果集中基于查询返回的原始顺序 加上行号。也就是说,虽然没有指定排序规则,ROW_NUMBER()
依然会为每一行生成递增的行号,但这些行号是根据数据的默认顺序生成的。
sql
SELECT ROW_NUMBER() OVER(ORDER BY population ASC)AS 窗口编号,
id,NAME,POPUlation FROM city
ORDER BY id;
over里有排序规则之后,窗口函数列全部生成好之后,如果自己没有额外的规定排序规则,会按照窗口函数的rownum排序
config
多用户环境的背景
-
不同用户的配置 :在一台计算机上,可能有多个开发者使用 Git。每个开发者可能需要使用不同的用户名和邮箱来进行提交。这时,全局配置 (
global
) 允许每个用户在自己的环境中设置这些信息,而不影响其他用户。 -
系统配置的角色 :系统配置 (
system
) 是由系统管理员设置的,影响所有用户和所有仓库。比如,如果你在一台共享服务器上工作,管理员可能会设置一些系统级别的配置,例如共享的 Git 服务器 URL 或默认的合并工具。
global
和 system
的关系
-
优先级 :当用户在某个仓库中执行 Git 命令时,Git 会首先查找该仓库的
local
配置,如果没有,则查找global
配置,再查找system
配置。因此,global
配置不会为每个用户提供多个设置,但它可以为每个用户在自己的账户下设置。 -
使用场景:
- Global:适用于个人用户设置所有仓库的默认值。例如,一个开发者可以在他们的用户环境中设置自己的用户名和邮箱,这样在所有的 Git 仓库中都会自动应用这些设置。
- System:适用于需要管理员或系统级别设置的场景,通常不常修改。
系统管理员也可以为整个系统设置一些默认的配置,这些配置将被所有用户共享。
总结
在多用户环境中,global
配置是针对每个用户的 ,而 system
配置是针对整个系统的 。每个用户可以根据自己的需求设置 global
配置,而不必担心影响其他用户的设置。
1. Local Config
- 作用 :设置当前仓库的用户名和邮箱,仅影响该特定的仓库。
- 位置 :
.git/config
文件。
2. Global Config
- 作用 :设置所有仓库的默认用户名和邮箱。对于同一个用户在不同仓库中工作时,使用全局配置可以避免重复设置。
- 位置 :用户主目录下的
.gitconfig
文件。
3. System Config
- 作用:虽然它的作用是影响所有用户和所有仓库,但通常用于管理员或系统级别的设置。一般情况下,普通用户不需要频繁修改系统配置。
- 位置 :系统的 Git 安装目录中的
etc/gitconfig
文件。
System 和 Global 的区别
- 使用范围 :
system
配置适用于系统中的所有用户,而global
配置只影响当前用户的所有仓库。因此,虽然它们都可以设置默认值,但system
是针对整个计算机的,而global
是针对特定用户的。 - 优先级 :如果在某个仓库中同时存在
local
、global
和system
配置,local
配置的优先级最高,其次是global
,最后是system
。
在提交时识别出是谁的命令
1. 配置用户信息
查看你config了些什么git config --global --list
bash
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
//输入你的用户名和邮箱
可以乱填吗?
- 可以乱填 ,Git 本身不会限制你填写什么内容。无论你在
user.name
和user.email
中设置的是什么,Git 都会正常工作。这只是影响到你本地的提交记录,远程仓库可能会要求真实的邮箱和身份信息进行协作,但 Git 本身不会强制这些要求。
2. 设置默认编辑器
- 你可以指定在 Git 操作中使用的默认文本编辑器,例如:
3. 配置别名
- 可以为常用的 Git 命令设置简短别名,以提高效率:
4. 查看配置
- 查看当前的 Git 配置,可以使用
5. 全局与局部配置
- 使用
--global
参数设置的配置会应用到所有仓库,而不使用该参数时,设置只会应用于当前仓库。
Git
可以将已经添加到暂存区的更改取消回来。这个过程称为"从暂存区中移除",可以使用以下 Git 命令:
1. 从暂存区取消文件:
- 使用
git reset
命令可以将已添加到暂存区的文件移除。以下是基本用法:
bash
git reset <file>
2. 取消所有文件的暂存:
- 如果你想取消所有已暂存的更改,可以使用:
bash
git reset
3. 查看状态:
- 在执行取消操作之前,可以使用
git status
命令查看当前的工作区和暂存区状态。这可以帮助你确认哪些文件已暂存,以及你要取消哪些文件的暂存状态。
4. 恢复到最后一次提交:
- 如果你想要将工作区的修改也丢弃,可以使用:
bash
git checkout -- <file>
为她乐就乐在这今朝