一、子查询
/*
概念:
嵌套在另一个查询中的查询语句称为子查询,外部的查询称为主查询,类似于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 departmentsWHERE location_id IN(1400,1700)#②查询department_id满足①结果的员工姓名SELECT last_name FROM employeesWHERE department_id IN(SELECT department_id FROM departmentsWHERE location_id IN(1400,1700))
#案例2:返回其它部门中比job_id为‘IT_PROG’部门任意工资低的员工的员
工号、姓名、job_id 以及salary
#①查询job_id为‘IT_PROG’部门工资SELECT salaryFROM employeesWHERE job_id = \'IT_PROG\'#②返回其它部门中,工资<any ①的结果SELECT last_name,employee_id,job_id,salaryFROM employeesWHERE salary<(SELECT MAX(salary)FROM employeesWHERE 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;
#}