DQL1
本文最后更新于 194 天前,其中的信息可能已经有所发展或是发生改变。

DQL1

1.基本查询

  1. 查询多个字段

 select 字段1 字段2.....from 表名

2.查询全部字段

 select *from 表名
 注意 : * 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。

3.设置别名

 
select 字段1 [as 别名],.....from 表名

4.去除重复

 
select distinct 字段列表 from 表名

案列:1.查询指定字段 name worknumber age

 
select name,worknumber,age from 表名

2.查询所有员工的工作地址,起别名

 
select workaddress as '工作地址' from emp

3.查询所有员工上班地址(不要重复)

 select distinct workaddress '工作地址' from emp   (-- as可以省略)

2.条件查询

select 字段列表 from 表名 where 条件列表

  -- 查询年龄等于19的用户
select *from user where user_age=19;
-- 查询年龄小于等于20的用户
select *from user where user_age<=20;
-- 查询没有年龄的的用户
select *from user where user_age is null ;
-- 查询年龄15-50的用户
select *from user where user_age>=15&&user.user_age<=50;
select *from user where user_age between 15 and 50;
-- 查询性别为女,年龄小于20的用户
select *from user where sex='女'&&user.user_age<=20;
-- 查询性别为男,年龄小于20用户
select *from user where sex='男'&&user.user_age<=20;
-- 查询年龄等于15或年龄等于19的用户
select *from user where user_age in(15,19);
-- 查询名字当中有小字年龄小于50的员工
select *from user where user.user_name like '小_';
select *from user where user.user_name like '小_'||'_小';
查询名字为两个字的
where name like '__';
查询省份证最后一位为X
where idcard like '%X';

聚合函数

将一列数据作为整体进行计算 ,注意:所有的null不参与计算 select 聚合函数 (字段列表) from 表名 ;

 -- 统计数量
  select  count(user_age) from user;
 -- 求平均年龄
 select avg(user_age) from user;
 -- 求最大最小值
 select min(user_age) from user;
 select max(user_age) from user;
 -- 统计某个地区的员工年龄总和
 select   sum(user_age) from user where address='武汉';

4.分组查询

 select 字段列表 from 表名 [where 条件] group by 分组字段名[having 分组条件过滤]

where和having的区别

{执行时间不同,where是分组之前过滤,不参与分组,having是之后 判断条件,}

**{where不能对聚合函数判断,having可以}**

 -- 根据性别分组  (统计数量)
 
select sex ,count(sex)from user group by sex; ==逗号不能掉==

 -- 男生女生分别的平均年龄
 select sex,avg(user_age) from user group by sex;
 -- 查询age<45,地址分组,获取数量大于二的工作地址
 
select address,count(address) from user  where user_age<45 group by address having count(*)>=2;

执行顺序:{where>聚合>having}

5.排序查询

 select 字段列表 from 表名 order by 字段1 排序方式,字段2 排序方式....

排序方式 升序:ASC 降序:DESC

注意如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;

  1. 年龄排序

     
    select *from emp order by age ASC

2.年龄排序,再入职时间排序

 select *from emp order by age ASC,Time ASC;

6.分页查询

select 字段列表 from 表名 limit 起始索引 查询记录数

注意

:\textcolor{orange}{起始索引是从0开始的=(查询页码-1)*每页显示记录数}

分页查询是数据库的方言,不同的数据库有不同的实现,如果查询的第一页数据起始索引可以省略

直接简写为 limit 10

 1.查询第一页员工数据,每页展示10条记录
 select *from emp limit 0,10;
 2. ....2....10
 
select *from emp limit 10,10;

7.单表的综合练习

   
 查询年龄为20,21,22,23岁的员工信息。
 select * from emp where gender = '女' and age in(20,21,22,23);

    
  查询性别为 男 ,并且年龄在 20-40 岁(含)以内的姓名为三个字的员工。
  select * from emp where gender = '男' and ( age between 20 and 40 ) and name like 
 '___';
 
    统计员工表中, 年龄小于60岁的 , 男性员工和女性员工的人数。
 select gender, count(*) from emp where age < 60 group by gender;
 
  查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按
 入职时间降序排序。
 select name , age from emp where age <= 35 order by age asc , entrydate desc;
 
 查询性别为男,且年龄在20-40 岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,
 年龄相同按入职时间升序排序。
 select * from emp where gender = '男' and age between 20 and 40 order by age asc , 
 entrydate asc limit 5 ;
 

技巧和细节

SQL语句的执行顺序为: from … where … group by … having … select … order by … limit …

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