一、查询语法

select
字段列表
from
表名列表
where
条件列表
group by
分组列表
having
分组后条件
order by
排序字段
limit
分页限定

(提供一个表来操作操作)

-- 删除 stu 表
drop table if exists stu; -- 创建stu表
create table stu(
id int, -- 编号
name varchar(20), -- 姓名
age int, -- 年龄
sex varchar(5), -- 性别
address varchar(100), -- 地址
math double(5,2), -- 数学成绩
english double(5,2), -- 英语成绩
hire_date date -- 入学时间
); -- 添加数据
insert into stu(id,name,age,sex,address,math,english,hire_date)
VALUES
(1,'马运',55,'男','杭州',66,78,'1995-09-01'),
(2,'马花腾',45,'女','深圳',98,87,'1998-09-01'),
(3,'马斯克',55,'男','香港',56,77,'1999-09-02'),
(4,'柳白',20,'女','湖南',76,65,'1997-09-05'),
(5,'柳青',20,'女','湖南',86,NULL,'1998-09-01'),
(6,'刘德花',57,'男','香港',99,99,'1998-09-01'),
(7,'张雪有',22,'女','香港',99,99,'1998-09-01'),
(8,'德玛西亚',18,'男','南京',65,56,'1998-09-02');

二、基础查询

  1. 查询多个字段

select 字段列表 from 表名;
select * from 表名; -- 查询所有数据

  

-- 查询 name age 两列
SELECT
name, -- 姓名
age -- 年龄
FROM
 stu; -- 查询所有列的数据, 列名列表可以用 * 代替
select * from stu;
-- (通常情况下 企业中是不允许使用 * 的 不便于理解 与 注释)

  2、去除重复记录

select distinct 字段列表 from 表名;

-- 去除重复记录
select DISTINCT address from stu;

  3. 起别名

as: (as 也可以省略)
-- 查询姓名,数学成绩 ,英语成绩
select name, math as 数学成绩, english as 英语成绩 from stu;

三、条件查询

  1、 条件查询语法

select 字段列表 from 表名 where 条件列表;

  2、条件

  

  代码实例:

-- ====================条件查询================

-- 1. 查询年龄大于20岁的学员信息
select
name 姓名,
age 年龄,
sex 性别,
address 地址,
math 数学成绩,
english 英语成绩,
hire_date 入学时间
FROM
stu
WHERE
age > 20; -- 2. 查询年龄大于等于20岁的学员信息
select
name 姓名,
age 年龄,
sex 性别,
address 地址,
math 数学成绩,
english 英语成绩,
hire_date 入学时间
FROM
stu
WHERE
age >= 20; -- 3. 查询年龄大于等于20岁 并且 年龄小于等于30岁 的学员信息
select
name 姓名,
age 年龄,
sex 性别,
address 地址,
math 数学成绩,
english 英语成绩,
hire_date 入学时间
FROM
stu
WHERE
age >= 20 && age <= 20; -- && 与 AND 含义一样 -- 4. 查询入学日期在’1998-09-01’到 ’1999-09-01’之间的学员信息
select
name 姓名,
age 年龄,
sex 性别,
address 地址,
math 数学成绩,
english 英语成绩,
hire_date 入学时间
FROM
stu
WHERE
hire_date BETWEEN '1998-09-01' AND '1999-09-01'; -- 5. 查询年龄等于18岁的学员信息
select
name 姓名,
age 年龄,
sex 性别,
address 地址,
math 数学成绩,
english 英语成绩,
hire_date 入学时间
FROM
stu
WHERE
age = 18; -- 6. 查询年龄不等于18岁的学员信息
select
name 姓名,
age 年龄,
sex 性别,
address 地址,
math 数学成绩,
english 英语成绩,
hire_date 入学时间
FROM
stu
WHERE
age != 18; -- 7. 查询年龄等于18岁 或者 年龄小于20岁 或者 年龄等于22岁的学员信息
select
name 姓名,
age 年龄,
sex 性别,
address 地址,
math 数学成绩,
english 英语成绩,
hire_date 入学时间
FROM
stu
WHERE
age = 18 OR age < 20 || age = 22; -- OR 与 || 含义一样 -- 8. 查询英语成绩为null 的学员信息
select
name 姓名,
age 年龄,
sex 性别,
address 地址,
math 数学成绩,
english 英语成绩,
hire_date 入学时间
FROM
stu
WHERE
english is NULL;

  3、模糊查询(like)

   通配符
(1)_: 代表单个任意字符
(2)%:代表任意个数字符

  

