DQL基本查询操作

简介: DQL基本查询操作

DQL查询操作主要包括有:

一:简单查询:

最基本的查询操作,基础语句:

关键词:select ... from [表名];

查询操作:

-- 一:查询所有商品
-- select 后面可以跟想要显示的列的名称,
-- 也可以直接用 * 来直接显示所有的列,展现出来整个的表
select * from product
 
-- 二:查询商品名称以及商品的价格
select name,price from product;
 
-- 三:别名查找:对于表或者是某一列重新设置一个新的名称
-- 关键字是as
-- 3.1表别名:
select from product as p;
-- 3.2列别名
select price as'价格',name '商品名称' from product;
-- 设置别名是为了在比较多的表或者是一个表当中的许多列中
-- 更容易的找到所需要查询的数据
 
-- 四:去掉重复值
select DISTINCT price from product 
-- 如果只查询一列,比如说价格这一列,使用关键字distinct
-- 能够去掉所有的相同的价格,重复值
-- 但是如果对于多个列,除非是完全相同,否则是不会除去的
 
-- 五:让所有商品的价格都在原来的基础之上增加10元
select name,price+10 from product;
-- 此查询并不改变原来表格当中的商品价格


二:运算符操作

1.运算符操作'主要'包括有:算数运算符(+ , - ,* ,/ ,%)

比较运算符(> ,< ,>= ,<= ,!=)

逻辑运算符(||或者 ,&&并且)

2.查询有关操作:

-- 基本查询操作当中的运算符操作----算数运算符号
-- 主要包括的是+ - * / %
-- 操作:
select name,price+10 as new_price from product;
 
select name ,price*1.1 new_price from product;
 
-- 基本查询操作--逻辑查询操作
-- 一:查询商品名称为海尔洗衣机的商品的所有信息
select * from product where name='海尔洗衣机';
-- 二:查询价格为800的商品
select * from product where price=800;
-- 三:查新商品价格不是800的产品
select * from product where price!=800; 
-- 四:查询商品价格大于60的所有产品
select * from product WHERE price>60;
-- 五:查询商品价格在200-1000之间的产品的所有信息;
SELECT * FROM product WHERE price>=100 && price<=1000;
-- 六:查询价格是200或者是800的所有产品;
SELECT * FROM product WHERE price=200 ||price=800;
 
-- 七:查询含有'裤'字的所有产品
select * from product WHERE name like '%裤%';
-- %的作用是能够忽略前面是否含有字,或者是后面是否含有字
-- %能够匹配任何的字符
 
-- 八:查询以海字开头的所有商品
select * from product where name like '海%';
-- 九:查询第二个字是'蔻'的所有商品
SELECT * FROM product WHERE name like '_蔻'; 
-- 一个下划线能够匹配单个的字符
 
-- 九:查新kind为null的所有商品
-- 错误写法:SELECT * FROM product WHERE kind=null;
-- 因为对于null来说它跟任何的值都是不一样的都是不相等的
-- 因此并不能够用简单的逻辑运算符号来表示为null 
-- 正确写法:
SELECT * from product WHERE kind is null;
-- 十:查询kind不是null分类的所有商品
SELECT * from product where kind is not null;
 
-- 十一:求最大值:相当于使用了一个函数
select LEAST(11,13,46) as '最小值' ;
-- 同时的,如果在函数当中的值有null值
-- 十二:求最大值:也是一个函数
select GREATEST(100,null,456);
-- 如果函数当中有null那么在最大值的函数当中也是会显示出来null值的


三:排序查询

关键字:order by ... desc || asc

其中desc代表的是降序排,而asc为默认的排序,是升序排序,一般情况下后者可以直接省略,而desc不能

查询操作:

-- 选择排序方法
-- 关键字:order by
-- 操作:
select * from product order by price;
-- 在默认的情况下,如果进行排序的时候都会进行升序排序
-- 也可以加上asc表示升序排序
SELECT * FROM product ORDER BY price desc;
 
-- 排序查询:
-- 一:按照使用价格进行排序(降序)
SELECT * FROM product ORDER BY price desc;
-- 二:在价格降序排序的基础之上,以分类排序作为一个标准
-- 依然是降序的
SELECT * from product order by price desc,kind desc;
-- 如果有多重的排序标准的情况下,只有满足最左边的排序,才会继续进行右边的排序方式!
-- 三:显示商品的价格,降序,并且去掉重复值
select distinct price from product order by price desc;
 


四:聚合查询(函数)

关键字:count(), max(), sum(),min(),avg()[求平均值]

介绍:

1.之前的所有查询都是横向的查询,聚合查询可以做到行查询的操作

2.聚合查询会自动的忽略这一列当中的NULL值!不进行计算

查询操作:

-- 操作以及用法:
-- 一:求这个表格当中一共有多少行
-- keyword:count();
select count(id) from product;
 
-- 二:计算种类为c001的商品的所有的价格的和
select sum(price) as total from product where kind='c001';
-- 三:计算商品名称当中有'裤'字的所有商品的最大||最小值:
select max(price),min(price) from product where name like '%裤%';
-- 四:计算商品价格在300元以上的裤子的平均价格
select avg(price) from product where name like '%裤%' && price>300;
 
