mysql查询18至28岁的人,MariaDB第三章(select)基本查询

查询基本使用(条件,排序,聚合函数,分组,分页)

--创建学生表

create table students (

id int unsigned not null auto_increment primary key,

name varchar(20) default '',

age tinyint unsigned default 0,

high decimal(5,2),

gender enum('男', '女', '中性', '保密') default '保密',

cls_id int unsigned default 0,

is_delete bit default 0);

--创建班级表

create table classes(

id int unsigned auto_increment primary key not null,

name varchar(20) not null);

--往students表里插入数据

insert into students values

(0,'小明',18,180.00,1,1,0),

(0,'小月月',19,180.00,1,2,0),

(0,'彭于晏',28,185.00,1,1,0),

(0,'刘德华',58,175.00,1,2,0),

(0,'黄蓉',108,160.00,2,1,0),

(0,'凤姐',44,150.00,4,2,1),

(0,'王祖贤',52,170.00,2,1,1),

(0,'周杰伦儿',34,null,1,1,0),

(0,'程坤',44,181.00,1,2,0),

(0,'和珅',55,166.00,1,2,0),

(0,'刘亦菲',29,162.00,2,3,0),

(0,'金星',45,180.00,3,4,0),

(0,'静香',18,170.00,2,4,0),

(0,'郭靖',22,167.00,1,5,0),

(0,'周杰',33,178.00,1,1,0),

(0,'钱小豪',56,178.00,1,1,0),

(0,'谢霆锋',38,175.00,1,1,0),

(0,'陈冠希',38,175.00,1,1,0);

查询

-- 查询所有列

--select * from 表名

select * from students;

c426204980cd57aefe78a15919951b70.png

--一定条件查询(where)

select * from  students where id=8;

17604becc4dfa934852fc14b762192ed.png

-- 查询制定列

select id,name,age from students;

6b96af33bcdf79d756a5d9fba7705a7f.png

-- 使用as给字段起别名

select id,age as '年龄',high, gender from students;

2245a8538f989f04ca7c6214b3a6b014.png

-- 通过表名字段查询

select students.id,students.name from students;

f1a71220a2912f394f3823bf94dd20e2.png

-- 给表起别名查询

select s.id,s.name,s.age from students as s;

53b02d6a1c39eebe27cc53a200e7cd32.png

--消除重复行

-- distinct

select distinct high from students;

2f013fa8fc3028588ca0e8748f9dc34d.png

条件查询

--比较运算符

-- 查询年纪大于28岁的信息

select * from students where age > 28;

f59bbaeb7ebe90714d673097ac41cb35.png

--19岁到38岁之间(and)

select * from students where age >= 19 and age <= 38;

7097b8a61517672fd5324ff30f9e3416.png

select * from students where age between 19 and 38;

-- between 表示19到38,包括19和38

4752af7b105301dcc0226c0ae48abcf3.png

--在28岁以上或者身高185以上的人(or)

select * from students where age > 28 or high > 185;

de711b3a7315f35844d8905fcf4bc173.png

模糊查询

-- like

-- % 替代1个或者多个甚至是没有

-- 查询姓名中有‘豪’的所有名字

select * from students where name like '%豪%';

4b0cdd8befb952e5d86bbc7d710f7090.png

-- 查询三个字人的名字

select * from students where name like '___';

e4c2db6a6f33e0943d978cf4dcf0433b.png

-- 查询至少有三个字的名字

select * from students where name like '%___%';

c33d3ddaffc2a39d40b5ef64b4e0104d.png

范围查询

-- in (1,3,8)表示在一个非连续的范围内

-- 查询 年纪为18和34的人

select * from students where age in (18, 34);

--in 后面括号中用逗号分隔开的数字表示单个数字,不代表范围,可以用逗号分隔添加多个数值,列如(15,25,35,56):表示一个15,一个25,一个35,一个56

546ef41482fdc8a160f731cd851abedd.png

--查询 年龄在19岁到37岁之间的信息

select * from students where age between 19 and 37;

4488b888cd6f082a135ea017690e1bab.png

