DQL-基本查询

概念:

1,数据库管理系统一个重要功能就是数据查询,数据查询不应只是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示

2,MySQL提供了功能强大、灵活的语句来实现这些操作

3,MySQL数据库使用select语句来查询数据

查询格式:

select[all|distinct]<目标列的表达式1>[别名],<目标列的表达式2>[别名]...
from <表名或视图名> [别名],<表名或视图名> [别名]...
[where<条件表达式>]
[group by<列名>]
[having<条件表达式>]
[order by <列名>[asc|desc]]
[limit<数字或者列表>];

简化版语法:

select *|列名 from 表 where 条件

1,查询

(1)数据准备

创建数据库和表:

 添加数据:

 (2)简单查询

select pid,pname,price,category_id from product;
select * from product;--查询所有商品select pname,price from product;--查询商品名和商品价格--别名查询,使用的关键字是as(as可以省略)
--1,表别名
select *from product as p;
select *from product  p;--2,列别名
select pname as '商品名',price '商品价格' from product;--3,去掉重复值
select distinct price from product;
select distinct * from product;--去除所有列都一样的--5,查询结果是表达式:将所有商品都加价10元进行显示
select pname,price+10 new_price from product;

2,运算符

简介:

数据库中的表结构确立后,表中的数据代表的意义就已经确定。通过MySQL运算符进行运算,就可以获取到表结构以外的另一种数据

例如,学生表中存在一个bith字段,这个字段表示学生的出生年份。而运用MySQL的算术运算符用当前的年份减学生出生的年份,那么得到的就是这个学生的实际年龄数据

MySQL支持4种运算符

算术运算符,比较运算符,逻辑运算符,位运算符

(1)算数运算符

算术运算符说明
+加法运算
-减法运算
*乘法运算
/或 DIV除法运算,返回商
%或 MOD求余运算,返回余数

(2)比较运算符

比较运算符说明
=等于
<和<=小于和小于等于
>和>=大于和大于等于
<=>安全的等于,两个操作码均为NULL时,其所得值为1;而当一个操作码为NULL时,其所得值为0
<>或!=不等于
IS NULL 或 ISNULL判断一个值是否为NULL
IS NOT NULL判断一个值是否不为NULL
LEAST当有两个或多个参数时,返回最小值
GREATEST当有两个或多个参数时,返回最大值
BETWEEN AND判断—个值是否落在两个值之间
IN判断一个值是IN列表中的任意一个值
NOT IN判断一个值不是IN列表中的任意一个值
LIKE通配符匹配
REGEXP正则表达式匹配

(3)逻辑运算符

逻辑运算符说明
NOT或者!逻辑非
AND或者&&逻辑与
OR或者 ||逻辑或
XOR逻辑异或

(4)位运算符

位运算符说明
|按位或
&按位与
^按位异或
<<按位左移
>>按位右移
~按位取反,反转所有比特

位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数

3,运算符操作

(1)算术运算符

select 6+2;
select 6-2;
select 6*2;
select 6/2;
select 6%2;select pname,price+10 new_price from product;select pname,price*1.1 new_price from product;

(2)比较运算符

(3)逻辑运算符

select pname,price+10 new_price from product;select pname,price*1.1 new_price from product;--查询海尔洗衣机商品的所有信息
select * from product where pname='海尔洗衣机';--查询价格为800的商品
select *from product where price=800;--查询价格不是800的所有商品
select *from product where price!=800;
select *from product where price<>800;
select *from product where not (price=800);--查询价格大于等于60的所有商品
select *from product where price>=60;--查询价格在200到1000的所有商品
select *from product where price between 200 and 1000;
select *from product where price>=200 and price<=1000;
select *from product where price>=200 && price<=1000;--查询价格是200或者1000的所有商品
select *from product where price in(200,800);
select *from product where price=200 or price=1000;
select *from product where price=200 || price=1000;--插叙包含‘裤’字所有的商品
select *from product where pname like '裤';
select *from product where pname like '%裤';
select *from product where pname like '%裤&';--&用来匹配任意字符--查询以‘海’字开头的商品
select *from product where pname like '海%';--查询第二个字为‘蔻’的所有商品
select *from product where pname like '_蔻%';--下划线匹配单个字符--查询category_id为null的商品
select *from product where category_id is null;
--查询category_id不为null的商品
select *from product where category_id is not null;--使用least求最小值
select least (10,2,20) as small_number;
select least (10,null,20) as small_number;--如果求最小值时,有一个为null,不会进行比较,结果直接为null--使用greatest求最大值
select greatest (10,20,30) as big_number;
select greatest (10,null,20) as big_number;--null