-- 聚合查询需要注意的--NULL点:
-- 对于所有的聚合函数来讲,如果要查询的某一个列当中含有
-- NULL值,那么都会视而不见,不计入计算当中的,max,min,avg,等等都不会将NULL值计入进去


五:分组查询

关键词:group by

介绍:使用分组查询的方法能够把相同的放在一起查找,分类,便于查找

基本操作:

-- DQL--基本查询--分组查询
-- 关键字:group by
update product set kind='c004' where id=18; 
-- 一:统计各个分类商品的个数
select kind,count(kind) from product group by kind;
 
-- 分组查询之后再进行相应的选择
-- 关键字:having 仅仅使用在分组之后再次的进行选择,而不是使用where
 
-- 查询各个不同类的商品当中个数大于4的产品 按照降序排序
select kind,count(kind) from product group by kind  HAVING count(kind) >4 order by count(kind) desc;
-- 由此可以看出来,执行的顺序首先是从from开始的,之后向右进行一步一步的排查,查询,在进行group by-->select -->
-- count(kind)-->having -->order by最终的结果进行排序


六:分页查询

关键词:limit

介绍:有些数据库当中的表中行数比较多,而显示屏的大小有限,所以应当采取分页进行的操作,这样就能够有效的分开显示这些数据

基本操作:

-- tips:分页查询的操作一般都是放在末端进行的
-- 关键词:LIMIT
-- 表达方式一:
select * from product limit 0;
-- 后面的数字代表从头开始,一共显示多少行
-- 表达方式二:
select * from product limit 3,4;
-- 后面两个数字,第一个代表的是从索引为多少的数开始进行查询操作,是索引数(index)
-- 后面的一个也是代表显示多少行
 
 
-- 表跟表之间的复制粘贴操作
-- 目的,将一个已经创建过有数据的表当中数据先进行
-- 查询,之后将其复制到另外一个'提前'已经创建过的表当中
-- 一:重新创建一个表,在里面填充之前的商品的种类以及数量
create table product2(
kind VARCHAR(20),
count int
);
-- 关键字:insert into 表(1,2,3,....) select ....
-- 需要注意的是,select后面的列名称,必须跟新表当中的种类相同!
 
insert into 
product2(kind,count) 
select kind,count(kind) a 
from product 
group by kind ;
 
相关文章
|
机器学习/深度学习 存储 人工智能
谷歌Gemma介绍、微调、量化和推理
谷歌的最新的Gemma模型是第一个使用与Gemini模型相同的研究和技术构建的开源LLM。这个系列的模型目前有两种尺寸,2B和7B,并且提供了聊天的基本版和指令版。
841 2
|
SQL 安全 测试技术
安全测试----使用Docker搭建SQL注入安全测试平台sqli-labs
安全测试----使用Docker搭建SQL注入安全测试平台sqli-labs
1009 0
安全测试----使用Docker搭建SQL注入安全测试平台sqli-labs
|
11月前
|
IDE 架构师 测试技术
通义灵码体验反馈
作为一名系统架构师,我试用了通义灵码个人版,发现其显著提升了开发效率,整体提效达30%。具体流程包括在VSCode中安装插件、登录阿里云账号、使用灵码进行代码解释、注释、优化及单元测试等。灵码在代码生成速度、质量及解释方面表现出色,但在账号登录和默认注释语言方面仍有优化空间。
394 3
|
12月前
|
机器学习/深度学习 开发框架 人工智能
[大语言模型-论文精读] 悉尼大学-ACL2024-提升大型语言模型的复杂视觉推理能力
[大语言模型-论文精读] 悉尼大学-ACL2024-提升大型语言模型的复杂视觉推理能力
229 0
|
网络安全 开发工具 git
Docker部署gogs仓库
Docker部署gogs仓库
|
传感器 数据可视化
LC串联谐振拓扑仿真建模及控制策略分析
该文介绍了直流高压电源的应用领域,特别是LC串联谐振拓扑在其中的重要性。文章接着详细阐述了LC串联谐振变换器的工作模式,重点讨论了在DCM模式下的电路参数设计,包括变压器变比、谐振频率和器件参数等,并使用Simulink搭建模型进行电路仿真。仿真过程分为电路模型搭建、开环调试和闭环调试,验证了输出电压可调且能稳定在设定值,实现了变换器的设计目标。
325 2
|
缓存 前端开发 JavaScript
【微前端】在造一个微前端轮子之前,你需要知道这些~(下)
【微前端】在造一个微前端轮子之前,你需要知道这些~(下)
|
自然语言处理 安全 Unix
一键式Excel分词统计工具:如何轻松打包Python脚本为EXE
一键式Excel分词统计工具:如何轻松打包Python脚本为EXE
351 0
|
编译器 Go 开发工具
100天精通Golang:全面掌握Go语言的旅程
100天精通Golang:全面掌握Go语言的旅程
284 0
100天精通Golang:全面掌握Go语言的旅程
|
监控 安全 网络协议
eBPF 是用来干什么的?
eBPF 是用来干什么的?