基本的DQL语句-单表查询
一、DQL语言
DQL(Data Query Language 数据查询语言)。用途是查询数据库数据,如SELECT语句。是SQL语句 中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为单表查询和多 表联查。
注意:所有的查询都会得到一张虚拟的表
二.单表查询
针对数据库中的一张数据表进行查询,可以通过各 种查询条件和方式去做相关的优化。
1.查询语句语法规则
SELECT [DISTINCT]
{*|表1.*|[ 表1.字段1 [as 字段别名1]
[, 表1.字段2[as 字段别名2]][, …]]}
FROM 表1 [ as 表别名 ]
[ left|right|inner join 表2 on 表之间
的关系 ]
[ WHERE ]
[ GROUP BY ]
[ HAVING]
[ ORDER BY]
[ LIMIT {[ 位置偏移量,] 行数 }] ;
| DISTINCT | 设定DISTINCT可以去掉重复记录。 |
| AS | 表名或者字段名过长时,可以用AS关键字起别名,方便操作。 |
| GROUP BY | 按组分类显示查询出的数据。 |
| HAVING | GROUP BY分组时依赖的分组条件。 |
| ORDER BY | 将查询出来的结果集按照一定顺序排序完成。 |
| LIMIT | 限制显示查询结果的条数。 |
2.最简单的查询
select 123;
select 'abc';
select 1+1;
3. 从表中获取数据
语法:select 字段名,字段名 from 表名
3.1 全字段查询
-- 全字段查询
select sid,sname,birthday,ssex,classid from student;
select * from student; -- sql优化 1.不要使用*代替字段名
3.2 部分字段查询
-- 部分字段查询
select sname,ssex from student;
4. 字段名起别名
表名或者字段名过长时,可以用AS关键字起别名,方便操作。
语法:SELECT 表别名.字段名1 AS 字段别名1, 表别名.字段名2 AS 字段别名2 FROM 表名 AS 表别名
select sname as '姓名' from student;
select sname as '姓名' , birthday '生日' ,ssex 性别 from student;
5.添加一个字段
select sname ,'猿究院' 学校 from student;
6. distinct 去重
语法:SELECT DISTINCT 字段名1, 字段名2... FROM 表名
注意:所有的字段数据要一致才会去重
select distinct sname,ssex from student;
7.WHERE条件子句
语法:SELECT * FROM 表名 [ WHERE 条件];
注意:
• WHERE条件子句不是必须的;
• WHERE子句,可以给查询增加条件;
• 条件:为筛选条件,如不指定则修改该表的所有数据。
- 带条件的查询-- 【where 子句】
select * from student where sid=5;
select * from student where sid<>5;
select * from student where sid>5;
select * from student where sid between 3 and 6;-- 查找1班的女同学
select * from student where classid=1 and ssex='女';
面试题!!!
查询 年龄 大于1990-1-1 的同学
select * from student where birthday < '1990-1-1';
7.1 LIKE 关键字
语法:SELECT * FROM 表名 WHERE 字段 LIKE 条件;
注意:
• 在WHERE子句中,使用LIKE关键字进行模糊查询;
• 与“%”一起使用,表示匹配0或任意多个字符;
• 与“_”一起使用,表示匹配单个字符。
模糊符号:
% 任意多的任意字符
_ 一个任意字符
-- 模糊符号
-- % 任意多的任意字符
-- _ 一个任意字符
insert into student(sname) values('杨靓');
insert into student(sname) values('杨文齐'),('小小杨'),('杨帅哥'),('帅气的杨同学');select * from student where sname like '%杨%';
select * from student where sname like '%杨';
select * from student where sname like '杨%';select * from student where sname like '杨_';
select * from student where sname like '杨__';
select * from student where sname like '杨___';
7.2 IN 关键字
语法:SELECT * FROM 表名 WHERE 字段 IN (值1,值2...);
注意:
• 查询的字段的值,至少与IN 后的括号中的一个值相同;
• 多个值之间用英文逗号隔开。
-- in 在某个特定的范围
-- 3 5 7 9
-- or 会让索引失效
select * from student where sid=3 or sid=5 or sid=7 or sid=9;-- 推荐
-- in 可以使用到索引
7.3 NULL 值查询
语法:SELECT * FROM 表名 WHERE 字段 IS NULL | IS NOT NULL
注意:
• NULL代表“无值”;
• 区别于零值0和空符串;
• 只能出现在定义允许为NULL的字段;
• 须使用 IS NULL 或 IS NOT NULL 比较操作符去比较。
-- null
-- is 是一个什么
select * from student where birthday is null;
select * from student where birthday is not null;
8.常用的聚合函数 (非常非常重要)
| 函数名 | 返回值 |
| AVG(col) | 返回指定列的平均值 |
| COUNT(col) | 返回指定列中非NULL值的个数 |
| MIN(col) | 返回指定列的最小值 |
| MAX(col) | 返回指定列的最大值 |
| SUM(col) | 返回指定列的所有值之和 |
聚合函数(非常重要*****)
把多个值变成一个值
- count() 统计个数
- max() 求最大值
- min() 求最小值
- sum() 求和
- avg() 求平均
-- 聚合函数(非常重要*****)
-- 把多个值变成一个值
-- count() 统计个数
-- max() 求最大值
-- min() 求最小值
-- sum() 求和
-- avg() 求平均-- count() 统计个数
-- count的特征: 任何类型都可以 但是不统计null
-- select count(字段\常量\*) from student;
select count(sid) from student; -- 主键
select count(classid) from student; -- 不统计nullselect count('a') from student; -- 不推荐
select count(123) from student; -- 推荐
select count(*) from student; -- 推荐-- sum avg min max 数值类型
select sum(score) from sc;
select avg(score) from sc;
select max(score) from sc;
select min(score) from sc;-- 统计出成绩表中一共有多少次考试,总成绩,平均分,最高分,最低分
/*
SELECT COUNT(DISTINCT sid) AS total_exams, SUM(score) AS total_score, AVG(score) AS average_score, MAX(score) AS highest_score, MIN(score) AS lowest_score
from sc;
*/
select count(*) ,sum(score),avg(score),max(score),min(score) from sc;
9.分组 group by
分组 group by
- 对所有的数据进行分组统计;
- 分组的依据字段可以有多个,并 依次分组。
- HAVING 与GROUP BY结合使用,进行分组 后的数据筛选。
-- 分组 group by ******
--男女同学各有多少人
select ssex,count(1) from student group by ssex;-- 统计出各班有多少人
select classid,count(1) from student group by classid;-- 统计成绩表中 每个同学的总分和平均分
select sid,sum(score),avg(score) from sc group by sid;-- 查询出平均分不及格的学生 sid 平均分
-- having where的区别 (面试)
-- having 对分组聚合后的数据进行筛选
select sid,sum(score),avg(score) from sc group by sid having avg(score) <60 ;
select sid,sum(score),avg(score) from sc where score<60 group by sid having avg(score) <60 ;
having where的区别 (面试)
10.ORDER BY排序
语法:SELECT * FROM 表名 ORDER BY 字段名 [DESC|ASC
注意:
• ORDER BY 表示对SELECT语句查询得到的结果,按字段名进行排序;
• DESC表示排序的顺序为降序,ASC表示排序的顺序为升序;
•“[ ]”包含的内容可以省略。
-- order by 排序
-- 先写先排
-- 升序 asc 不写(默认)
-- 降序 desc 必须声明
select * from student order by classid desc; -- 降序
select * from student order by classid asc; -- 升序select * from sc order by score desc, cid asc;
select * from sc order by score desc, cid desc;
11.LIMIT关键字
语法:SELECT * FROM 表名 LIMIT [n , m ]
注意:
• LIMIT关键字是MySQL特有关键字;
• LIMIT限制SELECT返回结果的行数;
• n 表示第一条记录的偏移量,m 表示显示记录的数量;
•“[ ]”包含的内容可以省略
limit 分页
步长 从0 开始 (页码-1)*步长,步长
语法:select * from student limit 位置,步长;
-- limit 分页
-- 步长 从0 开始 (页码-1)*步长,步长
select * from student limit 位置,步长;
select * from student limit 0,3;
select * from student limit 3,3;
select * from student limit 6,3;
-- 应用层解决
-- select * from student limit (3-1)*3,3; -- 错误的-- 找到成绩及格的总分数排名第二的 sid 总成绩
SELECT sid,sum(score) from sc where score >=60 group by sid order by sum(score) desc LIMIT 1,1;
拓展知识:
在不同的DBMS 中使用的关键字可能不同。在MySQL、PostgresQL、MariaDB和SQLite中使用LIMIT关键字,而且需要放到 SELECT语句的最后面。
如果是SQL Server和 Access,需要使用TOP关键字,比如:
SELECT TOP 5 name,hp_max FROM heros ORDER BY hp_max DESC
如果是 DB2,使用FETCH FIRST 5 ROwS ONLY这样的关键字;
SELECT name,hp_max FROM heros ORDER BY hp_max DESC FETCH FIRST 5 ROWS ONLY
如果是 Oracle,你需要基于 ROWNUM来统计行数:
SELECT rownum,last_name , salary FROM employees WHERE rownum <5 ORDER BY salary DESC;
相关文章:
基本的DQL语句-单表查询
一、DQL语言 DQL(Data Query Language 数据查询语言)。用途是查询数据库数据,如SELECT语句。是SQL语句 中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为单表查询和多 表联查。 注意:所有的查询…...
Vue3 对比 Vue2
相关信息简介2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王) 2 年多开发, 100位贡献者, 2600次提交, 600次 PR、30个RFC Vue3 支持 vue2 的大多数特性 可以更好的支持 Typescript,提供了完整的…...
2024中国大学生算法设计超级联赛(1)
🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,彩笔ACMer一枚。 🏀所属专栏:杭电多校集训 本文用于记录回顾总结解题思路便于加深理解。 📢📢📢传送门 A - 循环位移解…...
offer题目51:数组中的逆序对
题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如,在数组{7,5,6,4}中,一共存在5个逆序对,分别是(7…...
45、PHP 实现滑动窗口的最大值
题目: PHP 实现滑动窗口的最大值 描述: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。 例如: 如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3, 那么一共存在6个滑动窗口, 他们的最大值…...
【计算机视觉】siamfc论文复现实现目标追踪
什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置),来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中࿰…...
数学建模学习(111):改进遗传算法(引入模拟退火、轮盘赌和网格搜索)求解JSP问题
文章目录 一、车间调度问题1.1目前处理方法1.2简单案例 二、基于改进遗传算法求解车间调度2.1车间调度背景介绍2.2遗传算法介绍2.2.1基本流程2.2.2遗传算法的基本操作和公式2.2.3遗传算法的优势2.2.4遗传算法的不足 2.3讲解本文思路及代码2.4算法执行结果: 三、本文…...
Golang | Leetcode Golang题解之第241题为运算表达式设计优先级
题目: 题解: const addition, subtraction, multiplication -1, -2, -3func diffWaysToCompute(expression string) []int {ops : []int{}for i, n : 0, len(expression); i < n; {if unicode.IsDigit(rune(expression[i])) {x : 0for ; i < n &…...
Unity客户端接入原生Google支付
Unity客户端接入原生Google支付 1. Google后台配置2. 开始接入Java部分C#部分Lua部分 3. 导出工程打包测试参考踩坑注意 1. Google后台配置 找到内部测试(这个测试轨道过审最快),打包上传,这个包不需要接入支付,如果已…...
Spring Cloud之五大组件
Spring Cloud 是一系列框架的有序集合,为开发者提供了快速构建分布式系统的工具。这些组件可以帮助开发者做服务发现,配置管理,负载均衡,断路器,智能路由,微代理,控制总线等。以下是 Spring Cl…...
在 CentOS 7 上安装 Docker 并安装和部署 .NET Core 3.1
1. 安装 Docker 步骤 1.1:更新包索引并安装依赖包 先安装yum的扩展,yum-utils提供了一些额外的工具,这些工具可以执行比基本yum命令更复杂的任务 sudo yum install -y yum-utils sudo yum update -y #更新系统上已安装的所有软件包到最新…...
redis的学习(一):下载安装启动连接
简介 redis的下载,安装,启动,连接使用 nosql nosql,即非关系型数据库,和传统的关系型数据库的对比: sqlnosql数据结构结构化非结构化数据关联关联的非关联的查询方式sql查询非sql查询事务特性acidbase存…...
前端设计模式面试题汇总
面试题 1. 简述对网站重构的理解? 参考回答: 网站重构:在不改变外部行为的前提下,简化结构、添加可读性,而在网站前端保持一致的行为。也就是说是在不改变UI的情况下,对网站进行优化, 在扩展的…...
linux(CentOS、Ubuntu)安装python3.12.2环境
1.下载官网Python安装包 wget https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz 1.1解压 tar -xf Python-3.12.2.tar.xz 解压完后切换到Python-3.12.2文件夹(这里根据自己解压的文件夹路径) cd /usr/packages/Python-3.12.2/ 1.2升级软件包管理器 CentOS系…...
CSS 中border-radius 属性
border-radius 属性在 CSS 中用于创建圆角边框。它可以接受一到四个值,这些值可以是长度值(如像素 px、em 等)或百分比(%)。当提供四个值时,它们分别对应于边框的左上角、右上角、右下角和左下角的圆角半径…...
【大数据专题】数据仓库
1. 简述数据仓库架构 ? 数据仓库的核心功能从源系统抽取数据,通过清洗、转换、标准化,将数据加载到BI平台,进而满足业 务用户的数据分析和决策支持。 数据仓库架构包含三个部分:数据架构、应用程序架构、底层设施 1&…...
go关于string与[]byte再学深一点
目标:充分理解string与[]bytes零拷贝转换的实现 先回顾下string与[]byte的基本知识 1. string与[]byte的数据结构 reflect包中关于字符串的数据结构 // StringHeader is the runtime representation of a string.type StringHeader struct {Data uintptrLen int} …...
Qt 实战(7)元对象系统 | 7.4、属性系统:深度解析与应用
文章目录 一、属性系统:深度解析与应用1、定义属性2、属性系统的作用3、属性系统工作原理(1)Q_PROPERTY宏(2)moc 的作用(3)属性在元对象中的注册 4、获取与设置属性4.1、QObject::property()与Q…...
Docker核心技术:容器技术要解决哪些问题
云原生学习路线导航页(持续更新中) 本文是 Docker核心技术 系列文章:容器技术要解决哪些问题,其他文章快捷链接如下: 应用架构演进容器技术要解决哪些问题(本文)Docker的基本使用Docker是如何实…...
sklearn中的增量学习:特征提取的艺术
sklearn中的增量学习:特征提取的艺术 在机器学习领域,特征提取是构建有效模型的关键步骤。然而,并非所有数据集都适合一次性加载到内存中进行处理,尤其是在处理大规模数据集时。Scikit-learn(sklearn)提供…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
