DQL数据查询语言(上)之-----基本SELECT语句-----过滤及排序-----分组查询

一.基本的SELECT语句

操作前:1.首先导入一些表进去作为练习的表,点击某个用户下的一个数据库,选一个数据库库里的的表,右键点击运行SQL文件,导入要做练习操作的表.

在这里插入图片描述
2.再去该库里新建一个查询,来输入你要操作的代码
在这里插入图片描述

1.查询所有列

星号(*):表示全部的意思。

  // 查询表t_mysql_employees中的所有的列
SELECT * FROM t_mysql_employees;

在这里插入图片描述
查询表中的哪些列

//查询表t_mysql_employees中的 employee_id列,first_name列以及last_name列
SELECT employee_id,first_name,last_name FROM t_mysql_employees;

在这里插入图片描述

2.查询特定列

//查找mysql数据库里的user表,然后查找user表里的host列,user列以及authentication_string列.
select * from user;
SELECT host,user,authentication_string from user;

在这里插入图片描述

在这里插入图片描述

3.列的别名

// 找到所有t_mysql_employees表里的employee_id列,first_name列别名为fn,last_name别名为ln,且限制条件 first_name要为lex.
SELECT * from (SELECT employee_id,first_name as fn,last_name as ln FROM t_mysql_employees) t where t.fn = 'lex' 

使用列的别名的时候:
1、两个有相同的列段的时候;就是第一个表有这个列,第二个表又有相同名字的列,为了区分,可以使用别名.
2、后续要使用这个列段的时候;就是之后方便书写,可以使用别名,取个短点儿的名.

在这里插入图片描述

在这里插入图片描述

4.字符串(配合字符串函数使用)

//从t_mysql_employees表里选择出 first_name,last_name列.
SELECT first_name,last_name FROM t_mysql_employees;

结果如下在这里插入图片描述

//从t_mysql_employees表里选择出 first_name,last_name列将他们拼接起来.
SELECT concat(first_name,last_name) FROM t_mysql_employees;

在这里插入图片描述

// 1+2
SELECT 1+2;

在这里插入图片描述

//null+4.
SELECT null+4;

在这里插入图片描述

在这里插入图片描述

5.显示表结构

//显示出表t_mysql_employees的结构.
desc t_mysql_employees;

在这里插入图片描述

6.MySQL的版本查询

//MySQL的版本查询
select version();

在这里插入图片描述

7.去重

// 选中t_mysql_employees表里的  departemnet_id列.
SELECT departemnet_id FROM t_mysql_employees;

在这里插入图片描述

//选中t_mysql_employees表里的  departemnet_id列进行去重
SELECT DISTINCT department_id FROM t_mysql_employees;

在这里插入图片描述

//选中t_mysql_employees表里的  departemnet_id列和employee_id列和进行去重.
SELECT DISTINCT department_id,employee_id FROM t_mysql_employees;

但是呢,因为表格的显示都是矩形的,没有的都会进行补齐也就不存在对少的那一列进行去重了

在这里插入图片描述

二.过滤及排序

1.语法

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

select * from 表名 where 条件(Boolean表达式);

//  t_mysql_employees 表里  (薪资)salary 大于12000
SELECT
 * 
FROM
 t_mysql_employees 
WHERE
 salary > 12000;

在这里插入图片描述

2.分类

(1)按条件表达式筛选

简单条件运算符:
0.>
1.<
2. =
3. !=
4.<>
5. >=
6.<=

//查询部门编号不等于90号的员工名和部门编号
//选中  t_mysql_employees 表 中的 last_name, department_id 列中 depar

SELECT
 last_name,
 department_id 
FROM
 t_mysql_employees 
WHERE
 department_id <> 90;

在这里插入图片描述

(2)按逻辑表达式筛选

逻辑运算符:
&& || !
and or not
作用:用于连接条件表达式
&&和and:两个条件都为true,结果为true,反之为false
||或or: 只要有一个条件为true,结果为true,反之为false
!或not: 如果连接的条件本身为false,结果为true,反之为false

//查询工资z在10000到20000之间的员工名、工资以及奖金
SELECT
 last_name,
 salary,
 commission_pct 
