零基础学习数据库SQL教程(三)(算法函数 时间函数)

2023-05-16

上接:

​​​​​​零基础学习数据库SQL教程(二)

写在前面的话:本文章内容是自己在LintCode网站SQL教程学习过程中做的学习总结,以便自己复习和大家学习,如果去刷此网站的题,也可以把此文作为参考答案来使用。例题的答案是本人所写,并且已经运行成功,大家可以放心学习。

目录

算法函数(一)

1. 使用 AVG() 函数求数值列的平均值

2.使用 MAX() 函数返回指定列中的最大值

3. 使用 MIN() 函数返回指定列中的最小值

4. 使用 SUM() 函数统计数值列的总数

算术函数(二)

1.使用 ROUND() 函数将数值四舍五入

1.1ROUND(X)

1.2 ROUND(X, D)

2. 使用 NULL() 函数判断空值

2.1 ISNULL()

2.2 IFNULL()

3. 使用 COUNT() 函数计数

3.1 COUNT( column_name )

3.2 COUNT(*)

3.3COUNT(DISTINCT column_name)

时间函数(一)

2. 使用 DATE()、TIME() 函数提取日期和时间

3. 使用 EXTRACT() 函数提取指定的时间信息

4.DATE_FORMAT() 格式化输出日期

时间函数(二)

1. 使用 DATE_ADD() 增加时间

2. 使用 DATE_SUB() 减少时间

3. 使用时间函数 DATEDIFF() 和 TIMESTAMPDIFF() 计算日期差

3.1 DATEDIFF ()

3.2 TIMESTAMPDIFF()


算法函数(一)

1. 使用 AVG() 函数求数值列的平均值


平均函数 AVG() 是平均数 AVERAGE 的缩写,它用于求数值列的平均值。它可以用来返回所有列的平均值,也可以用来返回特定列和行的平均值。 具体的计算过程为:其通过对表中行数计数并计算特定数值列的列值之和,求得该列的平均值。

但是当参数 column_name 列中的数据均为空时,结果会返回 NULL。

语法:

SELECT AVG(`column_name`) 
 FROM `table_name`;

我们可以通过下面的实例来感受一下 AVG() 函数 的用法。

假如我们想要计算课程表 courses 中学生上课人数 student_count 的平均值,我们可以使用下面的SQL语句:

SELECT AVG(`student_count`) AS `average_student_count`
 FROM `courses`;

其中 AS 关键字的作用是赋予 AVG(student_count) 计算结果列显示在列表中的别名。

何为别名?

别名是一个字段或值的替换名,由关键字 AS 赋予。别名还有其他用途,常见的用途包括在实际的表列名包含不符合规定的字符(如空格)时重新命名它,在原来的表列名含糊或者容易误解时扩充它等。

别名常与函数联用,给使用函数之后的新计算列一个名字,方便我们查看和使用。我们会在后续的学习中经常见到它。

例题:请编写 SQL 语句,查询教师表 teachers 中教师邮箱为 '@qq.com' 结尾的年龄的平均值,最后返回结果列名显示为 'average_teacher_age' 。

答案:

select AVG(age)
as
average_teacher_age
from teachers
where email like '%@qq.com'

2.使用 MAX() 函数返回指定列中的最大值

最大值函数 MAX() 用于返回指定列中的最大值。它只有一个参数 column_name ,表示指定的列名。但是当参数 column_name 列中的数据均为空时,结果会返回 NULL。

语法:

SELECT MAX(`column_name`) 
 FROM `table_name`;

例题:请编写 SQL 语句,从教师表 teachers 中,查询最年长的中国教师信息,并返回该教师的年龄。

答案:

select max(age)
as
max_age
from teachers
where country='CN'

3. 使用 MIN() 函数返回指定列中的最小值


MIN() 函数的功能与 MAX() 正好相反,它用于返回指定列中的最小值。但与 MAX() 相同的是,它也只有一个参数 column_name ,表示指定的列名,且当参数 column_name 列中的数据均为空时,结果会返回 NULL。

语法

SELECT MIN(`column_name`) 
 FROM `table_name`;

例题:请编写 SQL 语句,查询教师表 teachers 中最小的教师年龄 (age)。

答案:

select min(age) as min_age 
from teachers

4. 使用 SUM() 函数统计数值列的总数


