数据库查询操作

数据库查询操作

  • 数据准备
  • 查询的基本操作
    • 查询部分字段的值
    • 取别名
    • 去重
  • 条件查询
    • 比较运算符
    • 逻辑运算符
    • 模糊查询
    • 范围查询
    • 为空判断
  • 排序
  • 分组聚合
    • count(*) : 求表的总的记录数
    • max(字段名): 查询对应字段的最大的值
    • min(字段名): 查询对应字段的最小的值
    • sum(字段名): 查询对应字段的值的总和
    • avg(字段名): 查询对应字段的值的平均数
    • 总和运用
  • 分组查询
    • group by
    • having
  • 分页查询

数据准备

drop table if exists students;
create table students (
studentNo varchar(10) primary key,
name varchar(10),
sex varchar(1),
hometown varchar(20),
age tinyint(4),
class varchar(10),
card varchar(20)
);

insert into students values
( '001', '王昭君 ', '女 ', '北京 ', '20', '1班 ', '340322199001247654'), ( '002', '诸葛亮 ', '男 ', '上海 ', '18', '2班 ', '340322199002242354'), ( '003', '张飞 ', '男 ', '南京 ', '24', '3班 ', '340322199003247654'),
( '004', '白起 ', '男 ', '安徽 ', '22', '4班 ', '340322199005247654'),
( '005', '大乔 ', '女 ', '天津 ', '19', '3班 ', '340322199004247654'),
( '006', '孙尚香 ', '女 ', '河北 ', '18', '1班 ', '340322199006247654'),
( '007', '百里玄策 ', '男 ', '山西 ', '20', '2班 ', '340322199007247654'), ( '008', '小乔 ', '女 ', '河南 ', '15', '3班 ', null),
( '009', '百里守约 ', '男 ', '湖南 ', '21', '1班 ', ''),
( '010', '姐己 ', '女 ', '广东 ', '26', '2班 ', '340322199607247654'), ( '011', '李白 ', '男 ', '北京 ', '30', '4班 ', '340322199005267754'), ( '012', '孙眠 ', '男 ', '新疆 ', '26', '3班 ', '340322199000297655');

在这里插入图片描述

查询的基本操作

查询部分字段的值

-- 查询某些字段
select name,sex,age from students;

取别名

-- 表起别名
select s.name,s.sex,s.age from students as s;
-- 字段取别名
select s.name as 姓名,s.sex as 性别,s.age as 年龄 from students as s;

去重

-- 字段内容去重
select DISTINCT sex from students;

条件查询

比较运算符

比较运算符: 大于(>)、等于(=)、小于(<)、大于等于(>=)、小于等于(<=)、不等于(<>或者!=)

-- //条件查询:比较运算符
-- 例1:  查询小乔的年龄
select age from students where name = '小乔';
-- 例2:  查询20岁以下的学生
select * from students where age <20;
-- 例3:  查询家乡不在北京的学生       != 之间不能有空格
select * from students where hometown != '北京';
-- 1、  查询学号是'007'的学生的身份证号
select card from students where studentNo= '007';
-- 2、  查询'1班 '以外的学生信息
select * from students where class <> '1班';
-- 3、  查询年龄大于20的学生的姓名和性别
select name,sex from students where age >20;

逻辑运算符

逻辑运算符: and(且,同时符合对应的条件), or (或,符合其中的—个条件), not (非,不符合该条件)

-- //条件查询:逻辑运算符
select * from students where age=18 and sex='女';
-- 查询出女学生或者是1班的学生
select * from students where sex='女' or class='1班';
-- 查询非天津的学生的记录
select * from students where not hometown='天津';
select * from students where hometown != '天津';

模糊查询

模糊查询: like关键字
% : 匹配任意个字符
_ :匹配任意单个字符
—般LIKE关键字只用来匹配字段类型为字符串的

