1. 无条件查询
--查询表中所有数据
select * from 表名;

2. 查询在…到…之间(between and / && / and)
--查询users表中年龄在18~25岁之间的记录
--方式1 between..and..
select * from users where age between 18 and 25;

--方式2 &&
select * from users where age>=18 && age<=25;

--方式3 and
select * from users where age>=18 and age<=25;

3. 指定条件查询
  • 单个条件(or / in)

    --查询users表中年龄为18,20,25岁的记录
    --方式1 or
    select * from users where age=18 or age=20 or age=25;
    
    --方式2 in
    select * from users where age in (18,20,25);
    
    
  • 多个条件(and)

    --查询users表中年龄为23,性别为女,名字为小楠的记录
    select * from users where age=23 and gender='女' and name='小楠';
    
    
4. 查询不为NULL值(is not null),为NULL值(is null)
--查询users表中序号不为空的记录
select * from users where id is not null;

--查询user表中序号为空的记录
select * form users where id is null;

5. 模糊查询(like)
_:单个任意字符
%:多个任意个字符
--查询users表中姓名第一个字为李的记录
select * from users where name like '李%';

--查询users表中姓名第二个字为李的记录
select * from users where name like '_李%';

--查询users表中姓名含有李字的记录
select * from users where name like '%李%';

--查询users表中姓名是两个字的记录
select * from users where name like '__';

6. 去除重复记录查询(distinct)
--查询users表中所在城市不相同的记录
--select distinct 字段 from 表名;

select distinct city from users;

7. 排序查询(order by)
  • 单个条件

    --查询users表中记录,并以年龄升序排序
    select * from users order by age;
     
    --查询users表中记录,并以年龄降序排序
    select * from users order by age desc;
    
    
  • 多个条件

    注意:多个排序条件时,只有当第一个排序条件值一样,才会执行第二个排序条件,以此类推

    --查询users表中记录,并体育成绩降序,年龄降序
    select * from users order by PE desc, age desc;
    
    
8. 聚合函数
  • 计算和(sum)

    select sum(字段) (as sumvalue) from 表名;
    
    
  • 计算最大值(max)

    select max(字段) (as maxvalue) from 表名;
    
    
  • 计算最小值(min)

    select min(字段) (as minvalue) from 表名;
    
    
  • 计算平均值(avg)

    select avg(字段) (as avgvalue) from 表名;
    
    
  • 计算个数(count)

    select count(字段)(as totalcout) from 表名;
    
    
9. 分组查询(group by)
--查询users表中的记录,按照性别分组,查询男,女的体育成绩平均分
select gender,avg(PE) from users group by gender;

--查询users表中的记录,按照性别分组,分别查询男、女的体育成绩平均分,人数
select gender,avg(PE),count(id) from users group by gender;

--查询users表中的记录, 按照性别分组,分别查询男、女的体育成绩平均分,人数 要求:分数低于60分的人,不参与分组
select gender,avg(PE),count(id) from users where PE>60 group by gender;

 --查询users表中的记录,按照性别分组,分别查询男、女的体育成绩平均分,人数 要求:分数低于60分的人,不参与分组,分组之后,人数要大于2个人
select gender,avg(PE),count(id) from users where PE>60 group by gender having count(id)>2;

10. 分页查询(limit)

注意:第一条记录的索引是0

--查询users表中的前10行条记录
select * from users limit 10;

--查询users表中第2~11条记录 (从第2条记录开始累加10条记录)
select * from users limit 1,10;

--查询users表中第5~17条记录 (从第5条记录开始累加13条记录)
select * from users limit 4,16;

11. 内连接查询

如果查询数据的来源来自多张表,则必须对这些表进行连接查询,连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理,连接查询分为内连接和外连接

语法格式

--语法1 (隐式内连接)
select 字段1,字段2...
from 表1,表2...
where 过滤条件;
 
--语法2 (显式内连接)
select 字段1,字段2...
from 表1 inner join 表2 ...
on 过滤条件;

e.g 有两张表:user表和city表

user表:

id name
001 小红
002 小蓝
003 小白
004 小黄
005 小绿
006 小青

city表:

id address
001 深圳
002 广州
003 北京
004 上海
005 汕头
006 潮州
007 揭阳

重合的部分就叫做内连接查询,例如下面过滤条件指的就是当两个表的id相等时才符合连接查询的条件

  • 隐式内连接

    select user.name,city.address
    from user,city
    where user.id = city.id;
    
    

    结果为:

    name address
    小红 深圳
    小蓝 广州
    小白 北京
    小黄 上海
    效率 汕头
    小青 潮州
  • 显式内连接

    select user.name,city.address
    from user inner join city
    on user.id = city.id;
    
    
12. 外连接查询

外连接查询分为左外连接查询和右外连接查询

语法

--左外连接
select 字段1,字段2..
from 表1 left outer join 表2 on 过滤条件;

--右外连接
select 字段1,字段2..
from 表1 right outer join 表2 on 过滤条件;

左外连接和右外连接有一点区别:

左外连接:是表1和表2的交集再并上表1的其他数据

右外连接:是表1和表2的交集再并上表2的其他数据

e.g: 上面两张表的左外链接结果

select user.name,city.address
from city left outer join user
on user.id = city.id;

结果为:

name address
小红 深圳
小蓝 广州
小白 北京
小黄 上海
效率 汕头
小青 潮州
NULL 揭阳

简单点说就是求交集之后并上city的其他数据,没有匹配的为NULL

右外连接结果:

select user.name,city.address
from city right outer join user
on user.id = city.id;

结果为:

name address
小红 深圳
小蓝 广州
小白 北京
小黄 上海
效率 汕头
小青 潮州

简单点说就是求交集之后并上user的其他数据,没有匹配的为NULL

13. 子查询

当我们进⾏语句查询的时候,总会遇到我们需要的条件需要通过另⼀个查询语句查询出来后才能进⾏,就是说A 查询语句需要依赖B 查询语句的查询结果,B 查询就是⼦查询,A 查询语句就是主查询,⼀个SQL语句可以包含多个⼦查询。

语法

select username
from user
where age =(
	select avg(age)
    from userInfo
)

例如:要查询工资大于10号部门的平均工资的非10号部门的员工信息

查询10号部门的平均工资

select avg(sal) from emp where deptno = 10;

那么工资大于10号部门的平均工资的非10号部门的员工信息为

select * from emp 
where deptno!=10 and sal>(
	select avg(sal)
    from emp
    where deptno = 10;
)

一些子查询的实例

查询在2022年8月9日销售的产品信息

select *
from dbo.product
where pno in (
	select pno from dbo.prd
    where odate = '2022/'
)

学习资源

如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你

知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。

1、知识库价值

深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。

广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。

实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。

2、 部分核心内容展示

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

在这里插入图片描述

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。

1、网络安全意识

img

2、Linux操作系统

img

3、WEB架构基础与HTTP协议

img

4、Web渗透测试

img

5、渗透测试案例分享

img

6、渗透测试实战技巧

图片

7、攻防对战实战

图片

8、CTF之MISC实战讲解

图片

3、适合学习的人群

一、基础适配人群

  1. 零基础转型者‌:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链‌;
  2. 开发/运维人员‌:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展‌或者转行就业;
  3. 应届毕业生‌:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期‌;

二、能力提升适配

1、‌技术爱好者‌:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者‌;

2、安全从业者‌:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力‌;

3、‌合规需求者‌:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员‌;

因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