首页 > 数据库 >SQL语句查询关键词

SQL语句查询关键词

时间:2022-11-25 21:36:40浏览次数:42  
标签:语句 salary group SQL 关键词 查询 l1 post select

目录

SQL语句查询关键词

select 
   指定需要查询的字段信息
   select *               *代码所有字段
   select id               查询id字段
   select id,name          可同时查询多个字段
   select char_length(name)  支持对字段做处理
   # 查询name字段 每个数据字符的长度
   
from 
   指定需要查询的表信息
   from L1;            查询数据来源于l1表格
   from db2.l1;        通过库名.表名方式表示
   
 SQL语句中关键字的执行顺序和编写顺序并不是一致的 可能会错乱
 eg:select id,name from l1;
    #查询 id和name 字段  查询的表格是l1;
    
    
我们先写的是需要查询的字段 select 后面再写的查那个表 from 但是其实底部执行是 先运行from 找到我们要查询的表 再执行 select进行筛选
 

编写查询sql语句小技巧
针对select 后面具体要查询的字段名可以先不确定 from写完后再来填写也可以

"""
SQL语句的编写类似于代码的编写 不是一蹴而就的 也需要反反复复的修修补补
"""
   

查询关键字之where筛选

where筛选之 and or not in like is

1.查询id大于等于3 小于等于6的数据
  select id from l1 where id >=3 and id<=6;
  # 需要查询的字段 id  查询数据来源 from L1  筛选 id >=3 and id<=6;
  # 支持逻辑运算符 and or not 
  
  关键词 between (之间)
  
  select id from l1 where id between 3 and 6;
  #  查询id 来源于L1表 筛选 id 在 3到6之间的
  
2.查询薪资是200或者1800或者1700的数据
 select salary from l1 where salary in (200,1800,1700)
 # in 方法 等于 salary=20000 or salary=18000 or  salary=17000  
 
3.查询id小于3和大于6的数据
 select id from l1 where id<3 or id>6;
 # or 方法 和 或 的意思 
 
4.查询员工姓名中包含字母o的员工姓名与薪资
select name,salary from l1 where name like '%o%';
模糊查询关键字:like  
like '模糊查询条件'
            % 匹配任意个数字符  '%o'  已o结尾的任意数据
                             'o%'   已o开头的任意数据
														 '%o%'  包含o的任意数据
						 
5.查询员工姓名是由四个字符组成的员工姓名与其薪资
  select name,salary from l1 where name like '____';
            _ 表示任意的一个字符
            '___'     匹配3个字符
            'o___'    已o开头后任意3个字符 eg:owen
   
  select name,salary from l1 where char_length(name) = 4;
  # 也可以通过显示长度方法 char_length(name) = 4;
 
 
6. 查询岗位描述为空的员工名与岗位名 
  select name,post_comment from l1 where post_comment is null;
  # 针对关键词查询需要用 is 而不是 = 
  
  

查询关键字之分组 group by

聚合函数 max\min\sun\avg\count

分组:按照指定的条件将单个单个的数据组成一个个整体
     eg: 将班级学生 按照 性别分组
          将员工按照 等级 分组
          将人员按照地区分组
          
 分组的目的是为了更好的统计相关数据
    eg: 查看班级男女比例
         查看员工 等级占比
         查看地区人员 平均收入
         
  分组后可以使用聚合函数
     集合函数专业用语分组之后的数据统计
     max 最大值   min 最小值
     sun 求和     avg 平均值
     count 计数
     
  1.将员工数据按照部门分组
  select post from l1 group by post;
  # 查询post字段 来源L1 根据post字段 分组
  # 分组之后 select后面默认只能直接填写分组的依据 不能再写其他字段

select * from l1 group by post;
"""
  MySQL5.6默认不会报错
	set global sql_mode='strict_trans_tables,only_full_group_by'
   MySQL5.7及8.0默认都会直接报错
	 原因是分组之后 select后面默认只能直接填写分组的依据 不能再写其他字段
		select post from emp group by post;
		select age from emp group by age;		
	  分组之后默认的最小单位就应该是组 而不应该再是组内的单个数据单个字段
"""

2.获取每个部门的最高工资 
select post,max(salary) from l1 group by post;
# 查询post字段中 最高的工资 来源于 l1表 post组
如果遇到需求 每个 平均 基本可以考虑使用分组

针对sql语句执行之后的结果 我们是可以修改字段名称的 关键字as 也可以省略

select post '部门',max(salary) '最高工资' from l1 group by post;
可以使用别名显示

Snipaste_2022-11-25_16-46-39

3.一次获取部门薪资相关统计(最高 最低 平均 和)
select post'部门',max(salary)'最高薪资',min(salary)'最低薪资',
avg(salary)'平均值',sum(salary)'和' from l1 group by post;

Snipaste_2022-11-25_16-51-45

Group_concat 方法

4.统计每个部门的人数
select post'部门',count(id)'部门人数' from l1 group by post;

5.统计每个部门的部门名称以及部门下的员工姓名
select post'部门名称',name'员工姓名 'from l1 group by post; # 报错
'''分组以外的字段无法直接填写 需要借助于方法'''
   

select post'部门名称', group_concat(name)'员工姓名 'from l1 group by post; 
# 获得每个部门下的所有员工姓名

