MySql之DQL语言的使用

一.select 语句的基本使用

语法:
select 查询列表 from 表名;
类似于:System.out.println(打印东西);
去重:SELECT DISTINCT 列段名 FROM 表名;
起别名:SELECT 字段名/表名 别名 FROM 表名;
特点:
1、查询列表可以是:表中的字段、常量值、表达式、函数
2、查询的结果是一个虚拟的表格

在这里插入图片描述

二.过滤和排序数据

1.过滤

语法:SELECT 查询列表 FROM 表名 WHERE 过滤条件
使用WHERE 子句,将不满足条件的行过滤掉。
WHERE 子句紧随 FROM 子句。

过滤条件关键字:
&&/and ||/or ! / not

>#案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
SELECT
	*
FROM
	t_mysql_employees
WHERE
	NOT(department_id>=90 AND  department_id<=110) OR salary>15000;

>*between  ...  and*  ... ;过滤的界限;
>#案例1:查询员工编号在100到120之间的员工信息
SELECT
	*
FROM
	t_mysql_employees
WHERE
	employee_id <= 120 AND employee_id>=100;
#----------------------
SELECT
	*
FROM
	t_mysql_employees
WHERE
	employee_id BETWEEN 100 AND 120;

in(…); 在表中是否有该字符等

> #案例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
SELECT
	last_name,
	job_id
FROM
	t_mysql_employees
WHERE
	job_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES';

IS NULL:判断NULL值为空,IS NOT NULL:判断NULL值不为空,

>#案例1:查询有奖金的员工名和奖金率
SELECT
	last_name,
	commission_pct
FROM
	t_mysql_employees
WHERE
	commission_pct IS NOT NULL;

表名 like 条件 :模糊查询
#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资

select
	last_name,
	salary
FROM
	t_mysql_employees
WHERE
	last_name LIKE '__n_l%';

2.排序

语法:select 查询列表 from 表 【where 筛选条件】 【order by 排序的字段】;

三.分组查询

1、概念:分组函数作用于一组数据,并对一组数据返回一个值。

#2.查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序

SELECT *,LENGTH(email)
FROM t_mysql_employees
WHERE email LIKE '%e%'
ORDER BY LENGTH(email) DESC,department_id ASC;

2.简单 的使用

SELECT SUM(salary) FROM t_mysql_employees;
SELECT AVG(salary) FROM t_mysql_employees;
SELECT MIN(salary) FROM t_mysql_employees;
SELECT MAX(salary) FROM t_mysql_employees;
SELECT COUNT(salary) FROM t_mysql_employees;
SELECT SUM(salary),AVG(salary) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT(salary) 个数
FROM t_mysql_employees;
SELECT SUM(salary),ROUND(AVG(salary),2) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT(salary) 个数
FROM t_mysql_employees;

3.Group by子句的使用
语法:select 查询列表 from 表 【where 筛选条件】 group by 分组的字段 【order by 排序的字段】;

案例:查询每个位置的部门个数

SELECT COUNT(*),location_id
FROM t_mysql_departments
GROUP BY location_id;

#2、可以实现分组前的筛选

#案例1:查询邮箱中包含a字符的 每个部门的最高工资

SELECT MAX(salary),department_id
FROM t_mysql_employees
WHERE email LIKE '%a%'
GROUP BY department_id;

#案例2:查询 有奖金 的 每个领导 手下员工的 平均工资

SELECT AVG(salary),manager_id
FROM t_mysql_employees
WHERE commission_pct IS NOT NULL
GROUP BY manager_id;

#3、分组后筛选

#案例:查询哪个部门的员工个数>5

#查询 每个部门 的员工个数
SELECT COUNT(*),department_id
FROM t_mysql_employees
GROUP BY department_id;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值