-- //条件查询:模糊查询
-- 例1:  查询姓孙的学生
select * from students where name like '孙%';
-- 例2:  查询姓孙且名字是—个字的学生
select * from student where name like '孙_';
-- 例3:  查询姓名以‘ 乔 ’ 结尾的学生
select * from students where name like '%乔';
-- 例4:  查询姓名中包含‘ 白 ’ 的学生
select * frm students where name like '%白%';
-- 1、 查询姓名为两个字的学生
select * from students where name like '__';
-- 2、  查询姓‘百’且年龄大于20的学生
select * from studen where name like '百%' and age >20;
-- 3、  查询学号以1结尾的学生
select * from students where studentNo like '%1';

范围查询

in : 查询非连续范围内的数据
between … and : 查询连续范围内的数据(用来数值型字段中)

-- //条件查询:范围查询
 --  查询家乡为北京或上海或广东的学生(in)
 select * from students where hometown in ( '北京 ', '上海 ', '广东 ');
 select * from students where hometown= '北京 ' or hometown= '上海 ' or hometown= '广东 '
 -- -- 查询年龄在18到20之间的学生(between and)
 select * from students where age between 18 and 20;
 select * from students where age >=18 and age <= 20;
 -- 1、  查询年龄为18或19或22的女生
 select * from students where age >= 18 age <= 20;
 select * from students where age betwwen 18 and 20;

为空判断

null 和 ''空字符串不一样
空判断: is null
非空判断: is not null

-- //条件判断:为空判断
 -- 查询出学生身份证号为空的信息
 select * from students where card is null;
 -- 查询出学生身份证不为空的信息
 select * from studnts where card is not null;

排序

select * from 表名 order by 字段1 asc |desc, 字段2 asc |desc
字段的排序规则默认为升顺排列(从小到大)
asc: 表示从小到大排序(升序)
desc: 表示从大到小排序(降序)

-- //排序
 -- 例1:  查询所有学生信息,按年龄从小到大排序
 select * from students order by  age;
 -- 例2:  查询所有学生信息,按年龄从大到小排序,     年龄相同时,再按学号从小到大排序
 select * from students order by age desc,studentNo;
 -- 1、  查询所有学生信息,按班级从小到大排序,     班级相同时,再按学号从小到大排序
select * from students order by class, studentNo;

分组聚合

使用聚合函数方便进行数据统计
聚合函数不能在where中使用

count(*) : 求表的总的记录数

-- 查询学生表的总记录数
select count(*) from students;

max(字段名): 查询对应字段的最大的值

-- 查询女生的最大年龄
select age from students where sex='女';
select max(age) from students where sex='女';

min(字段名): 查询对应字段的最小的值

-- 查询1班的最小年龄
select class,age from students where class ='1班';
select min(age) from students where class ='1班';

sum(字段名): 查询对应字段的值的总和

-- 查询北京学生的年龄总和
select hometown,age from students where hometown='北京';
select sum(age) from students where hometown='北京';

avg(字段名): 查询对应字段的值的平均数

-- 查询女生的平均年龄
select sex,age from students where sex ='女';
select avg(age) from students where sex='女';

总和运用

-- 查询所有学生的最大年龄、最小年龄、平均年龄
select max(age),min(age),avg(age) from students;
-- 一班共有多少个学生
select count(*) from students where class='1班';
-- 查询3班年龄小于18岁的同学有几个
select count(*) from students where class='3班' and age < 18;

分组查询

group by

  • 格式
select 字段名1,字段名2,聚合函数 .... from 表名     group by 字段名1,字段名2....
  • 例子
-- //分组查询--group by
-- 查询各种性别的人数
select sex,count(*) from students group by sex;
-- 查询各种性别年底最大的
select sex,max(age) from students group by sex;
-- 查询各个班级的人数
select class,count(*) from students group by class;
-- 查询各个班级中不同性别的人数
select class,sex,count(*) from students group by class,sex;

having

  • 格式
select 字段名1,字段名2,聚合函数 .... from 表名     group by 字段名1,字段名2....
having 条件
  • 例子