(4)位运算符

位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数

select 3&5; --位与  10011 0101----0001 --都为1则为1
select 3|5;--位或   70011 0101----0111 --有一个为1就为1
select 3^5;--位异或   60011 0101----0110 --相同为0,不同为1
select 3>>1;--位右移   10011 >> 1----->0001
select 3<<1;--位左移  60011 <<  6----->0110select ~3;--位取反  18446744073709551612000000000000000000011->1111111111111111111100 --0变1,1变0

4,排序查询

介绍:

如果我们需要对读取的数据进行排序,我们就可以使用MySQL的order by子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果

select字段名1,字段名2,.....
from表名
order by字段名1 [asc|desc],字段名2[asc|desc].....

特点:

1.asc代表升序,desc代表降序,如果不写默认升序

2.order by用于子句中可以支持单个字段,多个字段,表达式,函数,别名

3.order by子句,放在查询语句的最后面。LIMIT子句除外

select * from product order by price ;select * from product order by price desc;select * from product order by price desc,category_id desc;select distinct price from product order by price desc;--去重并降序

5,聚合查询

简介:

之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个单一的值;另外聚合函数会忽略空值

聚合函数作用
count()统计指定列不为NULL的记录行数;
sum()计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0
max()计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
min()计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
avg()计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为o
select count(pid) from product;--商品总条目select count(pid) from product where price >200;--商品大于200select sum(price) from product where category_id='c001';--为c001商品的总和select max(price) from product;--商品最大价格select min(price) from product;--商品最小价格select max(price),min(price) from product;select avg(price) from product where category_id='c002';--c002的平均价格

(1)聚合查询-NULL值的处理

1、count函数对null值的处理

如果count函数的参数为星号(*),则统计所有记录的个数。而如果参数为某字段,不统计含null值的记录个数

2、sum和avg函数对null值的处理

这两个函数忽略null值的存在,就好象该条记录不存在一样

3、max和min函数对null值的处理

max和min两个函数同样忽略null值的存在

6,分组查询

(1)group by

简介:

分组查询是指使用group by字句对查询信息进行分组

格式:

select  字段1,字段2....   from  表名  group by  分组字段  having  分组条件;

如果要进行分组的话,则SELECT子句之后,只能出现分组的字段和统计函数,其他的字段不能出现;

注意分组之后select的后边只能写分组字段和聚合函数

select category_id,count(pid) from product group by category_id;--统计各个分类商品的个数

(2)分组之后的条件筛选-having

分组之后对统计结果进行筛选的话必须使用having,不能使用where

where子句用来筛选FROM子句中指定的操作所产生的行

group by 子句用来分组WHERE子句的输出

having子句用来从分组的结果中筛选行

格式:

select 字段1,字段2... from 表名 group by 分组字段 having 分组条件;

--分类,显示大于4的商品信息
--SQL执行顺序:from -> group by -> count(pid) -> select -> having -order by
select category_id,count(pid) as cnt from product group by category_id having count(pid)>4 order by cnt;

7,分页查询

简介:

分页查询在项目开发中常见,由于数据量很大,显示屏长度有限,因此对数据需要采取分页显示方式。例如数据共有30条,每页显示5条,第一页显示1-5条,第二页显示6-10条

格式:

--方式1-显示前n条
select 字段1,字段2... from 表明 limit n
--方式2-分页显示
select 字段1,字段2... from 表名 limit m,n
m:整数,表示从第几条索引开始,计算方式(当前页-1)*每页显示条数
n:整数,表示查询多少条数据
select * from product limit 5;--查询product表的前5条记录select * from product limit 3,5;--从第4条开始,显示5条

8,insert into select语句

简介:

将一张表的数据导入到另一张表中,可以使用INSERT INTO SELECT语句

格式:

insert into Table2 (field1 ,field2,...) select value1,value2,... from Table1
或者:
insert into Table2 select * from Table1
要求目标表Table2必须存在
insert into product2(pname,price) select pname,price from product;insert into product3 select category_id,count(*) from product group by category_id;

 

 

 

 

 

 9,正则表达式

正则表达式(regular expression)描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本

MySQL通过REGEXP关键字支持正则表达式进行字符串匹配

格式:

模式描述
^匹配输入字符串的开始位置
$匹配输入字符串的结束位置
.匹配除"\n"之外的任何单个字符
[...]字符集合。匹配所包含的任意一个字符。例如,'[abc]'可以匹配"plain"中的'a'
[^...]负值字符集合。匹配未包含的任意字符。例如,'[^abc]'可以匹配"plain"中的'p'
p1|p2|p3匹配p1或p2或p3。例如,'z/ food'能匹配"z”或"food"。'(zlf)ood'则匹配"zood"或"food"
格式描述
*匹配前面的子表达式零次或多次。例如,zo*能匹配"z"以及"zoo"。*等价于{0,}
+匹配前面的子表达式一次或多次。例如,'zo+'能匹配"zo"以及"zoo",但不能匹配"z"。+等价于{1,}
{n}n是一个非负整数。匹配确定的n次。例如,'o{2}不能匹配"Bob"中的'o',但是能匹配"food"中的两个o
{n,m}m和n均为非负整数,其中n <= m。最少匹配n次且最多匹配m次
?出现0次或者1次
--^在字符串开始进行匹配
select 'abc' REGEXP '^a';--1
select * from product where pname REGEXP '^海';--$在字符串末尾开始匹配
select 'abc' REGEXP 'a$';
select 'abc' REGEXP 'a$';--.匹配除换行符以外的任意字符
select 'abc' REGEXP '.b';--1
select 'abc' REGEXP '.c';--1
select 'abc' REGEXP 'a.';--1--[...]匹配括号内的任意单个字符
select 'abc' REGEXP '[xyz]';--0
select 'abc' REGEXP '[xaz]';--1--[^...]取反
select 'a' REGEXP '[^abc]';--0
select 'x' REGEXP '[^abc]';--1
select 'abc' REGEXP '[^a]';--1

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

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

相关文章

Unity手机移动设备重力感应

Unity手机移动设备重力感应 一、引入二、介绍三、测试成果X Y轴Z轴横屏的手机&#xff0c;如下图竖屏的手机&#xff0c;如下图 一、引入 大家对重力感应应该都不陌生&#xff0c;之前玩过的王者荣耀的资源更新界面就是使用了重力感应的概念&#xff0c;根据手机的晃动来给实体…

Jmeter接口程序项目实战教程

1.什么是jmeter&#xff1f; JMeter是100%完全由Java语言编写的&#xff0c;免费的开源软件&#xff0c;是非常优秀的性能测试和接口测试工具&#xff0c;支持主流协议的测试 2.jmeter能做什么&#xff1f; JMeter是100%完全由Java语言编写的软件性能测试的GUI的测试工具&am…

基于协同过滤的电影评论数据分析与推荐系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目介绍 随着社会的发展&#xff0c;人们生活水平的提高&#xff0c;欣赏电影逐渐成为人们闲暇时的主要娱乐方式之一。本文电影推荐系统是为了给顾客提供方便快捷的热门电影推荐以及查询电影资讯而建立的&…

供应链 | 顶刊MSOM论文精选——关税对全球供应链网络配置的影响:模型、预测和未来研究

编者按 关税对企业全球供应链网络设计决策的影响 本文为 M&SOM期刊20周年特邀论文&#xff0c;原文信息&#xff1a; Lingxiu Dong, Panos Kouvelis (2020) Impact of Tariffs on Global Supply Chain Network Configuration: Models, Predictions, and Future Research…

模式识别与机器学习(八):决策树

1.原理 决策树&#xff08;Decision Tree&#xff09;&#xff0c;它是一种以树形数据结构来展示决策规则和分类结果的模型&#xff0c;作为一种归纳学习算法&#xff0c;其重点是将看似无序、杂乱的已知数据&#xff0c;通过某种技术手段将它们转化成可以预测未知数据的树状模…

SkinEngine皮肤怎么给项目的所有窗体

C# 给winfrom窗体添加皮肤控件SkinEngine怎么给整个项目换皮怎么给winform的按钮添加统一样式怎么使用样式表给winform所有按钮添加统一样式SkinEngine皮肤怎么给项目的所有窗体 如何快速给C# winform添加好看的皮肤C# Winform中窗体的美化 SkinEngine的应用 皮肤控件换肤素材…

【SpringCloud笔记】(8)服务网关之GateWay

GateWay 概述简介 官网地址&#xff1a; 上一代网关Zuul 1.x&#xff1a;https://github.com/Netflix/zuul/wiki&#xff08;有兴趣可以了解一下&#xff09; gateway&#xff1a;https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/…

linux运维的面试题一

1.linux启动过程 1加电 2加载主板bios设置 3加载多重操作系统启动管理器grub 4加载内核系统到内存当中 5加载配置文件 6加载内核模块 7完成相应的初始化工作和启动相应的服务 8启动系统进程 9出现登录界面 10开机启动完成 2.安装过操作系统吗&#xff1f;怎么安装? 1.小批量设…