-- =============模糊查询 like ==========
/*
通配符
(1)_: 代表单个任意字符
(2)%:代表任意个数字符
*/ -- 1. 查询姓’马’的学员信息
select
name 姓名,
age 年龄,
sex 性别,
address 地址,
math 数学成绩,
english 英语成绩,
hire_date 入学时间
FROM
stu
WHERE
name LIKE '马%'; -- 2. 查询第二个字是’花’的学员信息
select
name 姓名,
age 年龄,
sex 性别,
address 地址,
math 数学成绩,
english 英语成绩,
hire_date 入学时间
FROM
stu
WHERE
name like '_花%'; -- 3. 查询名字中包含'德'的学员信息
select
name 姓名,
age 年龄,
sex 性别,
address 地址,
math 数学成绩,
english 英语成绩,
hire_date 入学时间
FROM
stu
WHERE
name like '%德%';

四、 排序查询

  1、 排序查询语法(中括号表示可以省略)

select 字段列表 from 表名 order by 排序字段名1 [排序方式1],排序字段名2 [排序方式2] ...;

  2、 排序方式

   ·ASC :升序排列(默认值)

   ·DESC :降序排列

  (当有多个排序条件时,当前边条件值一样时,才根据第二条件进行排序)

-- =================  排序查询
-- 1. 按照年龄升序排序
select * from stu ORDER BY age asc; -- 2. 按照数学二成绩降序排序
select * from stu order by math desc; -- 3. 按照数学成绩降序排序,如果数学成绩一样则按照英语成绩排序
select * from stu order by math desc , english asc ;

五、分组查询

  1、 聚合函数

    概念:将一列数据作为一个整体,进行纵向计算

    分类:(使用 count 统计数量时,通常使用 count(*)  *号会统计到任意行不全为null值的行,且会选择统计速度最快的一列)

        

    语法:(注意:null 值不参与所有聚合函数的运算)

select 聚合函数名(列名) from 表名;

    代码演示:

-- ==============聚合函数==========

-- 1. 统计班里有多少学生?
select count(name) from stu; -- 2.查询数学成绩最高分
select max(math) from stu; -- 3.查询数学成绩最低分
select min(math) from stu; -- 4.查询数学成绩总分
select sum(math) from stu; -- 5.查询数学成绩平均分
select avg(math) from stu;

  2、 分组查询

    语法:(注意:分组之后,查询的字段列表为聚合函数和分组字段 ,查询其他字段无任何意义)

select 字段列表 from 表名 [where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤];

    where 和 having 的区别:

      执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而 having 是分组之后对结果进行过滤

      可判断的条件不一样: where 不能对聚合函数进行判断,having 可以

    执行顺序:where > 聚合函数 > having

    代码演示:

-- ===========分组查询 ========

 -- 注意:分组之后,查询的字段列表为聚合函数和分组字段 ,查询其他字段无任何意义
-- 1. 查询男女同学各自的数学平均分
select sex,avg(math) from stu group by sex; -- 2. 查询男女同学各自的数学平均分,以及各自人数
select sex,avg(math),count(*) from stu group by sex; -- 3. 查询男女同学各自的数学平均分,以及各自人数,要求分数低于70分的不参与分组
select sex,avg(math),count(*) from stu where math >= 70 group by sex; -- 4. 查询男女同学各自的数学平均分,以及各自人数,要求分数低于70分的不参与分组,分组之后人数大于2个
select sex,avg(math),count(*) from stu where math >= 70 group by sex having count(*) > 2;

六、 分页查询

  1、 语法:

select 字段列表 from 表名 limit 起始索引, 查询条目数;

  起始索引: 从0开始

  计算公式: 起始索引 = (当前页码 - 1)* 每页显示的条数

    (分页查询 limit 是MySQL数据库的方言)

    (Oracle 分页查询使用 rownumber)

    (SQL Server 分页查询使用 top)

  代码演示:

--  ==============分页查询 =============

-- 1. 从0开始查询,查询3条数据
select * from stu limit 0,3; -- 2. 每页显示3条数据,查询第1页数据
select * from stu limit 0,3; -- 3. 每页显示3条数据,查询第2页数据
select * from stu limit 3,3; -- 4. 每页显示3条数据,查询第3页数据
select * from stu limit 6,3; -- 公式总结 起始索引 = (要查询的页码数 - 1)* 每页要显示的数据条数

