ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库学习笔记3-Mysql查询语句

2021-04-16 19:33:02  阅读:187  来源: 互联网

标签:语句 salary name 数据库 查询 Mysql 员工 employees select


提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

本篇文章基于尚硅谷Mysql数据库教程 课程链接bilibili
数据库来源
链接:https://pan.baidu.com/s/1XGX73vLbVsT8NmidRssCog
提取码:6699
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V3的分享

一、基础查询

语法

select 查询列表 from 表名;

特点

1、 查询列表可以是:表中的字段、常量值、表达式、函数
2、 查询的结果是一个虚拟的表格

查询举例

#1. 查询表中的单个字段
select last_name from employees;
#2. 查询表中的多个字段
select last_name,salary,email from employees;
#3. 查询表中的所有字段
select * from employees;
#4. 查询常量值
select 100;
select 'john';
#5. 查询表达式
select 100*50;
#6. 查询函数
select version();
#7. 起别名
##(1)便于理解
##(2)如果要查询的字段有重名的情况,使用别名可以区分开来
select 100%98 as 结果;
select last_name as 姓,first_name as 名 from employees;
select last_name 姓,first_name 名 from employees;
#8. 去重
##案例:查询员工表中涉及到的所有的部门编号
select distinct department_id from employees;
#9. 加号
## Mysql加号功能:运算符
## 两个操作数都为数值型,则做加法运算
## 如果一方为字符型,则试图将字符型数值转换为数值型
##               如果转换成功,则继续做加法运算
select '123'+90;
##               如果转换失败,则将字符型数值转换成0
select 'john'+90;
##只要一方为null 则结果肯定为null
select null+0;
#10. concat函数
##案例:查询员工名和姓连接成一个字段,并显示为 姓名
select concat(last_name,first_name) as 姓名 from employees;
#11. ifnull函数
select ifnull(commisiion_pct,0) as 奖金率 from employees;

二、条件查询

语法

select 查询列表
from 表名
where 筛选条件;

分类

1. 按条件表达式筛选

条件运算符:> < = != <> >= <=

#案例1:查询工资>12000的员工信息
select * from employees where salary >12000;
#案例2:查询部门编号不等于90号的员工名和部门编号
select last_name department_id from employees where department_id <> 90;

2. 按逻辑表达式筛选

逻辑运算符: && || ! and or not

#案例1:查询工资在10000到20000之间的员工名、工资以及奖金
select last_name,salary,commission_pct
from employees
where salary >=10000 and salary<=20000;
#案例2:查询部门编号不在90到110之间,或者工资高于15000的员工信息
select * from employees
where not(department_id>=90 and department_id<=110) or salary >15000;

3. 模糊查询

  • like
  • between and
  • in
  • is null
#1. like
#特点:
#(1)一般和通配符搭配使用 通配符:
#                           %任意多个字符,包含0个字符
#                           _任意单个字符
#案例1:查询员工名中包含字符a的员工信息
select * from employees where last_name like '%a%';
#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
select last_name,salary from employees where last_name like '__e_a%';
#案例3:查询员工名中第二个字符为_的员工名
select last_name from employees where last_name like '_\_%';
#2. between and
#(1)使用between and 可以提高语句的简洁度
#(2)包含临界值
#案例1:查询员工编号在100到120之间的员工信息
select * from employees where employee_id >=100 and employee_id<=120;
#--------------------------------------------------------
select * from employees where employee_id between 100 and 120;
#3. in
#含义:判断某字段的:值时候属于in列表中的某一项
#(1)提高语句简洁度
#(2)in列表的值类型必须一直或者兼容
#案例1:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
select last_name,job_id from employees where job_id in('IT_PROG','AD_VP','AD_PRES');
#4. is null
#案例1:查询没有奖金的员工名和奖金率
select last_name,commission_pct
from employees
where commission_pct is null;
#案例2:查询有奖金的员工名和奖金率
select last_name,commission_pct
from employees
where commission_pct is not null;

三、排序查询

语法

select 查询列表
from 表
[where 筛选条件]
order by 排序列表 [asc|desc]

特点

  1. asc代表的是升序,desc代表的是降序,如果不写,默认的是升序
  2. order by子句可以支持单个字段、多个字段、表达式、函数、别名
  3. order by子句一般是放在查询语句的最后面,limit子句除外

实例

#案例1:查询员工信息,要求工资从高到低排序
select * from employees order by salary desc;
#案例2:查询员工信息,要求工资从低到高排序
select * from employees order by salary asc;
#案例3:查询部门编号>=90的员工信息,按入职时间的先后进行排序【添加筛选条件】
select * from employees where department_id>=90 order by hiredate asc;
#案例4:按年薪的高低显示员工的信息和年薪 【按别名排序】
select *,salary*12*(1+ ifnull(commission_pct,0)) as 年薪 from employees order by 年薪;
#案例5:按年薪的高低显示员工的信息和年薪 【按表达式排序】
select *,salary*12*(1+ ifnull(commission_pct,0)) as 年薪 from employees 
order by salary*12*(1+ ifnull(commission_pct,0));
#案例6:按姓名的长度显示员工的姓名和工资【按函数排序】
select length(last_name) 字节长度, salary from employees order by 字节长度;
#案例7:查询员工信息,要求先按工资排序,再按员工编号排序【按多个字段排序】
select * from employees order by salary asc,employee_id desc;

测试

  1. 查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序
  2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序
  3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序
#1. 查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序
SELECT CONCAT(first_name,last_name) AS NAME ,department_id,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 
FROM employees ORDER BY first_name;
#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序
SELECT CONCAT(first_name,last_name) AS NAME ,salary FROM employees 
WHERE salary NOT BETWEEN 8000 AND 17000 ORDER BY salary DESC;
#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序
SELECT * FROM employees WHERE email LIKE '%a%' ORDER BY LENGTH(email) DESC, department_id ASC;

标签:语句,salary,name,数据库,查询,Mysql,员工,employees,select
来源: https://blog.csdn.net/weixin_39735780/article/details/115757267

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有