Mysql常见函数和用法(重点)

目录

where子句中经常使用的运算符

order by 子句排序查询结果 

合计 (count)

 统计函数(sum)

求平均值函数(avg) 

最大值(max)和最小值(min)

groupby子句对列进行分组

 字符串相关函数​编辑

数学相关函数 

时间日期相关函数 

加密和系统函数 

流程控制函数 

 自连接

合并查询

mysql 表外连接 


where子句中经常使用的运算符

-- 查询总分大于200分的所有同学

select * from student2 where (chinese+english+math)>200;

 -- 查询math大于60 并且(and)id大于4的学生成绩

select * from student2 where math>60 and id>4;

-- 查询英语成绩大于语文成绩的同学

select * from student2 where english > chinese;

--查询总分大于200分 并且 数学成绩小于语文成绩,的姓赵的学生.

-- 赵% 表示 名字以韩开头的就可以 

 select * from student2 where (chinese+english+math)>200 and math<chinese and name like '赵%';  

查询英语分数在 80-90之间的同学。

-- between .. and .. 是 闭区间

select * from student2 where english between 80 and 90 ; 

-- 查询数学分数为89,90,91的同学。

select * from student2 where math in (89,90,91); 

order by 子句排序查询结果 

 对数学成绩排序后输出(升序)

select * from student2 order by math;

对总分按从高到低的顺序输出 [降序]-- 使用别名排序

select `name`,(math+chinese+english) as total from student2 order by total  DESC;

合计 (count)

-- 统计数学成绩大于90的学生有多少个?


SELECT COUNT(*)  FROM student2  WHERE math>90


-- 统计总分大于250的人数有多少?


SELECT COUNT(*)  FROM student2 WHERE (math + english + chinese) > 250

-- count(*) 和 count(列) 的区别

-- 解释 :count(*) 返回满足条件的记录的行数

-- count(列): 统计满足条件的某列有多少个,但是会排除 为null的情况

 统计函数(sum)

-- 统计一个班级数学总成绩?

SELECT SUM(math)  FROM  student2;

-- 统计一个班级语文、英语、数学各科的总成绩

SELECT SUM(math) AS  math_total_score,SUM(english),SUM(chinese) FROM student2;

--统计一个班级语文、英语、数学的成绩总和

SELECT SUM(math+english+chinese) FROMs tudent2;

--统计一个班级语文成绩平均分

SELECT SUM(chinese)/COUNT(*) FROM student2; 

求平均值函数(avg) 

--求一个班级数学平均分?

SELECT AVG(math) FROM student2;

--求一个班级总分平均分

SELECT AVG(math+english+chinese) FROM student2;

最大值(max)和最小值(min)

--求班级最高分和最低分(数值范围在统计中特别有用)

SELECT MAX(math+english+chinese),MIN(math+english+chinese) FROM student2;

--求出班级数学最高分和最低分

SELECT MAX(math) AS math_high_socre,MIN(math) AS math_low_socre FROM student2; 

groupby子句对列进行分组

创建部门表

 /*部门表*/
 CREATE TABLE dept(
 deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
 dname VARCHAR(20) NOT NULL DEFAULT "",
 loc VARCHAR(13) NOT NULL DEFAULT "");

导入数据

INSERT INTO dept VALUES ( 10, 'ACCOUNTING', 'NEWYORK' ),( 20, 'RESEARCH', 'DALLAS' ),( 30, 'SALES', 'CHICAGO' ),
( 40, 'OPERATIONS', 'BOSTON' ); 

创建员工表

CREATE TABLE emp (

/*编号*/
    empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
/*名字*/
    ename VARCHAR ( 20 ) NOT NULL DEFAULT "",
/*工作*/
    job VARCHAR ( 9 ) NOT NULL DEFAULT "",
/*上级编号*/
    mgr MEDIUMINT UNSIGNED,
/*入职时间*/
    hiredate DATE NOT NULL,
/*薪水*/
    sal DECIMAL ( 7, 2 ) NOT NULL,
/*红利 奖金*/
    comm DECIMAL ( 7, 2 ),

/*部门编号*/
deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0
); 

导入数据

INSERT INTO emp
VALUES
    ( 7369, 'SMITH', 'CLERK', 7902, '1990-12-17', 800.00, NULL, 20 ),
    ( 7499, 'ALLEN', 'SALESMAN', 7698, '1991-2-20', 1600.00, 300.00, 30 ),
    ( 7521, 'WARD', 'SALESMAN', 7698, '1991-2-22', 1250.00, 500.00, 30 ),
    ( 7566, 'JONES', 'MANAGER', 7839, '1991-4-2', 2975.00, NULL, 20 ),
    ( 7654, 'MARTIN', 'SALESMAN', 7698, '1991-9-28', 1250.00, 1400.00, 30 ),
    ( 7698, 'BLAKE', 'MANAGER', 7839, '1991-5-1', 2850.00, NULL, 30 ),
    ( 7782, 'CLARK', 'MANAGER', 7839, '1991-6-9', 2450.00, NULL, 10 ),
    ( 7788, 'SCOTT', 'ANALYST', 7566, '1997-4-19', 3000.00, NULL, 20 ),
    ( 7839, 'KING', 'PRESIDENT', NULL, '1991-11-17', 5000.00, NULL, 10 ),
    ( 7844, 'TURNER', 'SALESMAN', 7698, '1991-9-8', 1500.00, NULL, 30 ),
    ( 7900, 'JAMES', 'CLERK', 7698, '1991-12-3', 950.00, NULL, 30 ),
    ( 7902, 'FORD', 'ANALYST', 7566, '1991-12-3', 3000.00, NULL, 20 ),
    ( 7934, 'MILLER', 'CLERK', 7782, '1992-1-23', 1300.00, NULL, 10 );

#工资级别表

CREATE TABLE salgrade (

/*工资级别*/
    grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
/* 该级别的最低工资 */
    losal DECIMAL ( 17, 2 ) NOT NULL,
/* 该级别的最高工资*/
    hisal DECIMAL ( 17, 2 ) NOT NULL
)

  INSERT INTO salgrade VALUES (1,700,1200);
 INSERT INTO salgrade VALUES (2,1201,1400);
 INSERT INTO salgrade VALUES (3,1401,2000);
 INSERT INTO salgrade VALUES (4,2001,3000);
 INSERT INTO salgrade VALUES (5,3001,9999);

如何显示每个部门的平均工资和最高工

-- having 子句用于限制分组显示结果.

-- 分析:avg(sal) max(sal)

-- 按照部分来分组查询

SELECT AVG(sal), MAX(sal) , deptno FROM emp GROU PBY deptno;

-- 使用数学方法,对小数点进行处理 

 SELECT FORMAT(AVG(sal),2), MAX(sal) , deptno FROM emp GROUP BY deptno;  

显示每个部门的每种岗位的平均工资和最低工资

SELECT AVG(sal), deptno FROM emp GROUP BY deptno HAVINGAVG(sal) < 2000; 

 字符串相关函数

-- CHARSET(str) 返回字串字符集

SELECT CHARSET(ename)  FROM emp;

-- CONCAT(string2 [,... ]) 连接字串, 将多个列拼接成一列

SELECT CONCAT(ename, ' 工作是 ', job) FROM emp; 

 ......

数学相关函数 

时间日期相关函数 

 

加密和系统函数 

流程控制函数 

 自连接

合并查询

mysql 表外连接 

 

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smilehjl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值