数据库——DQL单表查询

news/2024/12/21 23:47:40/文章来源:https://www.cnblogs.com/lu-ciana/p/18444712

DQL单表查询

id name gender age score
111111 刘一 20 NULL
186222 陈二 30 90
275933 张三 24 92
266055 李十四 20 92
134444 王五 18 92
225573 赵十六 22 94

一、简单查询(SELECT...FROM...)

1.查询所有字段(*)

--SELECT * FROM 表名;
SELECT * FROM class1;--SELECT 表中所有的字段 FROM 表名;
SELECT id,name,gender,age,score FROM class1;

image

2.查询指定字段

--SELECT 字段1,字段2... FROM 表名;
SELECT name,id FROM class1;

image

3.查询去重数据(DISTINCT

--当关键字DISTINCT应用于一个字段,该关键字会对表中相同成绩的同学进行除去
--SELECT DISTINCT 字段 FROM 表名;
SELECT DISTINCT score FROM class1;
--当关键字DISTINCT应用于多个字段,该关键字会对表中性别和成绩都相同的同学进行除去
--SELECT 字段1,字段2... FROM 表名;
SELECT DISTINCT gender,score FROM class1;

image

二、条件查询(SELECT * FROM ... WHERE... 运算符...)

1.带比较运算符的查询

image

--SELECT * FROM 表名 WHERE 字段 IS NULL;
SELECT * FROM class1 WHERE score IS NULL;

image

--SELECT * FROM 表名 WHERE 字段 LIKE '_ _ _';
--找到name是三个字的数据
SELECT * FROM class1 WHERE name LIKE '___';--#SELECT * FROM 表名 WHERE 字段 LIKE '1%';
--找到id是1开头的数据
SELECT * FROM class1 WHERE id LIKE '1%';

image

--SELECT * FROM 表名 WHERE 字段 BETWEEN 值 AND 值;
--找到年龄18-22的数据(包含18和22)
SELECT * FROM class1 WHERE age BETWEEN 18 AND 22;

image

--SELECT * FROM 表名 WHERE 字段 IN(20,30);
--找到年龄20和30的数据
SELECT * FROM class1 WHERE age IN(20,30);

image

--SELECT * FROM 表名 WHERE 字段 = 值;(其他运算符类似)
--若值为字符串则需要用''对数据进行包裹
SELECT * FROM class1 WHERE name = '刘一';
SELECT * FROM class1 WHERE age = 20;
SELECT * FROM class1 WHERE age < 20;
SELECT * FROM class1 WHERE age <= 20;
SELECT * FROM class1 WHERE age => 20;
SELECT * FROM class1 WHERE age <> 20;
SELECT * FROM class1 WHERE age != 20;

注意:

  • <>和 != 的区别

<>和!=都用来比较操作数是否不相等,<>运算符适用于所有的数据类型,!=不适用于BLOB和TEXT数据类型。

NULL不能使用二者进行比较。

  • 字符 % 和 _ 的转义

当通配符在字符串中有特殊含义的时候用到\进行转义。

image

2.带逻辑运算符的查询

image

--SELECT * FROM 表名 WHERE 字段 表达式1 AND(&&) 表达式2;
--找到年龄20和id为4的数据
SELECT * FROM class1 WHERE age = 20 AND id =111111;
SELECT * FROM class1 WHERE age = 20 && id =111111;

image

--SELECT * FROM 表名 WHERE 字段 表达式1 OR(||) 表达式2;
--找到年龄20,id为4的数据
SELECT * FROM class1 WHERE age = 20 OR id =111111;
SELECT * FROM class1 WHERE age = 20 || id =111111;

image

--SELECT * FROM 表名 WHERE 字段 NOT IN(20,30);
--找到年龄不是20和30的数据
SELECT * FROM class1 WHERE age NOT IN(20,30);--找到年龄不是20的数据
SELECT * FROM class1 WHERE age !=20;

image

三、聚合查询(SELECT 函数(...) FROM ...)

image

1.COUNT函数

--SELECT COUNT(*) FROM 表名,使用该语句会计算为NULL的语句
--查询表中的总行数
SELECT COUNT(*) FROM class1;--SELECT COUNT(字段) FROM 表名,使用该语句不会计算为NULL的语句
--查询score除了NULL的行数
SELECT COUNT(score) FROM class1;

image

2.SUM函数

--SELECT SUM(字段) FROM 表名,使用该语句不会计算为NULL的语句
--字段中值的总和
SELECT SUM(score) FROM class1;

image

3.AVG函数

--SELECT AVG(字段) FROM 表名,使用该语句不会计算为NULL的语句
--字段中值的平均数
SELECT AVG(score) FROM class1;

image

4.MAX函数

--SELECT MAX(字段) FROM 表名
--字段中值的最大值
SELECT MAX(age) FROM class1;

image

5.MIN函数

--SELECT MIN(字段) FROM 表名
--字段中值的最大值
SELECT MIN(age) FROM class1;

image

四、分组查询(SELECT ... FROM ...GROUP BY...)

1.单独使用

--SELECT 字段 FROM 表名 GROUP BY 字段
SELECT age FROM class1 GROUP BY age;

image

2.与聚合函数一起使用

--SELECT 字段1,函数1(字段2),函数2(字段3) FROM 表名 GROUP BY 字段
SELECT age,AVG(score),SUM(age) FROM class1 GROUP BY age;

image

3.与HAVING关键字一起使用

--SELECT 字段1,函数1(字段2) FROM 表名 GROUP BY 字段 HAVING表达式
SELECT age,SUM(age) FROM class1 GROUP BY age HAVING SUM(age)<30;

image

注意:当使用 GROUP BY时 WHERE 和 HAVING的区别

WHERE是在GROUP BY分组之前进行的条件判断,HAVING是在GROUP BY分组之后进行的。

SELECT age,AVG(score) FROM class1 WHERE age<24 GROUP BY age;
SELECT age,AVG(score)FROM class1 WHERE age<24 GROUP BY age HAVING AVG(score)=92;

image

五、排序查询(SELECT ... FROM ...ORDER BY...)

1.ASC(默认)

--SELECT 字段 FROM 表名 ORDER BY 字段 [参数];
SELECT score FROM class1 ORDER BY score ;
SELECT score FROM class1 ORDER BY score ASC;--SELECT 字段1,字段2 FROM 表名 ORDER BY 字段1 [参数],字段2 [参数];
SELECT score,age FROM class1 ORDER BY score,age;
SELECT score,age FROM class1 ORDER BY score ASC,age ASC;

image

2.DESC

--SELECT 字段 FROM 表名 ORDER BY 字段 [参数];
SELECT score FROM class1 ORDER BY score DESC;

image

六、限量查询(SELECT * FROM ... LIMIT...)

--SELECT * FROM 表名 LIMIT [OFFSET偏移量],每一页多少条记录;
SELECT * FROM class1 LIMIT 2;
SELECT * FROM class1 LIMIT 0,2;
SELECT * FROM class1 LIMIT 2,2;
SELECT * FROM class1 LIMIT 4,2;

image

七、内置查询(SELECT 函数(...) FROM ...)

1.数学函数

image

2.字符串函数

image

3.CONCAT函数

--SELECT CONCAT(字段1,连接符,字段2) FROM 表名,若连接符为字符,需要用''将连接符进行一个包裹。
#对输入的字段进行连接
SELECT CONCAT(name,666,score,666,id) FROM class1;
SELECT CONCAT(name,'_',score,'_',id) FROM class1;

image

4.IF()函数

--SELECT 字段1,IF(表达式,返回值1,返回值2) FROM 表名,类似于三目表达式,表达式成立返回返回值1,不成立返回返回值2。
SELECT name,IF(ISNULL(score),'缺考',score) FROM class1;

image

八、设置别名(AS

1.为数据表取别名

--SELECT * FROM 表名 [AS] '别名';
SELECT * FROM class1 c1;
SELECT * FROM class1 AS c1;#使用别名的方法
SELECT * FROM class1 c1 WHERE cl.score = 92;

image

2.为字段取别名

--SELECT 字段1 [AS] 别名,字段2[AS] FROM 表名;
SELECT name '名字' FROM class1;
SELECT name AS '名字' FROM class1;SELECT id '学号',name'名字',gender '性别',age '年龄',score '成绩' FROM class1;

image

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库——DDL数据库和数据表的基本操作

DDL 一、数据库的基本操作 1、创建(CREATE) --CREATE DATABASE/SCHEMA [IF NOT EXISTS] 表名[指定数据库的字符集]; --创建名为my的数据库 CREATE DATABASE my; CREATE SCHEMA my;--如果名为my的数据库不存在则创建,避免了当数据库存在而发生的错误 CREATE DATABASE IF NOT EXI…

安卓Android虚拟机分享及使用

不知道大家伙在安装安卓虚拟机时被各式各样的问题折磨过没,我在安装安卓虚拟机时,遇到的问题简直就像长江之水源源不断,就算是最后安装好了也会因为各式各样的原因无法进入启动桌面。 当我发现这个可以直接导入到电脑一键开启运行的虚拟机时,今天我必须分享给大家!话不多说…

PotPlayer(免费媒体播放器) v1.7.22233.0 多语便携版

概述 PotPlayer是一款由韩国企业Daum开发的免费媒体播放器,它提供了丰富的功能和特点,使其成为许多用户的首选播放器。 软件功能 支持多种音视频格式:PotPlayer支持大多数常见的音视频格式,包括MP4、AVI、MKV、MOV、FLV、MP3、WAV等。高质量的音视频播放:PotPlayer采用了…

25赛季算法组第一阶段第二次培训(ubuntu安装与基本使用)

25赛季算法组第一阶段第二次培训 1. Ubuntu 的介绍 1.1. 操作系统和操作系统的选择 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心。 操作系统的作用是管理和控制计…

[Electron] 搭建 Vite+Electron 项目

安装 搭建 Vite 项目(根据官方文档搭建),安装 electron、nodemon。 pnpm install electron nodemon -D配置 electron/main.js file:[electron/main.js]import { app, BrowserWindow } from "electron";const createWindow = () => {const win = new BrowserWin…

多校A层冲刺 NOIP2024 模拟赛 01

T1 构造字符串 签到题 注意到 \(n\) 和 \(m\) 较小,直接扫一遍用并查集维护他所描述的情况,并将不同的位置记录下来,若存在不同的位置属于同一个集合则不可能构成,否则贪心从前往后取 mex 即可。 时间复杂度 \(O(nm\alpha(n))\) 。 T2 寻宝 签到题 首先先用并查集将大联通块…

2024/10/3 CSP-S模拟赛20241003

A 恶心恶心恶心,赛时写了一个二分+线段树的复杂度错了,当时yzh和lyz就一会骗我一会说实话的,搞得很懵,自己水平也是菜,那线段树分析复杂度怎么不把递归次数乘上呢?大傻逼grz 思路其实还挺好的。 你考虑很容易就发现一个性质,如果一个区间内存在两个数互质的话,这个区间…

Android 简介

安卓 (Android) 是一种基于 Linux 内核的自由及开放源代码码的操作系统. 主要用于移动设备, 如智能手机和平板电脑, 由美国 Google 公司和开放手机联盟领导及开发. Android 操作系统最初由 Andy Rubin 开发, 主要支持手机. Android 是一种操作系统. Android 系统是开放源代码的…

listary

一、概述 Listary Pro 是一款功能强大的文件管理工具,通过快速搜索、文件夹导航、第三方应用集成和标签管理等功能,大大提升了用户的文件管理效率。无论是在工作中还是日常生活中,Listary Pro 都能成为用户不可或缺的助手。如果你还在为文件查找和管理而烦恼,不妨试试 List…

十、特殊应用:人脸识别和神经风格转换

1、One-Shot学习(One-shot learning)人脸识别所面临的一个挑战就是需要解决一次学习问题(one-shot learning problem),这意味着在大多数人脸识别应用中,你需要通过单单一张图片或者单单一个人脸样例就能去识别这个人。而历史上,当深度学习只有一个训练样例时,它的表现并…

python高级内置函数

filter函数返回迭代器

表情包

创建于 8.1 updated on 10.3:整理博客时发现这个了,当时不敢发,现在没啥问题了吧,毕竟涉及人员都 【数据删除】 了,遂发布。 整理博客发现欧耶! https://img2024.cnblogs.com/blog/3365934/202407/3365934-20240725151423252-219730277.png 害羞 起飞呦 哒咩