--查询 年纪不在19到37岁的信息

select * from students where age not between 18 and 36;

39b3399f02a69e93cc2c8e92d518c16c.png

空判断

--判断is null

-- 查询身高为空的信息

select * from students where high is null;

6f3367be2c9f675770ab2a8ae63f9348.png

--判断非空is not null

select * from students where high is not null;

322f985183e8de234348dad39025b0d9.png

排序

-- order by字段

-- asc从小到大排列,即升序

-- desc从大到小排序,即降序

-- 查询年纪在20到36岁之间的男性,按照年纪从小到大

select * from students where gender=1 and age     between 20 and 36 order by age;

9d5cc936614e9755c247655f568040e1.png

-- order by多字段

-- 查询年纪在18到34岁的男性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序

select * from students where age between 18 and 34 and gender=1 order by high desc;

64233b8acceaa3b0902c4f1145ace964.png

-- 查询年纪在28到35岁的男性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序,如果年龄也相等那么按照id从小到大排序;

select * from students where age between 28 and 35 and gender=1 order by high desc, age, id desc;

34731323f7b81b499695eb6ae7832e58.png

聚合函数

--总数

-- count(*)   用*统计是最准确的,也可以在括号里加入某个字段,可能会不准确,最好使用*

-- 查询女性有多少人

select count(*) from students where gender=2;

--最大值

-- max

-- 查询最高的身高

select max(high) from students;

b6ebc746740ff53ead76350262ad61d0.png

-- 查询男性的最高大年龄

select max(age) from students where gender=1;

1ce443e9c302fea12b24825c19950f40.png

--最小值

-- min

--查看最小的年龄

select min(age) from students;

a9530e33c0dab781a3fc737fecb02053.png

--求和

-- sum

-- 计算所有人的身高总和

select sum(high) from students;

907851cc207a976fd45e531ad65e58a5.png

--平均值

-- avg

-- 计算平均年纪

-- 计算平均年纪 sum(age)/count(*)

select sum(age)/count(*) from students;

146754aaa3b96fa665b6ba786c2bf8f5.png

-- 保留3位小数

select round(avg(age),3) from students;

a0deb78ab2f731265963d2aa6b8fdbd6.png

分组

-- group by

-- 按照性别分组,查询所有的性别

select gender from students group by gender;

11f5bf969b4d1401f3180d2dc8782624.png

-- 计算每组性别的人数

select gender, count(*) from students group by gender;

3d024636b3fd8d721ccfd5951e5cdf21.png

-- 查询女性组中的姓名  group_concat()  按组显示括号中的内容

select gender,group_concat(name) from students where gender=2 group by gender;

708607db9d638902a53bcd60f8ba85b9.png

-- having

-- 查询每个性别平均年纪超过40岁的性别,以及姓名 having avg(age) > 30

select gender, group_concat(name) from students group by gender having avg(age) > 40;

072a0b99cd0440b4e866de4bea51d6c5.png

-- 查询每种性别中的人数多于4个的组的信息

select gender,group_concat(name) from students group by gender having count(*)>4;

6cdbbb42d326cc999881ed61acb89c97.png

分页

-- 显示6页

select * from students limit 6;

36d243c8576a461c07620287b208648c.png

-- 分页显示,每页显示2条数据

select * from students limit 0, 2;

bfe24f71c922467ba7ab025cd9e1aa25.png

select * from students limit 1, 2;

0f290ddf20b6608bc85b9e9a1bcdb01c.png

select * from students limit 2, 2;

0f84a45f88ceeb49046d33e1edbbbf6a.png

-- 按照身高从高到矮排序,查找出所有女性,并且分页显示,每页显示3条数据

select * from students where gender=2 order by highdesc limit 0,3;

e41b241ace15fe01c90f21ac4c63deb9.png

select * from students where gender=2 order by high desc limit 1,3;

37dacb600174133eda0a5f1474ba6bd9.png

select * from students where gender=2 order by high desc limit 2,3;

a690990f0b47666c372e6047569bf5e1.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值