MySQL查询与函数

一、子查询
/*
概念:
嵌套在另一个查询中的查询语句称为子查询,外部的查询称为主查询,类似于java中的内部类
语法
select 字段1,字段2
from 表1
where Id in(
select 字段1 from 表2
)
特点或者说注意事项:
1、子查询放在小括号内
2、放在条件右侧
3、子查询优先于主查询执行

分类:
单行子查询:子查询的结果只有一个值,使用单行操作符(> < >= <= = <>)
多行子查询:使用多行操作符(any、all、in、not in)

二、多行子查询
#案例1:返回location_id是1400或1700的部门中的所有员工姓名

#①查询location_id是1400或1700的部门编号
SELECT department_id FROM departments
WHERE location_id IN(1400,1700)

#②查询department_id满足①结果的员工姓名
SELECT last_name FROM employees
WHERE department_id IN(
	SELECT department_id FROM departments
	WHERE location_id IN(1400,1700)
)

#案例2:返回其它部门中比job_id为‘IT_PROG’部门任意工资低的员工的员

工号、姓名、job_id 以及salary

#①查询job_id为‘IT_PROG’部门工资
SELECT salary
FROM employees
WHERE job_id = 'IT_PROG'


#②返回其它部门中,工资<any ①的结果
SELECT  last_name,employee_id,job_id,salary
FROM employees 
WHERE salary<(
	SELECT MAX(salary)
	FROM employees
	WHERE job_id = 'IT_PROG'
)AND job_id<>'IT_PROG';

三、
1)字符函数
分页查询
#语法
#SELECT 查询的东西
#FROM 表
#【WHERE 条件】
#【GROUP BY 字段】
#【HAVING 条件】
#【ORDER BY 排序的字段】
LIMIT 条目起始索引【,条目数】

#特点
#1.写法
#写法一:
#LIMIT 条目数
#意思:从第一条开始,显示指定条目数的数据
#写法二:
#LIMIT 起始条目索引,条目数
#意思:从指定的起始索引的条目开始,显示指定条目数的数据

#2.起始索引从0开始

2)、数学函数

#向上取整,返回>=该参数的最小整数
SELECT CEIL(-1.0);

#向下取整,返回<=该参数的最大整数
SELECT FLOOR(-1.0);

#四舍五入,先按绝对值四舍五入,然后加正负号
SELECT ROUND(-1.56);
SELECT ROUND(1.537,1);

#随机数,返回0-1之间的小数,不包含1
SELECT RAND();

#返回50-100 a——b floor(rand()*(b-a+1)+a)
SELECT CEIL(RAND()*50+50);
SELECT FLOOR(RAND()*51+50);

#截断
SELECT TRUNCATE(1.99,1);

3)、日期函数

#三、日期函数
#获取当前日期
SELECT NOW();

#获取日期,没有时间
SELECT CURDATE();

#获取时间,没有日期
SELECT CURTIME();

#获取日期的指定部分
SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT MONTHNAME(NOW());
SELECT DAY(NOW());

SELECT CONCAT(YEAR(NOW()),‘年’,MONTH(NOW()),‘月’,DAY(NOW()),‘日’) 日期;

#判断两个日期的差别天数,前者比后者大,返回正数,小返回负数,相等返回0.
SELECT DATEDIFF(NOW(),‘2022-8-8’);
SELECT DATEDIFF(‘2017-9-25’,NOW());

4)、流程控制函数

#1.if函数
SELECT IF(100>9,‘不错呦’,‘不够大’) 备注;

#2.case语句

#语法:
#CASE
#WHEN 条件1 THEN 显示的值1
#WHEN 条件2 THEN 显示的值2
#…
#ELSE 显示的值n
#END

#类似于:

#IF(条件1){
语句1;
#}ELSE IF(条件2){
#}ELSE{

#}
#3.case语句
#语法:

#CASE 字段或表达式
#WHEN 值1 THEN 显示的值1
#WHEN 值2 THEN 显示的值2
#…
#ELSE 显示的值n
#END

#类似于:
#switch(变量或表达式){

#CASE 值1 :语句1;break;

DEFAULT:语句n;break;

#}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值