博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4.数据库表的高级查询
阅读量:6592 次
发布时间:2019-06-24

本文共 2656 字,大约阅读时间需要 8 分钟。

4.数据库表的高级查询

 

4.1   in   

使用场景:查询时,条件字段的值存在某个数据集中

 

数据集:可以是具体的某几个值,也可以是通过一个子查询得到的数据集

select ... from 表名 where 条件字段 in (数据集);

比如: 从member表中查询用户id1001,1002,1003的用户信息

 

select * from member where in(1001,1002,1003);

select ... from 表名 where 条件字段 not in (数据集);     

 

表示要查询的字段不存在这个数据集中

 

 

4.2 模糊查询 like

使用场景:查询的时候,条件字段的值不完整的情况下

 

% 匹配任意长度的字符串,%所在的位置不同代表的意思不同

 

select ... from 表名 where 条件字段 like '%XX';

条件字段以任意字符串开头

XX结尾

select ... from 表名 where 条件字段 like 'XX%';

条件字段以XX开头

以任意字符串结尾

select ... from 表名 where 条件字段 like '%XX%';

条件字段包含XX

比如 查询用户表中手机号以556结尾的用户信息

 

select * from member where mobilephone like '%556';

 

 查询用户表中手机号后三位是556的用户信息

 

select * from member where mobilephone like '_________556';

占位符(下划线)_

11位的手机号,输入9次下划线

 

4.3 分组  group by

 

使用场景:

按照某一个或多个字段进行分组,必须配合聚合函数使用,使用时至少需要一个分组字段。

select 查询字段,聚合函数 from <查询涉及到的表> group by 分组字段 having 过滤条件;

聚合函数:对一组值执行计算并返回单一的值的函数。

sum()count()avg()min()max()

having 过滤条件: 在分组结果的基础上再进行过滤,必须用having 过滤条件

Select *,max(amount) from invest group by loanid having max(amount)>20000.00

 

 

 

 

4.4 between

使用场景:

条件字段的取值处于两个数据范围内的情况,包含边界值。

select ... from 表名 where 条件字段 between 数据A and 数值B;

比如 找出用户表可用余额在10000.0040000.00的用户

 

select * from member where leaveamount between 10000.00 and 40000.00;

 

4.5 去重 distinct

使用场景:去除查询结果中的重复数据

select distinct 字段名 from <表名>;

比如  查询所有投资的用户id

 

select distinct memberid from invest;

 

4.6 分页 limit

使用场景:取查询结果的前几条

select ... from <表名> limit m,n;

m:索引值从m开始。   n :每页要取多少条。

比如  每页取10条展示

第一页: limit 0,10    表示取索引从0开始取10条的记录

第二页:limit 10,10    表示取索引从10开始取10条的记录

 

那么当每页展示x条数据,取到第y页时,分页语句中的m,n分别为多少?

 

(y-1)x   ,     x

 

4.7 排序 order by  排序字段名  降序(desc)、升序(asc)

不写descasc,默认升序

例如 查询用户信息,以用户名升序排列

select * from member order by regname

order by  ... desc  降序

例如 查询用户信息,以用户id降序排列

select * from member order by id desc;

order by ...  asc   升序

例如 查询用户信息,以用户名升序排列

select * from member order by regname asc;

 

 

4.8  select  函数;   select 后面直接加函数

数值相关函数

 

求字段A的最大、最小、平均、和

min(字段A)    max(字段A)   avg(字段A)   sum(字段A)

日期函数

 

获取系统当前日期时间

sysdate()

获取系统当前日期

curdate()

获取系统当前时间

curtime()

获取给定日期的年份、月份

year(date)    month(date)

为指定日期增加一个时间间隔

的函数

date_add(date,interval expr unit)

 

例如:

select date_add(sysdate(),interval 1 day);

在当前时间增加1

字符串函数

 

字符串拼接函数

concat(字段A,字段B)

 

select concat(id,regname) from member;

select concat('hello','world');

字符串截取函数

substr(字段A,截取开始的位置position,截取字符个数)

 

select substr(regname,2,3) from member;

用户名从第二个字符开始截取3个字符

获取字符串长度的函数

length(字段A)

 

select length(regname) from member;获取用户名的长度

 

4.9 select 查询语句的结构

 

select...查询字段...from..查询涉及到的表....where..关联条件....group by..按主键/id进行分组....having...分组后进行过滤...order by......limit......

 

 

4.10 子查询(嵌套查询)

 

select * from (select id,regname,mobilephone from member) as newtable where newtable.id3;

 

转载于:https://www.cnblogs.com/Aphrodite/p/10064958.html

你可能感兴趣的文章
Linux性能测试 iostat命令
查看>>
Alpha 冲刺 (1/10)
查看>>
Web常见约定规范(精选)
查看>>
Spring.NET学习笔记
查看>>
HTML5 服务器推送事件(Server-sent Events)实战开发
查看>>
linux下PHP后台配置极光推送问题
查看>>
html基本介绍
查看>>
[转]特征选择与特征选择权重之区别
查看>>
c/c++内存机制(转)
查看>>
移动开发者大会第一日观感
查看>>
数制转化2
查看>>
Django + Uwsgi + Nginx 实现生产环境 项目部署
查看>>
02-CSS基础与进阶-day5_2018-09-03-20-20-37
查看>>
大数据之nutch
查看>>
52、多线程创建的三种方式对比
查看>>
数据结构化与保存
查看>>
IntelliJ IDEA工具的安装使用
查看>>
进程间通信
查看>>
【转载】Jquery验证 Jquery.validate详细解读
查看>>
Springboot2.0中jpa默认创建的mysql表为myisam引擎问题
查看>>