SUM() 函数用于统计数值列的总数并返回其值。它只有一个参数 column_name ,表示指定的列名,但是当参数 column_name 列中的数据均为空时,结果会返回 NULL。

语法

SELECT SUM(`column_name`) 
 FROM `table_name`;

例题:请编写 SQL 语句,统计课程表 courses 中 teacher_id 为 3 的教师所教授的学生总数,并用select_student_sum 作为结果集列名。

答案:

select sum(student_count) as `select_student_sum`
from courses
where teacher_id='3'

算术函数(二)

1.使用 ROUND() 函数将数值四舍五入


ROUND() 函数用于把数值字段舍入为指定的小数位数。

语法

SELECT ROUND(`column_name`, `decimals`) 
FROM `table_name`;

其中:

  • column_name 为要舍入的字段

  • decimals 规定要返回的小数位数

1.1ROUND(X)

ROUND( X ):返回参数 X 四舍五入后的一个整数。

我们可以通过下面 3 个简单案例学习一下 ROUND(X) 的用法。

<1>
 mysql> SELECT ROUND(-1.49);
 +--------------+
 | ROUND(-1.49) |
 +--------------+
 |           -1 |
 +--------------+
 1 row in set (0.00 sec)
 <2>
 mysql> SELECT ROUND(-1.99);
 +--------------+
 | ROUND(-1.99) |
 +--------------+
 |           -2 |
 +--------------+
 1 row in set (0.00 sec)
 <3>
 mysql> SELECT ROUND(1.51);
 +-------------+
 | ROUND(1.51) |
 +-------------+
 |           2 |
 +-------------+
 1 row in set (0.00 sec)

注意:因为没有提及小数位数,所以默认为0

1.2 ROUND(X, D)

ROUND(X, D): 返回参数 X 四舍五入且保留 D 位小数后的一个数字。如果 D 为 0,结果将没有小数点或小数部分。

我们可以通过下面 2 个简单案例学习一下 ROUND(X, D) 的用法。

<1>
mysql> SELECT ROUND(1.388, 1);
+-----------------+
| ROUND(1.388, 1) |
+-----------------+
|             1.4 |
+-----------------+
1 row in set (0.00 sec)
<2>
mysql> SELECT ROUND(-1.498, 0);
+-----------------+
| ROUND(-1.498, 0) |
+-----------------+
|               -1 |
+-----------------+
1 row in set (0.00 sec)

例题:请编写 SQL 语句,查询教师表 teachers 中,20 岁(不包含 20 岁)以上教师的平均年龄,返回的字段为 avg_teacher_age ,结果保留四舍五入后的整数。

答案:

select round(avg(age)) as avg_teacher_age
from teachers
where age>20

2. 使用 NULL() 函数判断空值


在介绍判断空值函数 NULL() 之前,我们先来了解一下在之前的学习中遇到了多次的 NULL ,即我们常说的空值。但是这种叫法并不准确,因为 NULL 并不是值,它表示数值未知或者不确定。因此,NULL 无法和 0 或空格字符串 "" 进行比较,甚至 NULL 与 NULL 之间也无法比较。默认地,表的列可以存放 NULL 。

2.1 ISNULL()

ISNULL() 函数用于判断字段是否为 NULL,它只有一个参数 column_name 为列名,根据column_name 列中的字段是否为 NULL 值返回 0 或 1。

语法

SELECT ISNULL(`column_name`)
FROM `table_name`;

其中:

  • 如果 column_name 列中的某个字段是 NULL 则返回 1,不是则返回 0

2.2 IFNULL()

IFNULL() 函数也用于判断字段是否为NULL,但是与 ISNULL() 不同的是它接收两个参数,第一个参数 column_name 为列名,第二个参数 value 相当于备用值。

语法

SELECT IFNULL(`column_name`, `value`)
FROM `table_name`;

其中:

  • 如果 column_name 列中的某个字段是 NULL 则返回 value 值,不是则返回对应内容。

  • COALESCE(column_name, value) 函数也用于判断字段是否为NULL,其用法和 IFNULL() 相同。


👇我们可以通过下面的实例来感受一下 ISNULL() 和 IFNULL() 的用法。

假如教师表 teachers 中教师姓名为 'Linghu Chong' 中邮箱为 NULL 值,我们可以通过该记录对比学习 ISNULL()IFNULL()COALESCE() ,其中 COALESCE() 用法与 IFNULL() 相同。

