mysql分组模糊汇总_MySQL数据库基础知识以及命令⼆:模糊查询,分组查询,常⽤函数,。。。
准备操作数据
CREATE DATABASE mydb01;
USE mydb01;
CREATE TABLE mydb01.stu(
sid CHAR(6) COMMENT '学⽣学号',
sname CHAR(50) COMMENT '学⽣的名字',
age INT COMMENT '学⽣年龄',
grender VARCHAR(20) COMMENT'学⽣性别'
);
#插⼊数据
INSERT INTO stu VALUES('S_1001', 'liuYi', 35, 'male');
INSERT INTO stu VALUES('S_1002', 'chenEr', 15, 'female');
INSERT INTO stu VALUES('S_1003', 'zhangSan', 95, 'male');
INSERT INTO stu VALUES('S_1004', 'liSi', 65, 'female');
INSERT INTO stu VALUES('S_1005', 'wangWu', 55, 'male');
INSERT INTO stu VALUES('S_1006', 'zhaoLiu', 75, 'female');
INSERT INTO stu VALUES('S_1007', 'sunQi', 25, 'male');
INSERT INTO stu VALUES('S_1008', 'zhouBa', 45, 'female');
INSERT INTO stu VALUES('S_1009', 'wuJiu', 85, 'male');
INSERT INTO stu VALUES('S_1010', 'zhengShi', 5, 'female');
INSERT INTO stu VALUES('S_1011', 'xxx', NULL, NULL);
模糊查询
查询包含某个关键字的字段的⽅法
通过通配符来查询
通配符
_ :任意⼀个字符
国家公职人员禁止开特斯拉%:任意0~n个字符
姓x的:“x%”
姓x的,并且2个字:“x_”
查询姓名有5个字符构成的学⽣记录
#查询姓名有5个字符构成的学⽣记录
SELECT
*
FROM
stu
WHERE
sname LIKE '_____';
查询姓名有5个字符组成,其中第五个字母是‘i’的记录
#查询姓名有5个字符组成,其中第五个字母是‘i’的记录;SELECT
*
FROM
stu
WHERE
sname LIKE '____i';
查询姓名以“z”开头的学⽣记录
#查询姓名以“z”开头的学⽣记录
SELECT
*
FROM
stu
WHERE
sname LIKE'z%';
查询姓名中第2个字母为‘i’的学⽣记录
#查询姓名中第2个字母为‘i’的学⽣记录
SELECT
*
FROM
stu
WHERE
sname LIKE '_i%';
姓名中包含“a”字符的学⽣记录
SELECT
*
FROM
stu
WHERE
sname LIKE '%a%';
注意:
(1)模糊查询时候,匹配第⼀个字符尽量不要出现通配符,会导致全表扫描。
(2)企业中,模糊查询使⽤场景:搜索,
⽐如搜索商品:搜索商品 –》商品列表(只有商品部分信息) -》商品详情
企业中,会使⽤搜索引擎,⽽不是模糊查询,会使⽤开发搜索引擎solr
搜索引擎的基本实现思路:
商品上架 –》建⽴索引:将商品信息在存储⼀份(只包含列表需要的数据)
搜索:查索引
字段控制查询
准备操作数据
linux安装oracle11g依赖包CREATE TABLE emp(
empno INT COMMENT '员⼯编号',
ename VARCHAR(50) COMMENT '员⼯名字',
job VARCHAR(50) COMMENT '职位',
mgr INT COMMENT '领导 编号',
hiredate DATE COMMENT '⼊职⽇期',
mysql面试题汇总sal DECIMAL(7,2) COMMENT '⽉薪',
comm DECIMAL(7,2) COMMENT '奖⾦',
deptno INT COMMENT '部门编号'
);
INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20); INSERT INTO emp VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30); INSERT INTO emp VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30); INSERT INTO emp VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20); INSERT INTO emp VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30); INSERT INTO emp VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30); INSERT INTO emp VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10); INSERT INTO emp VALUES(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20); INSERT INTO emp VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10); INSERT INTO emp VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30); INSERT INTO emp VALUES(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30); INSERT INTO emp VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20); INSERT INTO emp VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10); CREATE TABLE dept(
deptno INT COMMENT '部门编号',android canvas
dename VARCHAR(100) COMMENT '部门名称',
loc VARCHAR(50) COMMENT '部门所在地'
)
INSERT INTO dept VALUES(10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept VALUES(20, 'RESEARCH', 'DALLAS');
INSERT INTO dept VALUES(30, 'SALES', 'CHICAGO');
INSERT INTO dept VALUES(40, 'OPERATIONS', 'BOSTON');
去除重复记录
2⾏或者2⾏以上记录中 数据相同的去掉,
⽐如emp表中sal字段就存在相同的值,当查询emp中sal字段的时候,就会出现重复记录
如果需要去除重复记录,需要使⽤distinct。
SELECT
DISTINCT sal
FROM
emp;
查看雇员的⽉薪与佣⾦之和
因为sal 和comm两列的数据类型都是数值类型,所有可以直接做加运⾏
但是如果2个字段中有⼀个不是数值类型,就会出错。
可以使⽤ifnull(字段值,赋的值);函数,该函数判断某列的某个值为null时,会⾃动为其赋值SELECT
empno,ename,sal,comm,sal+IFNULL(comm,0)
FROM
emp;
给列添加别名
SELECT
empno,ename,sal,comm,sal+IFNULL(comm,0)AS total
FROM
护士个人简历模板免费下载可编辑emp;
排序 order by
order by asc|desc 升序|降序 默认为升序
查询所有学⽣记录,按照年龄升序排序
SELECT
*
FROM
stu
ORDER BY
age ASC;
查询所有学⽣记录,按照年龄降序排序
SELECT
*
FROM
stu
ORDER BY
age DESC;
查询所有雇员,按照⽉薪降序,如果⽉薪相同,按照编号升序排序
SELECT
*
FROM
emp
ORDER BY
sal DESC ,empno ASC;
查询所有雇员,按照⽉薪降序,如果⽉薪相同,按照编号降序排序
SELECT
*
FROM
anatomyemp
ORDER BY
sal DESC ,empno DESC;
聚合函数
聚合函数式⽤来做纵(列)向运算的函数
Count():计算指定列不为null的记录⾏数。
Max():计算指定列的最⼤值,如果指定列是字符串类型,那么使⽤字符串排序运算。Min():计算指定列的最⼩值,如果指定列是字符串类型,那么使⽤字符串排序运算。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论