MySQL系列专题(2)-MySQL的SQL语句和高级特性

本文详细介绍了MySQL的SQL查询语句,包括区间判断、NULL值处理、枚举查询、模糊查询、分支结构查询,以及时间、字符串、聚合函数、分组、分组过滤、限定查询、子查询、表连接等操作。此外,还涉及数据库高级内容如存储过程和函数,提供了一系列示例和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#查询员工的薪资在6000~10000之间的员工信息(编号,名字,薪资)

SELECT employee_id , first_name , salary

FROM t_employees

WHERE salary >= 6000 AND salary <= 10000;

2.4.4 区间判断(between and)

#查询员工的薪资在6000~10000之间的员工信息(编号,名字,薪资)

SELECT employee_id , first_name , salary

FROM t_employees

WHERE salary BETWEEN 6000 AND 10000; #闭区间,包含区间边界的两个值

2.4.5 NULL 值判断(IS NULL、IS NOT NULL)
  • IS NULL
列名 IS NULL
  • IS NOT NULL
列名 IS NOT NULL

#查询没有提成的员工信息(编号,名字,薪资 , 提成)

SELECT employee_id , first_name , salary , commission_pct

FROM t_employees

WHERE commission_pct IS NULL;

2.4.6 枚举查询( IN (值 1,值 2,值 3 ) )

#查询部门编号为70、80、90的员工信息(编号,名字,薪资 , 部门编号)

SELECT employee_id , first_name , salary , department_id

FROM t_employees

WHERE department_id IN(70,80,90);

注:in的查询效率较低,可通过多条件拼接。

2.4.7 模糊查询
  • LIKE _ (单个任意字符)
列名 LIKE ‘张\_’
  • LIKE %(任意长度的任意字符)
列名 LIKE ‘张%’

#查询名字以"L"开头的员工信息(编号,名字,薪资 , 部门编号)

SELECT employee_id , first_name , salary , department_id

FROM t_employees

WHERE first_name LIKE ‘L%’;

#查询名字以"L"开头并且长度为4的员工信息(编号,名字,薪资 , 部门编号)

SELECT employee_id , first_name , salary , department_id

FROM t_employees

WHERE first_name LIKE ‘L___’;

2.4.8 分支结构查询

CASE

WHEN 条件1 THEN 结果1

WHEN 条件2 THEN 结果2

WHEN 条件3 THEN 结果3

ELSE 结果

END

#查询员工信息(编号,名字,薪资 , 薪资级别<对应条件表达式生成>)

SELECT employee_id , first_name , salary , department_id ,

CASE

WHEN salary>=10000 THEN ‘A’

WHEN salary>=8000 AND salary<10000 THEN ‘B’

WHEN salary>=6000 AND salary<8000 THEN ‘C’

WHEN salary>=4000 AND salary<6000 THEN ‘D’

ELSE ‘E’

END as “LEVEL”

FROM t_employees;

2.5 时间查询

语法:SELECT 时间函数([参数列表])

| 时间函数 | 描述 |

| — | — |

| SYSDATE() | 当前系统时间(日、月、年、时、分、秒) |

| CURDATE() | 获取当前日期 |

| CURTIME() | 获取当前时间 |

| WEEK(DATE) | 获取指定日期为一年中的第几周 |

| YEAR(DATE) | 获取指定日期的年份 |

| HOUR(TIME) | 获取指定时间的小时值 |

| MINUTE(TIME) | 获取时间的分钟值 |

| DATEDIFF(DATE1,DATE2) | 获取DATE1 和 DATE2 之间相隔的天数 |

| ADDDATE(DATE,N) | 计算DATE 加上 N 天后的日期 |

2.5.1 获得当前系统时间

#查询当前时间

SELECT SYSDATE();

#查询当前时间

SELECT NOW();

#获取当前日期

SELECT CURDATE();

#获取当前时间

SELECT CURTIME();

2.6 字符串查询

语法: SELECT 字符串函数 ([参数列表])

| 字符串函数 | 说明 |

| — | — |

| CONCAT(str1,str2,str…) | 将 多个字符串连接 |

| INSERT(str,pos,len,newStr) | 将str 中指定 pos 位置开始 len 长度的内容替换为 newStr |

| LOWER(str) | 将指定字符串转换为小写 |

| UPPER(str) | 将指定字符串转换为大写 |

| SUBSTRING(str,num,len) | 将str 字符串指定num位置开始截取 len 个内容 |

2.6.1 字符串应用

#拼接内容

SELECT CONCAT(‘My’,‘S’,‘QL’);

#字符串替换

SELECT INSERT(‘这是一个数据库’,3,2,‘MySql’);#结果为这是 MySql 数据库

#指定内容转换为小写

SELECT LOWER(‘MYSQL’);#mysql

#指定内容转换为大写

SELECT UPPER(‘mysql’);#MYSQL

#指定内容截取

SELECT SUBSTRING(‘JavaMySQLOracle’,5,5);#MySQL

2.7 聚合函数

语法:SELECT 聚合函数(列名) FROM 表名;

| 聚合函数 | 说明 |

| — | — |

| SUM() | 求所有行中单列结果的总和 |

| AVG() | 平均值 |

| MAX() | 最大值 |

| MIN() | 最小值 |

| COUNT() | 求总行数 |

2.7.1 单列总和

#统计所有员工每月的工资总和

SELECT sum(salary)

FROM t_employees;

2.7.2 单列平均值

#统计所有员工每月的平均工资

SELECT AVG(salary)

FROM t_employees;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值