我们可以使用下面的 SQL 语句:

SELECT `name`, `email`, ISNULL(`email`), IFNULL(`email`, 0), COALESCE(`email`, 0) 
FROM `teachers`;

执行输出结果:

mysql> SELECT `name`, `email`, ISNULL(`email`), IFNULL(`email`, 0), COALESCE(`email`, 0) FROM `teachers`;
+------------------+---------------------------+---------------+---------------------------+---------------------------+
| name             | email                     | ISNULL(email) | IFNULL(email,0)           | COALESCE(email,0)         |
+------------------+---------------------------+---------------+---------------------------+---------------------------+
| Eastern Heretic  | eastern.heretic@gmail.com |             0 | eastern.heretic@gmail.com | eastern.heretic@gmail.com |
| Northern Beggar  | northern.beggar@qq.com    |             0 | northern.beggar@qq.com    | northern.beggar@qq.com    |
| Western Venom    | western.venom@163.com     |             0 | western.venom@163.com     | western.venom@163.com     |
| Southern Emperor | southern.emperor@qq.com   |             0 | southern.emperor@qq.com   | southern.emperor@qq.com   |
| Linghu Chong     | NULL                      |             1 | 0                         | 0                         |
+------------------+---------------------------+---------------+---------------------------+---------------------------+
5 rows in set (0.00 sec)

例题:请编写 SQL 语句,从 teachers 表中找出没有邮箱并且年龄大于20岁的教师信息。

答案:

select *
from teachers
where isnull(email)=1 and age>'20'

3. 使用 COUNT() 函数计数


COUNT() 函数用于计数,可利用其确定表中行的数目或者符合特定条件的行的数目。当COUNT() 中的参数不同时,其的用途也是有明显的不同的,主要可分为以下三种情况:COUNT(column_name) 、COUNT( * ) 和 COUNT(DISTINCT column_name) 。

3.1 COUNT( column_name )

COUNT(column_name) 函数会对指定列具有的行数进行计数,但是会除去值为 NULL 的行。该函数主要用于查看各列数据的数量情况,便于统计数据的缺失值。

假如出现某一列的数据全为 NULL 值的情况, 使用COUNT( column_name ) 函数对该列进行计数,会返回 0。

语法:

SELECT COUNT(`column_name`) 
FROM `table_name`;

3.2 COUNT(*)

COUNT(*) 函数会对表中行的数目进行计数,包括值为 NULL 所在行和重复项所在行。该函数主要用于查看表中的记录数。

语法:

SELECT COUNT(*) 
FROM `table_name`;

❗ 注意: COUNT(column_name) 与 COUNT(*) 的区别

  • COUNT(column_name) 中,如果 column_name 字段中的值为 NULL,则计数不会增加,而如果字段值为空字符串"",则字段值会加 1

  • COUNT() 中,除非整个记录全为 NULL,则计数不会增加,如果存在某一个记录不为 NULL,或者为空字符串"",计数值都会加 1。正常来说,表都会有主键,而主键不为空,所以 COUNT() 在有主键的表中等同于 COUNT(PRIMARY_KEY),即查询有多少条记录。

3.3COUNT(DISTINCT column_name)

COUNT( DISTINCT column_name)的作用是返回指定列的不同值的数目

语法:

SELECT COUNT(DISTINCT column_name)
FROM table_name;

注意:COUNT( DISTINCT column_name)的作用和COUNT( DISTINCTROW column_name)完全相同。

例题1:请编写 SQL 语句,统计课程表 courses 中不同的教师 id teacher_id 的数量,最后返回统计值,结果列名显示为 teacher_count

答案:

select count(distinct teacher_id) as teacher_count
from courses

例题2:请编写 SQL 语句,统计教师表中年龄在 20 到 28 岁之间,且国籍为中国或英国的教师人数,最后返回统计值,结果列名显示为 teacher_count

答案:

select count(id) as teacher_count
from teachers
where (age between 20 and 28) and (countryin('CN','UK'))

时间函数(一)

1. 使用 NOW() 、 CURDATE()、CURTIME() 获取当前时间