+-----------------------------+---------------------
| 部门名称            | 员工姓名                                          
+-----------------------------+----------------------
| operation           | 僧龙,程咬金,程咬银,程咬铜,程咬铁                    |
| sale                | 哈哈,呵呵,西西,乐乐,拉拉                          |
| teacher             | tom,kevin,tony,owen,jack,jenny,sank            |
| 浦东第一帅形象代言      | jason                                          

group_concat 方法:该函数返回一个字符串结果,该字符串结果是通过分组串联的非NULL数据值。、
通常配合 group by 一起使用

也可以单独使用,比如需要每个表里面的全部 姓名等
select group_concat(name) from l1;
# 会得到一个很长的字符串 里面就是所有的姓名了

select group_concat('拼接字符串',name) from l1;
# 会得到字符串[子公司jason,子公司tom,子公司kevin,子公司tony,子公司owen]

查询关键字之having过滤

having与where本质是一样的 都是用来对数据做筛选的
where是用在分组之前 首次筛选
having用在分组之后的 二次筛选

1.统计各部门年龄在30岁以上的员工平均工资,并保留大于10000的数据

'针对稍微复杂一点你的SQL 我们可以像编写代码一样 先思考一下逻辑思路'
1.先筛选出所有年龄大于30的员工
2.然后在按照部门分组统计平均薪资
3.最后在筛选大于10000的

select port,avg(salary) from l1 where age>30 group by port having avg(salary) > 10000;

查询关键字之去重distinct

去重:
   去除字段中一模一样的数据,只保留一个
   
 
单字段去重
    select distinct age from l1; 
    # 列表单字段去重
    
多字段联合去重
    select disiinct name,post from l1;
    # 列表内 name字段 + post字段 相加结果相同去重
    

关键字之order by排序

1.单字段排序 默认升序
     select * from l1 order by age;
   # 根据age字段排序 从小到大
   单字段排序 降序 desc
     select * from l1 order by age desc:
    # 根据age字段排序 从大到小
    
2.依据多字段排序
     select * from l1 order by age,salary
     # 首先依据第一个添加的字段  age进行排序 当age相同时 根据 salary排序
     


统计各部门年龄在10岁以上的员工平均工资,并且保留平均工资大于1000的部门,然后对平均工资进行排序.

select post,avg(salary) from l1 where age > 10 
# 展示 部门 和 部门平均工资  数据来源 表l1 对年龄大于10的人根据部门分组,然后二次筛选组内 平均薪资大于1000的 然后 按照从小达大 排序
group by post having avg(salary) > 1000 order by avg(salary);


当一条SQL语句中很多地方都需要使用聚合函数计算之后的结果 我们可以节省操作(主要是节省了底层运行效率 代码看不出来)

select post,avg(salary) as a_salary from l1 where age>10 
group by post having a_salary >1000 order by a_salary 

多次重复使用的数据可以起别名 然后用别名代替,这样系统底层不需要多次计算
提高运行效率

查询关键字之limit分页


标签:语句,salary,group,SQL,关键词,查询,l1,post,select
From: https://www.cnblogs.com/moongodnnn/p/16926396.html

相关文章

  • MySQL数据库:7、SQL常用查询语句
    Python基础之MySQL数据库目录Python基础之MySQL数据库一、SQL语句常用查询方法前期数据准备1、基本查询2、编写SQL语句的小技巧3、查询之where筛选3、1.功能介绍3、2.实......
  • SQL语句查询关键字
    1.SQL语句查询关键字1.select:指定需要查找的字段信息,eg:select*,selectname。同时select也支持对字段做处理,eg:selectchar_length(name)。2.from:指定需要查询的......
  • Mac安装MySQL详细教程
    1、MySQL安装包下载还没下载的话请前往官网下载我们可以看到这里有两个不同架构的dmg的安装包,如果不知道自己电脑是ARM还是X86的话可以打开终端输入:uname-a或者uname......
  • SQL语句查询关键字
    今日内容概要SQL语句查询关键字selectfromwheregroupbyhavingdistinctorderbylimitregexp多表查询的两种方式子查询连表查询今日内容详细SQL......
  • MySQL查询关键字
    SQL语句查询关键字前期数据准备编写SQL语句的小技巧查询关键字之where筛选查询关键字之groupby分组查询关键字之having过滤查询关键字之distinct去重......
  • MySQL单表查询完整语法
    MySQL单表查询完整语法数据按一定结构存入表中,应该能够按照我们的意愿增删改查,而查这一步,我们最基础的语法是:select*from表名查找某张表的所有字段的所有数据select......
  • SQL语句查询关键字
    目录SQL语句查询关键字selectfrom编写顺序和查询数据前期数据准备编写SQL语句的小技巧查询关键字之筛选where逻辑运算符notandorbetweennotbetween成员运算符in模糊......
  • day41MySQl基础(04)
    SQL语句查询关键字selectfromwheregroupbyhavingdistinctorderbylimitregexp多表查询的两种方式子查询连表操作报错及作业讲解报错 1.粗心大意单词拼......
  • MySQL 4 查询关键字
    今日内容详细SQL语句查询关键字selecct指定需要查询的字段信息select*查所有字段selectname查name字段selectchar_length(name)支持对字段做处理from指定需......
  • 一条SQL查询语句是如何执行的?总结
    学习《MySQL实战45讲》丁奇--第一篇|基础架构:一条SQL查询语句是如何执行的?总结版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明......