--  //分组查询--having
-- 查询男生总人数
select count(*) from students where sex='男';
select sex,count(*) from students group by sex having sex='男';
-- 查询每个班级男生的总记录数
select class,sex,count(*) from students group by class,sex having sex='男';
-- 查询所有班级中不同性别的记录数大于1的信息
select class,sex,count(*) from students group by class,sex haxing count(*)>1;

在这里插入图片描述

分页查询

  • 格式
select * from limit start, count
  • 例子
-- //分页查询
-- 查询前3行的学生信息
select * from students limit 0,3;
select * from students limit 3;

-- //公式select * from students limit (n-1)*m, m;
-- n=1,m=3(n代表的是页数,m代表的是每页显示的记录数)
select * from students limit 03;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/449030.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

宝塔 Let‘s Encrypt 该帐户1小时内失败的订单次数超过5次,解决办法

今日用宝塔申请SSL证书时候提示失败&#xff1a;内容如下 {x} 我信了&#xff0c;当我等了一个小时&#xff0c;再次申请时候依然是同样的错误 {x} 我信了&#xff0c;当我等了一天&#xff0c;再次申请时候依然是同样的错误 不等了 当遇到这种情况该怎么办呢&#xff1f;这时候…

@RequestBody

目录 概述 深入细节 案例 RequestBody与前端传过来的json数据的匹配规则 指定模型中的属性对应什么key 用Valid校验RequestBody的参数 根据RequestBody的内容来区分使用哪个资源 概述 RequestBody主要用来接收前端传递给后端的json字符串中的数据(请求体中的数据)而最常…

【中级软件设计师】上午题02-程序设计语言

上午题02-程序设计语言 1 编译程序和解释程序2 程序设计语言基本成分3 传值调用与传引用调用4 编译器的工作阶段4.1 编译方式和解释方式4.2 符号表4.3 词法、语法、语义分析与目标代码生成4.4 程序异常和错误4.5 中间代码 5 正规式 1 编译程序和解释程序 解释器&#xff1a; 翻…

LeetCode - 寻找数组的中心

先学习一下前缀和吧 LCR 012.寻找数组的中心LCR 012. 代码解析 在读题读到左侧元素之和等于右侧所有元素之和的时候&#xff0c;我觉得可以用前缀和&#xff0c;然后结合下面的示例&#xff0c;模拟了一下发现确实可以。 我的想法是搞两个数组&#xff0c;一个来存从左到右数…

Halcon测量专栏-圆弧测量

1.前言 1.1什么是圆弧 圆上任意两点间的部分叫做圆弧。由于圆弧有正反的特性&#xff0c;即为有顺时针方向和逆时针方向&#xff0c;在确定圆弧时&#xff0c;也需要确定圆弧的方向。 1.2halcon实现方式 针对圆弧的问题。1&#xff1a;它与圆是相似的&#xff0c;都具备中心…

视频监控汇聚管理系统EasyCVR平台RTMP推流异常是什么原因?

AI视频智能分析/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff08;专网、内网、局域网、广域网、公网等&#xff09;&#xff0c;支持设备通过4G、5G、WIFI、有线等方式接入&#xff0c;并将设备进行统一集中接入与视频汇聚管理&#xff0c;经平台接入的视频流能实现多…

王道机试C++第 5 章 数据结构二:队列queue和21年蓝桥杯省赛选择题Day32

目录 5.2 队列 1&#xff0e;STL-queue 课上演示&#xff1a; 基本代码展示&#xff1a; 2. 队列的应用 例:约瑟夫问题 No. 2 题目描述&#xff1a; 思路提示&#xff1a; 代码展示&#xff1a; 例&#xff1a;猫狗收容所 题目描述&#xff1a; 代码表示&#xff1…

安防视频监控汇聚平台EasyCVR使用RTMP推流出现异常的原因排查与解决

AI视频智能分析/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff08;专网、内网、局域网、广域网、公网等&#xff09;&#xff0c;支持设备通过4G、5G、WIFI、有线等方式接入&#xff0c;并将设备进行统一集中接入与视频汇聚管理&#xff0c;经平台接入的视频流能实现多…

