between v1 and v2 在v1至v2之间(包含v1,v2)
BETWEEN AND关键字可以判读某个字段的值是否在指定的范围内。如果字段的值在指定范围内,则满足查询条件,该纪录将被查询出来。如果不在指定范围内,则不满足查询条件。其语法规则如下:
[ NOT ] BETWEEN 取值1 AND 取值2
select * from STUDENT where STU_AGE between 13 and 15;
(2)逻辑运算符 not ( ! ) 逻辑非
?
select * from STUDENT where STU_AGE NOT IN(13,14,16);
?

OR关键字也可以用来联合多个条件进行查询,但是与AND关键字不同。使用OR关键字时,只要满足这几个查询条件的其中一个,这样的记录将会被查询出来。如果不满足这些查询条件中的任何一个,这样的记录将被排除掉。OR关键字的语法规则如下:
条件表达式1 OR 条件表达式2 [ …OR 条件表达式n ]
其中,OR可以用来连接两个条件表达式。而且,可以同时使用多个OR关键字,这样可以连接更多的条件表达式。
?
select * from STUDENT where STU_ID<2005 OR STU_ID>2015;
?
and ( && ) 逻辑与
AND关键字可以用来联合多个条件进行查询。使用AND关键字时,只有同时满足所有查询条件的记录会被查询出来。如果不满足这些查询条件的其中一个,这样的记录将被排除掉。AND关键字的语法规则如下:
条件表达式1 AND 条件表达式2 [ … AND 条件表达式n ]
其中,AND可以连接两个条件表达式。而且,可以同时使用多个AND关键字,这样可以连接更多的条件表达式。
(3)模糊查询 like 像
LIKE关键字可以匹配字符串是否相等。如果字段的值与指定的字符串相匹配,则满足查询条件,该纪录将被查询出来。如果与指定的字符串不匹配,则不满足查询条件。其语法规则如下:[ NOT ] LIKE '字符串'
“NOT”可选参数,加上 NOT表示与指定的字符串不匹配时满足条件;“字符串”表示指定用来匹配的字符串,该字符串必须加单引号或双引号。
通配符: % 任意字符
select * from STUDENT where STU_NAME LIKE '%王';表示匹配任何以王结尾的
?
select * from STUDENT where STU_NAME LIKE '阿%';表示匹配任何以阿开头的
?
_ 单个字符比如说插入?
?
insert into STUDENT values(2021,'天下无镜',14,'男');
然后
?
?
select * from STUDENT where STU_NAME LIKE '_下_';查询的结果为空
?

但是如果下后面加两个_符号
?
select * from STUDENT where STU_NAME LIKE '_下__';查询结果不为空
?
?
“字符串”参数的值可以是一个完整的字符串,也可以是包含百分号(%)或者下划线(_)的通配字符。二者有很大区别
“%”可以代表任意长度的字符串,长度可以为0;
“_”只能表示单个字符。
如果要匹配姓张且名字只有两个字的人的记录,“张”字后面必须要有两个“_”符号。因为一个汉字是两个字符,而一个“_”符号只能代表一个字符。
(4)空值查询
IS NULL关键字可以用来判断字段的值是否为空值(NULL)。如果字段的值是空值,则满足查询条件,该记录将被查询出来。如果字段的值不是空值,则不满足查询条件。其语法规则如下:
IS [ NOT ] NULL
其中,“NOT”是可选参数,加上NOT表示字段不是空值时满足条件。
IS NULL是一个整体,不能将IS换成”=”.
三、使用聚合函数查询数据
3.1、group by 分组
如下:
?
select * from STUDENT group by STU_SEX;不加条件,那么就只取每个分组的第一条。
?

如果想看分组的内容,可以加groub_concat
?
select STU_SEX,group_concat(STU_NAME) from STUDENT group by STU_SEX;
?
3.2、一般情况下group需与统计函数(聚合函数)一起使用才有意义
先准备一些数据:
?
create table EMPLOYEES(
EMP_NAME CHAR(10) NOT NULL,
EMP_SALARY INT unsigned NOT NULL,
EMP_DEP CHAR(10) NOT NULL
);
insert into EMPLOYEES values('小王',5000,'销售部');
insert into EMPLOYEES values('阿小王',6000,'销售部');
insert into EMPLOYEES values('工是不',7000,'销售部');
insert into EMPLOYEES values('人人乐',3000,'资源部');
insert into EMPLOYEES values('满头大',4000,'资源部');
insert into EMPLOYEES values('天生一家',5500,'资源部');
insert into EMPLOYEES values('小花',14500,'资源部');
insert into EMPLOYEES values('大玉',15000,'研发部');
insert into EMPLOYEES values('条条',12000,'研发部');
insert into EMPLOYEES values('笨笨',13000,'研发部');
insert into EMPLOYEES values('我是天才',15000,'研发部');
insert into EMPLOYEES values('无语了',6000,'审计部');
insert into EMPLOYEES values('什么人',5000,'审计部');
insert into EMPLOYEES values('不知道',4000,'审计部');
?
mysql中的五种统计函数:
(1)max:求最大值
求每个部门的最高工资:
?
select EMP_NAME,EMP_DEP,max(EMP_SALARY) from EMPLOYEES group by EMP_DEP;
?
(2)min:求最小值
求每个部门的最仰工资:
?
select EMP_NAME,EMP_DEP,min(EMP_SALARY) from EMPLOYEES group by EMP_DEP;
?
?
(3)sum:求总数和
求每个部门的工资总和:
?
select EMP_DEP,sum(EMP_SALARY) from EMPLOYEES group by EMP_DEP
?
?
(4)avg:求平均值
求每个部门的工资平均值
?
select EMP_DEP,avg(EMP_SALARY) from EMPLOYEES group by EMP_DEP;
?
(5)count:求总行数
求每个部门工资大于一定金额的人数
?
select EMP_DEP,count(*) from EMPLOYEES where EM