免费图纸网站,阿里云服务器报价,珠海中国建设银行招聘信息网站,百度搜索一下百度目录 合计/统计函数
count 返回行的总数
sum
合计函数 - avg
group by
字符串相关函数
数学相关函数
时间日期相关函数
加密函数
流程控制函数 合计/统计函数
count 返回行的总数
Select count(*) | count (列名) from tablename [WHERE where_definition]
#演…目录 合计/统计函数
count 返回行的总数
sum
合计函数 - avg
group by
字符串相关函数
数学相关函数
时间日期相关函数
加密函数
流程控制函数 合计/统计函数
count 返回行的总数
Select count(*) | count (列名) from tablename [WHERE where_definition]
#演示MySQL的统计函数的使用
#统计一个班级共有多少学生
SELECT COUNT(*) FROM student;
#统计数学成绩大于90的学生有多少个
SELECT COUNT(*) FROM studentWHERE math 90;
#统计总分大于250的人数有多少?
SELECT COUNT(*) FROM studentWHERE (mathchineseenglish) 250;
#count(*)和count(列)的区别
#解释:count(*)返回满足条件的记录的行数
#count(列): 统计满足条件的某列有多少个,但是会排除为NULL的情况
#count(*)和count(列) 唯一区别就是一个统计NULL ,一个会排除NULL
CREATE TABLE t15(name VARCHAR(20));
INSERT INTO t15 VALUES(tom);
INSERT INTO t15 VALUES(jack);
INSERT INTO t15 VALUES(frank);
INSERT INTO t15 VALUES(NULL);
SELECT * FROM t15;
SELECT COUNT(*) FROM t15; -- 4
SELECT COUNT(name) FROM t15; -- 3
sum
sum函数返回满足where条件的行的和,一般使用在数值列中
select sum(列名){, sum(列名) ... } from tablename [WHERE where_definition]
#sum函数的使用
#统计班级数学总成绩
SELECT SUM(math) FROM student;
#统计一个班各科的总成绩
SELECT SUM(math) AS math_total_score,SUM(english),SUM(chinese) FROM student;
#统计一个班的所有的总和
SELECT SUM(mathchineseenglish) FROM student;
#统计一个班级语文成绩平均分
SELECT SUM(chinese)/COUNT(*) FROM student;合计函数 - avg
#演示avg的使用
#求一个班数学的平均分
SELECT AVG(math) FROM student;
#求一个班级总分的平均分
SELECT AVG(math englishchinese) FROM student
合计函数 - MAX/MIN
MAX/MIN函数返回满足where条件的一列中最大值/最小值
SELECT MAX(列名) from tablename [WHERE where_definition]
#求一个班级的最高分和最低分
SELECT MAX(mathenglishchinese),MIN(mathenglishchinese) FROM student;
group by 使用grouby by字句对列进行分组(先创建测试表) SELECT 列1,列2,列3 ... FROM table group by 列 使用hanving 字句对分组后的结果进行过滤 SELECT 列1,列2,列3 ... FROM table group by 列 having ... group by 用于对查询的结果分组统计 having 子句用于统计分组显示结果
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,7968,1991-2-22,1250.00,500.00,30),(7566,JONES,MANAGER,7839,1991-4-2,2975.00,NULL,20),(7654,MARTIN,SALESMAN,7968,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,1991-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,1991-1-23,1300.00,NULL,10);
SELECT * FROM emp;
# 按照部门来查询最高工资和平均工资
SELECT AVG(sal) , MAX(sal) ,deptno FROM emp GROUP BY deptno#显示每个部门的每种岗位的平均工资和最低工资
#1.每个部门的平均工资和最低工资
SELECT AVG(sal) , MIN(sal) ,deptno FROM emp GROUP BY deptno
#2.显示每个部门的每种岗位的平均工资和最低工资
SELECT AVG(sal) , MIN(sal) ,deptno,job FROM emp GROUP BY deptno,job#显示平均工资低于2000的部门号和它的平均工资
#1.显示各个部门的平均工资和部门号
SELECT AVG(sal) ,deptno FROM emp GROUP BY deptno
#2.低于2000
SELECT AVG(sal) ,deptno FROM emp GROUP BY deptno HAVING AVG(sal)2000
#3.别名进行过滤
SELECT AVG(sal) AS avg_sal ,deptno FROM emp GROUP BY deptno HAVING avg_sal2000;字符串相关函数 #演示字符串相关函数的使用
#CHARSET(str) 返回字符串字符集
SELECT CHARSET(ename) FROM emp;
#CONCAT(string2 [,...]) 连接字串 ,将多个列拼接在一列
SELECT CONCAT(ename , 工作是 ,job) FROM emp;
#INSERT(string,substring) 返回substring 在 string 中出现的位置,没有返回0
-- dual 亚元表 ,系统表 ,作为测试表使用
SELECT INSTR(lihaoqianping,ping) FROM DUAL;
#UCASE (string2) 转成大写的
SELECT UCASE(ename) FROM emp;
#LCASE (string2) 转成小写的
SELECT LCASE(ename) FROM emp;
-- LEFT(string2,length) 从string2 中左边起取length个字符
SELECT LEFT(ename,2) FROM emp;
-- RIGHT(string2,length) 从string2 中右边起取length个字
SELECT RIGHT(ename,2) FROM emp;
-- LENGTH (string) string 长度[按照字节]
SELECT LENGTH(李浩谦) FROM DUAL;SELECT * FROM emp;
SELECT ename,REPLACE(job ,MANAGER , 经理) FROM emp;-- 逐个字段比较两个字串大小 前面的大于后面的返回1 , 前面的小于后面的返回-1
SELECT STRCMP(hsp,jsp) FROM emp;-- SUBSTRING(str ,position [,length])
-- 从str的position开始[从1开始计算],取length个字符
-- 从ename 列的第一个位置开始取出2个字符
SELECT SUBSTRING(ename,1,2) FROM emp;-- LTRIM(string2) RTRIM(string2) TRIM(string)
-- 去除前端空格或后端空格
SELECT LTRIM ( 李浩谦真厉害) FROM DUAL;
SELECT RTRIM(李浩谦真厉害 ) FROM DUAL;
SELECT TRIM( 李浩谦真厉害 ) FROM DUAL;#练习: 以首字母小写的方式显示所有员工emp表的姓名
SELECT CONCAT(LCASE(LEFT(ename,1)) , RIGHT(ename,LENGTH(ename)-1)) FROM emp
数学相关函数 #取绝对值
SELECT ABS(-10) FROM DUAL;
# BIN(decimal_number) 十进制转二进制
SELECT BIN(10) FROM DUAL;
# ceiling(number2) 向上取整 , 得到比num2大的最小整数
SELECT CEILING(-1,1) FROM DUAL;
-- CONV(number2,from_base , to_base) 进制转换
-- 下面的含义是8 是十进制的8 , 转成2进制输出
SELECT CONV(8,10,2) FROM DUAL;
-- FLOOR(number2) 向下取整,得到比num2 小的最大整数
SELECT FLOOR(-1.1) FROM DUAL
-- FORMAT(number,decimal_places) 保留小数位数(四舍五入)
SELECT FORMAT(78.2345678,2) FROM DUAL;-- HEX(DecimalNumber) 转16进制-- LEAST(number , number2 [,..]) 求最小值
SELECT LEAST(0,-2,1,1000);
-- MOD(numerator,denominator) 求余
SELECT MOD(10,3) FROM DUAL;
-- RAND([seed]) RAND([seed]) 返回随机数,其范围为0v1.0
#1.如果使用rand(),每次返回不同的随机数,在0v1.0
#2.如果rand()里面添加上了一个seed这是随机数种子,加上之后,返回的随机数的不变了的
SELECT RAND() FROM DUAL;
SELECT RAND(3) FROM DUAL;
时间日期相关函数 -- 日期时间相关函数
-- current_Date 当前日期
SELECT CURRENT_DATE() FROM DUAL;
-- CURRENT_TIME 当前时间
SELECT CURRENT_TIME() FROM DUAL;
-- 当前时间戳 CURRENT_TIMESTAMP
SELECT CURRENT_TIMESTAMP() FROM DUAL;-- 创建测试表
CREATE TABLE mes(id INT, content VARCHAR(30),send_time DATETIME);
SELECT * FROM mes;
INSERT INTO mes VALUES(1,北京新闻,CURRENT_TIMESTAMP());
#NOW() 返回当前的日期时间
INSERT INTO mes VALUES(2,上海新闻,NOW());
INSERT INTO mes VALUES(3,广州新闻,NOW());
SELECT * FROM mes;-- 案例
-- 显示所有留言信息 , 发布日期只显示日期,不用显示时间
SELECT id,content, DATE(send_time) FROM mes;
-- 查询在10分钟内发布的新闻
SELECT * FROM mesWHERE DATE_ADD(send_time,INTERVAL 10 MINUTE) NOW()
#minute可以是year,second啥的
# 请在mysql 的sql 语句中求出2011-11-11 和1990-1-1 相差多少天
SELECT DATEDIFF(2023-11-12,2004-04-03) FROM DUAL;
#YEAR,MONTH,DAY
SELECT YEAR(NOW()) FROM DUAL;
SELECT MONTH(NOW()) FROM DUAL;
SELECT DAY(NOW()) FROM DUAL;
加密函数
-- 演示加密函数和系统函数-- user() 查询用户
-- 可以查看登录到mysql的有哪些用户,以及登录的IP
SELECT USER() FROM DUAL; -- 用户的ip地址
-- DATEBASE() 查询当前使用数据库名称
SELECT DATABASE()
-- MD5(str) 为字符串算出一个MD5 32位的字符串,常用(用户密码) 加密
-- root 密码是hsp -加密md5 -在数据库里存放的是加密后的密码
SELECT MD5(hsp) FROM DUAL-- password(str) -- 加密函数,MySQL 数据库的用户密码就是PASSWORD密码加密的
SELECT PASSWORD(hsp) FROM DUAL;-- select * from mysql.user \G 从原文密码str 计算并返回密码字符串
-- 通常用于对mysql数据库的密码加密
-- mysql.user 表示数据库.表
流程控制函数 -- 演示流程控制语句
#IF(expr1,expr2,expr3) 如果expr1为true,则返回expr2,为false返回expr3
SELECT IF(TRUE,北京,上海) FROM DUAL;
#IFNULL(expr1,expr2) 如果expr1 不为空NULL,则返回expr1,否则返回expr2
SELECT IFNULL(NULL,李浩谦牛逼) FROM DUAL;
#多重分支
SELECT CASE WHEN TRUE THEN jackWHEN FALSE THEN tomELSE mary END