在 SQL 中,我们可以通过使用 NOW()CURDATE()CURTIME() 来获取当前的时间

  • NOW() 可以用来返回当前日期和时间 格式:YYYY-MM-DD hh:mm:ss

  • CURDATE() 可以用来返回当前日期 格式:YYYY-MM-DD

  • CURTIME() 可以用来返回当前时间 格式:hh:mm:ss

在使用 NOW()CURTIME() 时,如果要精确的秒以后的时间的话,可以在()中加数字,加多少,就表示精确到秒后多少位

比如 NOW(3) 就是精确到毫秒,表示为: 2021-03-31 15:27:20.645

例题:请编写 SQL 语句,向记录表 records 中插入当前的日期。

答案:

insert
into records
values (curdate())

2. 使用 DATE()、TIME() 函数提取日期和时间

通过上一节的学习,我们已经学会了如何在 SQL 中获取当前的时间了,这一节我们将会学习如何将时间中的代表日期的元素和代表时间的元素从时间中提取出来。

就以上一节我们获得的 current_datetime 来说吧,我们已经知道了“现在”的时间是 '2021-03-25 16:16:30',但是在实际运用中,不需要这么的精确,只需要其中的日期或者时间,那么我们应该怎么做呢。或许你会想到再用 CURDATE() 或者CURTIME() 把需要的日期或者时间获取出来不就行了吗。但是你有没有想过时间是会变的, CURDATE() 或者CURTIME() 都是获取当前的,而在某些情况下,时间是固定的,接下来就需要使用 DATE ()TIME ()

我们可以通过下面的示例来感受一下 DATE ()TIME () 的用法

使用 DATE()TIME() 函数分别将 '2021-03-25 16:16:30' 这组数据中的日期于时间提取出来,并用 datetime 作为结果集列名。

SELECT DATE('2021-03-25 16:16:30') AS `date`,TIME('2021-03-25 16:16:30')  AS `time`;
+------------+----------+
| date       | time     |
+------------+----------+
| 2021-03-25 | 16:16:30 |
+------------+----------+
1 row in set

例题:请编写 SQL 语句,从课程表 courses 中查询 2020 年 8 月前的课程名和创建日期,并为创建日期的列名起别名为 created_date (日期指 created_at 中不包括具体时间的部分)。

答案:

select name,date(created_at) AS created_date
from courses
where date(created_at)<'2020-08-01'

3. 使用 EXTRACT() 函数提取指定的时间信息


前面我们已经学习了 DATE 函数和 TIME 函数,明白 DATE 返回日期, TIME 返回时间,如果我只想知道年份的信息或者小时的信息,那么该怎么解决呢?这时,我们就可以使用 EXTRACT() 函数来解决问题。

EXTRACT() 函数用于返回日期/时间的单独部分,如 YEAR (年)、MONTH (月)、DAY (日)、HOUR (小时)、MINUTE (分钟)、 SECOND (秒)。

语法

SELECT EXTRACT(unit FROM date)
FROM `table`

其中:

table 是表格名

date 参数是合法的日期表达式。

unit 参数是需要返回的时间部分,如 YEARMONTHDAYHOURMINUTESECOND 等。

在一般情况下,EXTRACT(unit FROM date)unit() 的结果相同。

例题:请编写 SQL 语句,从课程表 courses 中查询所有课程的课程名称( name )和课程创建时间( created_at )的小时数,将提取小时数的列名起别名为 created_hour

答案:

select name,extract(hour from created_at) as created_hour
from courses

4.DATE_FORMAT() 格式化输出日期

我们在 SQL 中使用 DATE_FORMAT() 方法来格式化输出 date/time。 需要注意的是 DATE_FORMAT() 函数返回的是字符串格式。

语法

SELECT DATE_FORMAT(date,format);

其中

date 一个有效日期。

format 是 date/time 的输出格式。

输出格式表示方法: %Y 表示年份, %m 表示月份,%d 表示日期,%w 表示星期,%H 表示小时,%i 表示分钟,%S表示秒 注意大小写

例题:请编写 SQL 语句,查询 courses 表,查询课程创建时间,按照 ’年-月-日 时:分:秒’ 的格式返回结果,返回列名显示为 DATE_FORMAT

答案:

select DATE_FORMAT(created_at,'%Y-%m-%d %H:%i:%S')
as DATE_FORMAT
from courses

时间函数(二)

1. 使用 DATE_ADD() 增加时间