大数据开发 hadoop集群 2.hadoop框架入门

自从我学会了寻找&#xff0c;我就已经找到 ——史铁生 —— 24.3.10 内容简介 Hadoop入门&#xff1a; ①概念 ②环境准备 ③hadoop生产集群搭建 ④常见错误的解决方案 ①概念&#xff1a;1.Hadoop是什么 2.Hadoop发展历史 3.Hadoop…

【Linux】线程封装_互斥

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f449;&#x1f3fb;线程封装Thread.cpp &#x1f449;&am…

骨传导耳机哪个牌子好?五大热门品质机型盘点,体验超赞!

在蓝牙耳机中&#xff0c;骨传导耳机凭借不入耳佩戴更健康等优点&#xff0c;迅速成为当下的热门款式&#xff0c;但随着骨传导耳机市场的品牌日渐增多&#xff0c;以及市场上不专业的骨传导耳机泛滥成灾的问题&#xff0c;有很多消费者在选择骨传导耳机的时候&#xff0c;都出…

【算法】Hash存储——开放寻址法

模拟散列表 维护一个集合&#xff0c;支持如下几种操作&#xff1a; I x&#xff0c;插入一个整数 x&#xff1b; Q x&#xff0c;询问整数 x是否在集合中出现过&#xff1b; 现在要进行 N次操作&#xff0c;对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 N&am…

代码随想录 贪心算法-中等题目-序列问题

376.摆动序列 376. 摆动序列 中等 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 。第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如&#xff0c; [1, 7…

spring boot 访问 static public 目录下的静态资源报404解决办法

1.前提是你没有修改spring boot 默认拦截路径&#xff0c;跟默认访问资源的目录。 在idea 设置中 把 compiler 下的 Buid project automatically 勾选上

开源的java视频处理库介绍

本文将为您详细讲解 Java 开源的视频处理库&#xff0c;以及它们的特点、区别和应用场景。Java 社区提供了多种视频处理库&#xff0c;这些库可以帮助您在 Java 应用程序中实现视频的录制、编辑、转换和播放等功能。 1. JCodec 特点 - 基于 Java 的视频编解码库。 - 支…

ChatGpt只能看,但无法发送消息的解决办法

这几天发现chatgpt没法发送消息了,我以为是网络问题,又过了几天还是不能发,我以为是梯子的问题,可给我急坏了,于是我用无痕模式发现可以访问额. 但是无痕模式毕竟不是长久之计,于是找到了一个方法 1.首先把电脑缓存全清除了 第一种方法: 快捷键是 : ctrlshiftdel (这会吧浏览…

分支需求管理方式

此文为上一篇文章的后续 我们来回顾一下&#xff0c;现在&#xff0c;你的小组负责的系统&#xff0c;有主干分支&#xff0c;每次新的需求&#xff0c;你都从主干(formal)拉取分支(dev-日期-需求名)进行修改&#xff0c;自测通过后&#xff0c;合并至测试分支(test)进行提测&a…

Python高级二

一、异常 1、定义 异常是在程序执行过程中出现的错误或意外情况。当程序遇到异常时&#xff0c;它会中断当前的执行流程&#xff0c;并尝试找到相应的异常处理机制来解决问题。 2、常见异常类型 SyntaxError&#xff1a;语法错误&#xff0c;通常是代码书写不符合Python语法规则…

VSCode单机活动栏图标无法收起

如果活动栏为展开状态&#xff0c;单击活动栏图标可以正常收起&#xff0c;但无法通过再次单击打开&#xff0c;解决方案如下&#xff1a; 设置->工作台->外观&#xff1a; Activity Bar:Icon Click Behavior: 切换为默认的toggle

C++ 作业 24/3/11

1、提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数&#xff08;要求使用C风格字符串完成&#xff09; #include <iostream>using namespace std;int main() {string str;cout << "please enter str:&…