FROM
 t_mysql_employees 
WHERE
 salary >= 10000 
 AND salary <= 20000;
 

在这里插入图片描述

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

在这里插入图片描述

也可以这样

SELECT
 * 
FROM
 t_mysql_employees 
WHERE
 ( department_id < 90 OR department_id > 110 ) 
 OR salary > 15000;

在这里插入图片描述

(3)模糊筛选

like
between and
in
is null|is not null

<1>like

特点:一般和通配符搭配使用
通配符:
% 任意多个字符,包含0个字符
_ 任意单个字符

//查询员工名中包含字符a的员工信息
select 
 *
from
 t_mysql_employees
where
 last_name like '%A%';

在这里插入图片描述

//查询员工名中第三个字符为e,第五个字符为a的员工名和工资
select
 last_name,
 salary
FROM
 t_mysql_employees
WHERE
 last_name LIKE '__n_l%'; 

在这里插入图片描述

原本_代表了任意一个字符,需求是让_就代表下划线,那么意味着_需要转义,那如何转义呢?
在特殊字符加任意字符,后面用ESCAPE修饰这一字符即可

//查询员工名中第二个字符为_的员工名
SELECT
 last_name
FROM
 t_mysql_employees
WHERE
 last_name LIKE '_^_%' ESCAPE '^';

在这里插入图片描述

<2>between and

①使用between and 可以提高语句的简洁度
②包含临界值
③两个临界值不要调换顺序


//查询员工编号在100到120之间的员工信息
SELECT
 *
FROM
 t_mysql_employees
WHERE
 employee_id BETWEEN 100 AND 120;

在这里插入图片描述

<3>in

含义:判断某字段的值是否属于in列表中的某一项
特点:
①使用in提高语句简洁度
②in列表的值类型必须一致或兼容
③in列表中不支持通配符

//查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
SELECT
 last_name,
 job_id
FROM
 t_mysql_employees
WHERE
 job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');



在这里插入图片描述

<4>is null

=或<>不能用于判断null值
is null或is not null 可以判断null值

//查询没有奖金的员工名和奖金率
SELECT
	last_name,
	commission_pct
FROM
	t_mysql_employees
WHERE
	commission_pct <=> NULL;

在这里插入图片描述
安全等于 <=>

//查询工资为12000的员工信息
SELECT
 last_name,
 commission_pct
 FROM 
 t_mysql_employees
 WHERE
 salary<=>12000;

在这里插入图片描述

(4)排序查询

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

order by 列名 DESC/ASC

特点:
1、asc代表的是升序,可以省略
desc代表的是降序
2、order by子句可以支持 单个字段、别名、表达式、函数、多个字段
3、order by子句在查询语句的最后面,除了limit子句

<1>按单个字段排序
// 按照工资进行升序
SELECT
 *
FROM
 t_mysql_employees
 order by salary asc;

在这里插入图片描述

<2>按筛选条件再排序

在这里插入图片描述

<3>按表达式排序

在这里插入图片描述

<4>按姓名排序
//每个月工资*12*(如果有奖金率就算上没有就为0)  然后这一整块儿叫年薪
 SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM t_mysql_employees
ORDER BY 年薪 ASC;

在这里插入图片描述

<5>按函数排序

在这里插入图片描述

<6>按多个字段排序

在这里插入图片描述

三.分组查询

1、概念
分组函数作用于一组数据,并对一组数据返回一个值。
2、功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:
sum 求和、avg 平均值、max 最大值 、min 最小值 、count 计算个数
特点:
<1>sum、avg一般用于处理数值型
max、min、count可以处理任何类型
<2>以上分组函数都忽略null值
<3>可以和distinct搭配实现去重的运算
<4>count函数的单独介绍
一般使用count(*)用作统计行数
<5>和分组函数一同查询的字段要求是group by后的字段

#id的总和数
select count(*) from t_mysql_employees;

在这里插入图片描述

#最大工资
select max(salary) from t_mysql_employees;

在这里插入图片描述

#最小工资
select min(salary) from t_mysql_employees;

在这里插入图片描述

#平均工资
select avg(salary) from t_mysql_employees;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值