在使用 mysql 查询数据的过程中,有时我们需要修改数据表中的时间,对日期进行计算,如:对某个日期加上几天、几个小时等操作。

DATE_ADD() 函数是常用的时间函数之一,用于向日期添加指定的时间间隔

语法

SELECT DATE_ADD(date, INTERVAL expr type)
FROM table_name

其中:date 指代希望被操作的有效日期,为起始日期

expr 是希望添加的时间间隔的数值(expr 是一个字符串,对于负值的间隔,可以以 ”-“ 开头)

type 是具体的数据类型,表示加上时间间隔的单位(可以是 MICROSECOND (毫秒), SECOND , MINUTE , HOUR , DAY , WEEK , MONTH , QUARTER (一刻钟), YEAR 等)

例题:请编写 SQL 语句,修改 courses 表中课程的课程创建日期,将课程创建日期均推迟一天,最后返回课程名称 name 及修改后的课程创建时间,修改后的课程创建时间命名为 new_created

答案:

select name,date_add(created_at,interval 1 day)
as new_created
from courses

2. 使用 DATE_SUB() 减少时间

DATE_SUB() 函数是常用的时间函数之一,用于从日期减去指定的时间间隔。它与 DATE_ADD() 函数具有相似的用法。

语法

SELECT DATE_SUB(date, INTERVAL expr type)
FROM table_name

其中:date 指代希望被操作的有效日期

expr 是希望减少的时间间隔

type 是具体的数据类型(可以是 MICROSECOND , SECOND , MINUTE , HOUR , DAY , WEEK , MONTH , QUARTER , YEAR 等)

例题:请编写 SQL 语句,修改 courses 表中课程的课程创建日期,将课程创建日期均提前一天,最后返回课程 id 、课程名称 name 及修改后的开课日期,修改后的课程创建日期命名为 new_created

答案:

select id,name,date_sub(created_at,interval 1 day)
as new_created
from courses

3. 使用时间函数 DATEDIFF() 和 TIMESTAMPDIFF() 计算日期差


前面我们学习了关于时间的一些简单应用,对时间的一些删改等,但是在实际生活中往往更多的是需要我们去计算一些日期差值的,比如一些假期日时长,还有多久到某某纪念日,等,下面我们就来简单介绍一下。

3.1 DATEDIFF ()

DATEDIFF() 常用的日期差,在 MySQL 中默认只能计算天数差。

DATEDIFF() 用法:

DATEDIFF(时间1,时间2)

DATEDIFF() 差值计算规则:时间 1 - 时间 2

例题:请编写 SQL 语句,查询 courses 表,计算从 2019 年 03 月 26 日到创建时间(created_at)相差的天数,结果列名以 date_diff 显示 。

答案:

select datediff(created_at,'2019-03-26')
as date_diff
from courses

3.2 TIMESTAMPDIFF()

查询功能多的 MySQL 自带的日期函数,可以计算两个日期相差的年(YEAR,时间1,时间2),月(MONTH,时间1,时间2),周(WEEK,时间1,时间2),日(DAY,时间1,时间2),小时(HOUR,时间1,时间2)。

TIMESTAMPDIFF() 用法:

TIMESTAMPDIFF (类型,时间1,时间2)

TIMESTAMPDIFF() 差值计算规则:时间 2 - 时间 1

例题:请编写 SQL 语句,查询 courses 表,计算课程创建时间与 '2020-04-22' 的月数差,返回列名显示为 MonthDiff。

答案:

select timestampdiff(month,created_at,'2020-04-22')
as MonthDiff
from courses

下接:

零基础学习数据库SQL教程(四)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