DQL—查询操作的更多相关文章

  1. Statement执行DQL语句(查询操作)

    import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import org.junit.T ...

  2. 6.1课堂笔记—DML(数据操作语言),DQL查询语句

    一.DML(数据操作语言) InnoDB MyISAM 支持事务 不支持事务 不支持全文索引 支持全文索引 支持外键约束 不支持 命令查看默认存储引擎 show variables like '%st ...

  3. Mysql 数据库操作之DDL、DML、DQL语句操作

    Mysql 数据库操作之DDL.DML.DQL语句操作 设置数据库用户名密码 l  Show databases 查看数据库列表信息 l  查看数据库中的数据表信息 ,格式: use 数据库名: sh ...

  4. SQL中的DQL查询语句

    目录 1. DQL:查询语句 排序查询 聚合函数 分组查询 分页查询 2. 约束 3. 多表之间的关系 4. 范式 DQL:查询语句 1. 排序查询 语法:order by 子句 order by 排 ...

  5. (四)DQL查询数据(最重点)

    4.1   DQL Data Query Language 数据查询语言 1   所有的查询操作都用它  Select 2   简单的查询,复杂的查询它都能做 3   数据库中最核心的语言,最重要的语 ...

  6. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  7. MongoDB的查询操作

    1. 前言 在这篇博文中,我们将学习如何查询mongoDB中的数据.当我们把数据存储在mongoDB以后,我们需要把数据查询出来.毕竟CRUD操作中,查询操作在我们系统中是我们应用比较频繁的操作.我们 ...

  8. Django 1.10 中文文档------3.2.2 查询操作making queries

    3.2.2 查询操作 6.15章节包含所有模型相关的API解释. 后面的内容基于如下的一个博客应用模型: from django.db import models class Blog(models. ...

  9. InfluxDB学习之InfluxDB的HTTP API查询操作

    在 InfluxDB学习 的上一篇文章:InfluxDB学习之InfluxDB的HTTP API写入操作 中,我们介绍了使用InfluxDB的HTTP API进行数据写入操作的过程,本文我们再来介绍下 ...

  10. mongDB-- 3. 查询操作

    1. 准备工作 (1)启动mongo 进入mongo安装目录的bin/ 目录 , ./mongod (2)启动mongo客户端 ./mongo (3) 查看所有库 show dbs; (4) 切换到l ...

随机推荐

  1. 在Windows系统中解决端口占用问题

    在Windows系统中,你可以通过以下步骤查询并结束占用8001端口的进程: 查询占用8001端口的进程: 打开命令提示符(CMD)或者PowerShell,并执行以下命令:   netstat -a ...

  2. android 点击退出按钮 结束所有的activity 回到手机主页面

    android 点击退出按钮 结束所有的activity 回到手机主页面我 实现了回到主页面 但是在点击这个程序 他还是回到**退出的界面 ** 我要实现点击按钮回到手机主页面 在点击这个程序后就重新 ...

  3. 【Layui】11 滑块 Slider

    文档地址: https://www.layui.com/demo/slider.html 基本滑块: <fieldset class="layui-elem-field layui-f ...

  4. 从.net开发做到云原生运维(三)——.net core的学习路线

    1. 前言 前面几篇文章主要讲了.net技术相关的基本概念和一些涉及的项目什么,本身也没讲太多底层的技术,这篇文章依旧不讲具体的技术,主要介绍.net技术的学习路线.学习路线也是我18年毕业的时候看到 ...

  5. faster-fifo:C++实现的python多进程通信队列 —— 强化学习ppo算法库sample-factory的C++实现的python多进程通信队列 —— python3.12版本下成功通过测试

    项目地址: https://github.com/alex-petrenko/faster-fifo 需要注意,该项目给出了两种安装方法,一种是pip从pypi官网安装,一种是从GitHub上的源码安 ...

  6. 推荐一款好用的PDF转换工具,可以拆分、合并,亲测好用!!!

    推荐一款好用的PDF转换工具,可以拆分.合并,等等操作,亲测好用. PS. 因为经常会遇到PDF的拆分需要,以前在网上的都是免费的,后来的也都变成付费的无水印的了,再然后就变成全都要收费了.尴尬的是, ...

  7. 【转载】 nohup和&区别

    原文地址: https://www.cnblogs.com/xinzaiyuan/p/12097919.html =========================================== ...

  8. 从markdown引擎实现的角度看markerdown到底是什么?

    引用百度百科的解释: 链接:https://baike.baidu.com/item/markdown/3245829 Markdown 是一种轻量级标记语言,创始人为约翰·格鲁伯(John Grub ...

  9. 经典视频分享:Machine Learning: A New ICE (Identification, Control, Estimation) Age ? —— 自动控制和人工智能的结合前景

    机器学习作为近几年兴起的学科,虽然他诞生的时间已经而久远了,但是真正走进人们视野也就是这几年的事情. 机器学习领域本身只有强化学习这个分支和控制类是天然关联的,因此近几年国内的知名高校的强化学习研究者 ...

  10. 破局SAP实施难题、降低开发难度,定制化需求怎样快速上线?

    前言 SAP 是全球领先的业务流程管理软件供应商之一,其提供广泛的模块化解决方案和套件,所开发的软件解决方案面向各种规模的企业,帮助客户规划和设计业务流程.分析并高效设计整个价值链,以更好的了解和响应 ...