嵌入式硬件电路原理图之跟随电路

描述 电压跟随电路 电压跟随器是共集电极电路&#xff0c;信号从基极输入&#xff0c;射极输出&#xff0c;故又称射极输出器。基极电压与集电极电压相位相同&#xff0c;即输入电压与输出电压同相。这一电路的主要特点是&#xff1a;高输入电阻、低输出电阻、电压增益近似为…

线段树/区间树(java实现版详解附leetcode例题)

目录 什么是线段树 线段树基础表示 创建线段树&#xff08;Java版详解&#xff09; 线段树的区间查询 leetcode上的线段树相关问题 leetcode303题.区域和检索-数组不可变 使用线段树解题 不使用线段树解题 leetcode307题.区域和检索-数组可修改 不使用线段树解题 线…

Python----静态Web服务器-返回指定页面数据

1. 静态Web服务器的问题 目前的Web服务器&#xff0c;不管用户访问什么页面&#xff0c;返回的都是固定页面的数据&#xff0c;接下来需要根据用户的请求返回指定页面的数据 返回指定页面数据的实现步骤: 获取用户请求资源的路径根据请求资源的路径&#xff0c;读取指定文件…

VUE element组件生成的全选框如何获取值

//先声明 const Selection ref([]);//获取 const handleSelectCodeForTicket (val) > {console.log(val);// values.value val;Selection.value [];val.forEach((v) > {Selection.value.push(v);});console.log(Selection.value); }; <el-table selection-change…

docker-compaose部署openldap

前段时间在本地搭建了一套gitlab geo测试环境&#xff0c;因为需要集成ldap&#xff0c;所以特意搭建下&#xff0c;特此作为笔记记录下。 文章目录 1. 前置条件2. 编写docker-openldap.yml文件3. 登录4. 使用创建组创建用户登录测试 1. 前置条件 安装docker-compose 安装docke…

毅速:3D打印随形水路已经逐步向压铸模具普及

随着科技的不断发展&#xff0c;3D打印技术已经逐渐渗透到各个领域。其中&#xff0c;3D打印随形水路在注塑模具中已经广泛应用&#xff0c;目前正逐渐向压铸模具普及。 传统CNC等减材工艺的水路制造&#xff0c;可以在模具中生产出平直的冷却水路&#xff0c;但这种工艺难以加…

FMQL开发环境搭建

FMQL开发环境搭建 一、概述 此篇记录上海复旦微电子JFMQL15T开发板开发环境搭建&#xff0c;包含procise安装、vivado2018.3安装破解、IAR安装&#xff0c;以及vivado2018.3 IP_PATCH打补丁全过程&#xff0c;为后续开发基础。 二、IAR安装 安装IAR的软件版本是IAR 8.32.1,…

多用户商城系统哪个好,我的B2B2C电商系统选型之路

选择适合自己的B2B2C电商系统需要考虑多个因素&#xff0c;包括系统功能、易用性、扩展性、安全性和成本等。以下是一些常见的多用户商城系统供您参考&#xff1a; 1. 商淘云 基本情况&#xff1a;广州商淘信息科技有限公司旗下品牌&#xff0c;这家起步过程在国内商户中算比较…

【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集:括号生成、岛屿问题、扫雷游戏

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…

Opencv中的滤波器

一副图像通过滤波器得到另一张图像&#xff0c;其中滤波器又称为卷积核&#xff0c;滤波的过程称之为卷积。 这就是一个卷积的过程&#xff0c;通过一个卷积核得到另一张图片&#xff0c;明显发现新的到的图片边缘部分更加清晰了&#xff08;锐化&#xff09;。 上图就是一个卷…

攻防世界——Hello, CTF

运行可以发现这是输入型的flag &#xff08;re题目分为两类&#xff0c;一种你直接输入flag&#xff0c;还有一种就是你完成某个操作后&#xff0c;给你flag&#xff09; 可以发现关键字符串就是wrong 和 input 32位 IDA打开 进入直接进入字符串界面&#xff0c;发现关键字符…

Java小案例-讲一下Nacos、OpenFeign、Ribbon、loadbalancer组件协调工作的原理

目录 前言 Nacos 如何进行服务自动注册&#xff1f; 服务自动注册三板斧 服务实例数据封装--Registration 服务注册--ServiceRegistry 服务自动注册--AutoServiceRegistration Ribbon OpenFeign 总结 前言 注册中心要集成SpringCloud&#xff0c;想实现SpringCloud的…