零基础学习数据库SQL教程(三)(算法函数 时间函数) 的相关文章

  • IDEA 写C++ 的工具了解一下

    https www jetbrains com clion download download thanks html platform 61 windowsZip
  • Rancher入门到精通-2.0 F0821 09:57:22.864380 7 main.go:72] Port 80 is already in use. Please check the fla

    F0821 09 57 22 864380 7 main go 72 Port 80 is already in use Please check the flag http port 由于 80 端口被占用
  • linux驱动模块加载错误(insmod: can‘t insert ‘xxx.ko‘: invalid module format)的原因之一:内核或者配置不一致

    问题现象 xff1a insmod方式加载某个驱动ko模块 xff0c 提示insmod can 39 t insert 39 xxx ko 39 invalid module format 问题原因之一 xff08 也可能是概率较大的一个
  • Python中的按位运算符和如何表示各进制数

    python中的按位运算符 在Python中 xff0c 按位运算符用于对二进制数中的每一位进行操作 Python中的按位运算符包括以下几个 xff1a 1 按位与 xff08 amp xff09 xff1a 对操作数的每一个二进制位执行逻
  • Python打包函数zip——整理电影票房(学习笔记)

    文章目录 1 zip函数2 案例演示 1 zip函数 zip 函数用于将可迭代的对象作为参数 xff0c 将对象中对应的元素打包成一个个元组 xff0c 然后返回由这些元组组成的列表 如果各个迭代器的元素个数不一致 xff0c 则返回列表长
  • Conda 使用

    常用命令 查看已创建的虚拟环境 conda info envs C Users xxx gt conda info envs conda environments base E Anaconda3 cusum E Anaconda3 env
  • lz4压缩

    收集的资料 xff1a https gitee com zhengnianli EmbedSummary lz4 在我们嵌入式开发中 xff0c 通信中有些数据量较大的数据可以压缩之后再进行传输 压缩算法有很多 xff0c 常用的有如下几种
  • MySQL gbk中文md5加密

    在MySQL中自带md5 函数可以进行md5加密 xff0c 但是加密字段默认为utf 8格式 select md5 39 这是一串加密数据 39 输出结果 xff1a ca53cf805e403f238b60935e8b68f0f3 可以
  • crosstab 、pivot_table 、groupby比较

    所用数据前五条 目标 生成数据透视图 crosstab pd crosstab index 61 data 39 admit 39 columns 61 data 39 prestige 39 以上代码用于计数 xff0c 如要展示其他数据
  • numpy 矩阵创建

    mat xff1a 分号用于隔开数据 matrix 将ndarray 转为矩阵 bmat 将小矩阵合并成大矩阵 矩阵特有属性与说明 属性 说明 T 返回自身转置H返回自身的共轭转置I返回自身的逆矩阵A返回自身数据的二位数组 xff08 没有
  • numpy 矩阵复制

    纵向复制 横向复制
  • excel 中“万”字处理

    61 IF ISNUMBER FIND 34 万 34 M2 SUBSTITUTE M2 34 万 34 34 34 10000 M2 函数中的3个M2为需要处理单元格所在位置 结果展示如下
  • python groupby 不同列聚合

    dataframe 在groupby后有时候需要对不同的列按照不同的聚合方式聚合 聚合方法如图 xff1a num agg中输入各列数据的聚合方式 可用于多条件groupby
  • dataframe 中万字处理

    df 39 点赞 39 apply lambda x float str x replace 39 万 39 39 39 10000 if 39 万 39 in str x else x astype int
  • VSCode之CMake使用

    一 准备工作 下载 对应平台的VScode安装C 43 43 扩展 安装Cmake 工具扩展 并行需要安装 Cmake xff0c 编译器 xff0c 调试器和构建工具 cmake version 虽然咱们使用VSCode编辑代码 xff0
  • 运行apt-get update后出现错误

    一般错误是如下两种 xff1a 1 一般如果你的ubuntu是中文的设定了地区的 xff0c 错误是如下 xff1a W 无法下载http ppa launchpad net deluge team ppa ubuntu dists nat
  • 表达式求值(含括号的复杂运算)

    具体解析看注释 span class token macro property span class token directive keyword include span span class token string lt bits
  • HttpClient模拟登录总结(不能跳转及跳转后不能登录)

    最近在写一个模拟登录的程序 xff0c 从网上找了很多资料 xff0c 都没能有一个完整的例子可成功跳转登录后的页面 xff0c 现把我的代码拿来与大家分享一下 xff0c 希望可以帮到一些人吧 其原理是 xff1a 通过HttpClien
  • JestonTX2更新软件源

    JestonTX2刷机后需要更新软件源 更新软件源后 xff0c 才可以正常安装QT等软件 软件源记录文件放在以下文件中 cd etc apt source list 可以使用gedit打开此文件 sudo gedit etc apt so
  • Kali的下载安装详细过程

    1 什么是Kali xff1f Kali Linux是专门用于渗透测试的Linux操作系统 2 打开官网 Kali Linux Penetration Testing and Ethical Hacking Linux Distributi

随机推荐